Hogyan néz ki az a C program, ahol kérünk egy akármilyen nagyságú sorozatot és ezeknek az összegét adjuk vissza?
A számsorozat végét 0-val kell jelölni, de nem része a sorozatnak, aminek az összegét kell visszaadni.
Nekem eddig így néz ki, de a tomb[]-nél kér nagyságot, amit előre nem tudok. Ezzel lenne a problémám:
#include <stdio.h>
int sorossz(int tomb[]){
int i;
int a;
for (i=0; tomb[i]==0; i++)
a=tomb[i]+tomb[i+1];
return a;
}
int main(){
int tomb[];
int i;
for(i=0; tomb[i]==0; i++)
scanf("%d", &tomb[i]);
printf("%d", &sorossz(tomb[]));
return 0;
}
Ennek eddig nem sok köze van a feladathoz.
Számokat kéne összegezni.
Mi okozza a gondot?
Nem tudom mit rontok el, megcsináltam tömbök nélkül, de valamiért 10 számjegyet ír ki:
#include<stdio.h>
int main() {
int i, a;
int x=0;
for(i=0; a==0; i++){
scanf("%d", &a);
x+=a;
}
printf("%d", &x);
return 0;
}
Talán, ha x-nek nem a memóriacímét irnád ki, hanem az értékét.
Valamint a ciklus feltételed is rossz.
És a változóneveid is borzalmasak.
1. Nem a==0, hanem a!=0. Nem kilépési feltételt adsz, hanem folytatási feltételt.
2. Az 'a' változót úgy ellenőrzöd a legelső ciklusban, hogy még semmilyen értéket nem adtál neki. Rendszerint 0-ra lesz inicializálva, és rögtön ki is lép. Vagy adj neki egy nemnulla kezdőértéket, vagy for ciklus helyett do{..}while ciklust csinálj.
3. A printf-ben nem memóriacímet kell megadni, hanem értéket, &x helyett simán x.
#include<stdio.h>
int main() {
int a=1;
int x=0;
do{
scanf("%d", a);
x+=a;
} while (a!=0);
printf("%d", x);
return 0;
}
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!