Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Suma kwadratów kolejnych liczb C

Ostatnio zmodyfikowano 2017-11-10 18:32
Autor Wiadomość
mokrowski
» 2017-11-10 08:54:55
1. Zmienna y może być ujemna? Jeśli nie to z jakiego powodu jest typu int a nie unsigned?
2. Co się stanie w programie jeśli wprowadzę nieprawidłowe dane? (na pytanie o liczbę podam bardzo długi tekst)?
3. Brak sprawdzenia czy wartość y jest powyżej zera.
4. Zamiast złożonego i nieco egzotycznego warunku, już lepiej było by użyć do {...} while(..);
5. Dobrą praktyką jest nie inicjowanie zmiennych w 1 linii.
6. Po co angażować pow z <math.h>? Wynik kwadratu liczb jest przecież w domenie tych liczb (tu int). Wystarczy mnożenie.
P-166654
michal11
» 2017-11-10 10:29:28
@up

unsigned nie powinno być używane do tworzenia logiki liczb nieujemnych
P-166655
mokrowski
» 2017-11-10 14:44:59
@up
Żródło informacji poproszę.

Tym bardziej że typ wprowadzanych danych (ilość) jasno definiuje zastosowanie zmiennej. W przebiegu programu (czyli logice) także nie ma dodawania/odejmowania signed do unsigned.
W tym przykładzie stosując wykładnię o której powiedziałeś:
1. Utrudniam kontrolę wprowadzonych danych - dopuszczam wprowadzenie ujemnej ilości.
2. Ułatwiam (bo kompilator nie będzie ostrzegał) operacje arytmetyczne (których nie chcę).
P-166669
michal11
» 2017-11-10 15:55:01
https://www.reddit.com/r/cpp​/comments/75041i​/is_there_any_information_out_t​here_about_std2​/

w szczególności ten komentarz: https://www.reddit.com/r/cpp​/comments/75041i​/is_there_any_information_out_t​here_about_std2​/do3dstx/


Utrudniam kontrolę wprowadzonych danych - dopuszczam wprowadzenie ujemnej ilości.
nie czytałem w zasadzie tego wątku ale jak rozumiem mówisz o wprowadzaniu danych od użytkownika ew. z jakiegoś innego źródła, nie zagwarantujesz, że to zewnętrzne źródło nigdy nie wprowadzi liczby ujemnej a dodatkowo definiując taką liczbę jako unsigned nie jesteś nawet w stanie wyłapać takiej sytuacji.
P-166673
Bercik97
Temat założony przez niniejszego użytkownika
» 2017-11-10 16:04:19
Napisałem ten kod bo tak miałem w zadaniu, wiem że nie trzeba robić tego z math.h funkcja pow i nie koniecznie pętlą while, ps. dalej jest 3052 a nie 3055 ale już pomińmy to :P
P-166674
nanoant20
» 2017-11-10 16:36:35
@Bercik97 poprawiłem Ci kod, i printf wyprówam po kolei w petli wyniki dla sprawdzenia.
Dla pewności weź z menu Code::Blocs'a Build / Rebuild w celu przebudowania projektu.
P-166675
Bercik97
Temat założony przez niniejszego użytkownika
» 2017-11-10 17:44:47
Zrobiłem tak i mówię że nie działa xd jak widać dobrze mnoży ale źle sumuje te liczby na koniec
https://imgur.com/a/3HIJz
P-166678
nanoant20
» 2017-11-10 17:59:38
dodaj printf do sprawdzenia
C/C++
while( y-- >= 0 ) {
    suma += pow( x, 2 );
    printf( "%d * %d = %2.f \n", x, x, pow( x, 2 ) );
    printf( "po kazdej petelce wynik czastkowy = %d\n", suma );
    ++x;
}
P.s. jezeli dalej masz wynik niepoprawny to wklej mi cały twój kod
P-166679
1 2 « 3 » 4
Poprzednia strona Strona 3 z 4 Następna strona