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

sumowanie wyników pętli for

Ostatnio zmodyfikowano 2013-11-03 23:40
Autor Wiadomość
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ć:
C/C++
#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;
}
P-95213
RazzorFlame
» 2013-11-03 21:33:15
return i;
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.
P-95214
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 ?
P-95217
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

C/C++
long int suma( int n, int r )
{
    int wynik;
    int an = 1; // a(1)=1;
   
    wynik = an;
   
    if( n > 1 )
    for( int i = 2; i <= n; i++ )
    {
        an = an + r;
        wynik = wynik + an;
    }
    return wynik;
}
.
P-95223
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 ? .
P-95228
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.
P-95230
docentpp
» 2013-11-03 23:10:15
Używam Dev 4.9 ; u mnie chodzi bezproblemowo ,
może zamiast

C/C++
if( n > 1 )
for( int i = 2; i <= n; i++ )

 
należy napisać

 
C/C++
int i;
if( n > 1 )
for( i = 2; i <= n; i++ )
P-95232
bartal0meo
Temat założony przez niniejszego użytkownika
» 2013-11-03 23:19:26
C/C++
#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
P-95233
« 1 » 2
  Strona 1 z 2 Następna strona