bartal0meo Temat założony przez niniejszego użytkownika |
sumowanie wyników pętli for » 2013-11-03 21:23:47 Cześć , mam problem z jednym zadaniem nad którym kombinuje już od dłuższego czasu ale nie działa nadal . Oto treść : ,,Napisz funkcję long int sumaAr(int n, int r), która wyznaczy sumę n elementów ciągu arytmetycznego o wyrazie początkowym równym 1 i zadanej różnicy r. Nie korzystaj z gotowego wzoru, tylko sumuj kolejne elementy ciągu." Napisałem część tego programu ale mam też klika wątpliwość , nie jestem pewien czy mogę użyć w pętli ,,i+r" , oraz nie mogę dojść do tego jak potem zsumować wyniki ciągu z pętli for . a to co udało mi się napisać: #include <stdio.h> #include <stdlib.h> long int sumaAr( int n, int r ) { int wynik; int i; for( i = 1 + r; i <= n; i + r ) return i; } int main( int argc, char * argv[] ) { int x; int y; int suma; printf( "podaj ilosc wyrazow ciagu \n" ); scanf( "%d", & x ); printf( "podaj roznice \n" ); scanf( "%d", & y ); suma = sumaAr( x, y ); printf( "%d", suma ); system( "PAUSE" ); return 0; } |
|
RazzorFlame |
» 2013-11-03 21:33:15 Return zwraca wartość wychodząc z danej funkcji co znaczy że pętla wykona się tylko raz i już nie mówiąc o tym że operacja która ma wykonać się z każdym obiegiem pętli nie zostanie wykonana. Po prostu wstaw średnik za petle for. |
|
bartal0meo Temat założony przez niniejszego użytkownika |
» 2013-11-03 21:53:37 Wstawiłem , tym razem funkcja nie wyświetla wyniku i jeśli mógłbyś od razu poradzić , to jak następnie zsumować wynik pętli ?
|
|
docentpp |
» 2013-11-03 22:22:02 Zły algorytm wyznaczania sumy wyrazów ciągu arytmetycznego, niezależnie od opuszczonego średnika. Łatwo sprawdzić,czy wymyślony sposób obliczeń jest dobry,podstawiając do gotowego wzoru suma=(2a1+(n-1)*r)*n/2. Tak na szybko wymyśliłem coś takiego long int suma( int n, int r ) { int wynik; int an = 1; wynik = an; if( n > 1 ) for( int i = 2; i <= n; i++ ) { an = an + r; wynik = wynik + an; } return wynik; }
. |
|
bartal0meo Temat założony przez niniejszego użytkownika |
» 2013-11-03 22:51:48 zmieniłem funkcję na taką którą podałeś ale nadal mam błąd ,,8 C:\Users\admin\Desktop\main.c 'for' loop initial declaration used outside C99 mode " , coś w funkcji chyba nie tak ? . |
|
den93 |
» 2013-11-03 23:06:25 W pętli for masz int i = 2 Zamiast tego zdefiniuj ją gdzieś poza pętlą a tutaj wstaw poprostu i = 2 Może to pomoże. |
|
docentpp |
» 2013-11-03 23:10:15 Używam Dev 4.9 ; u mnie chodzi bezproblemowo , może zamiast if( n > 1 ) for( int i = 2; i <= n; i++ )
należy napisać int i; if( n > 1 ) for( i = 2; i <= n; i++ )
|
|
bartal0meo Temat założony przez niniejszego użytkownika |
» 2013-11-03 23:19:26 #include <stdio.h> #include <stdlib.h> long int sumaAr( int n, int r ) { int wynik; int an = 1; int i; wynik = an; if( n > 1 ) { for( i = 2; i <= n; i++ ) an = an + r; wynik = wynik + an; } return wynik; } int main( int argc, char * argv[] ) { int x; int y; int suma; printf( "podaj ilosc wyrazow ciagu \n" ); scanf( "%d", & x ); printf( "podaj roznice \n" ); scanf( "%d", & y ); suma = sumaAr( x, y ); printf( "%d", suma ); system( "PAUSE" ); return 0; }
ciągle wychodzi iloczyn podanych n i r zamiast sumy ciągu hmm , coś nie tak tu zrobiłem jeszcze chyba |
|
« 1 » 2 |