Suma kwadratów kolejnych liczb C
Ostatnio zmodyfikowano 2017-11-10 18:32
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. |
|
michal11 |
» 2017-11-10 10:29:28 @up
unsigned nie powinno być używane do tworzenia logiki liczb nieujemnych |
|
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ę). |
|
michal11 |
» 2017-11-10 15:55:01 |
|
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 |
|
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. |
|
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 |
|
nanoant20 |
» 2017-11-10 17:59:38 dodaj printf do sprawdzenia 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 |
|
1 2 « 3 » 4 |