Kezdőoldal » Számítástechnika » Programozás » C programozási feladat problém...

C programozási feladat probléma!? A többit lent!

Figyelt kérdés

Írjon programot amely feltölt -20 és 20 közötti 40 elemű tömböt.Majd kiírja a képernyőre az átlagukat!



Írjon programot amely bekér a felhasználótól 20 darab valós számot,és minden negyediket bele ír a "szamok.txt" fájlba!



2016. dec. 19. 18:17
1 2
 1/12 A kérdező kommentje:

#include<stdio.h>

#include<stdlib.h>

int main(){

int tomb[5];

int i;

int meret=sizeof(tomb)/sizeof(int);

int atlag = 0;

int a=rand()%41+20;

srand(time(NULL));

for(i=0;i<meret;i++){

atlag+=tomb[i];

tomb[i]=rand()%41+20;

printf("%d\n",tomb[i]);


}

printf("%d\n",atlag);

return 0;

}

2016. dec. 19. 18:19
 2/12 A kérdező kommentje:
Ez az átlagos probálkozásom.
2016. dec. 19. 18:19
 3/12 A kérdező kommentje:

#include<stdio.h>

#include<stdlib.h>

int main(void)

{

int tomb[40];

int r = rand()%41-20;

int i;

int meret=sizeof(tomb)/sizeof(int);

int atlag = 0;


printf("A szamaink: \n");

for(i = 0; i < meret; i++)

{

tomb[i] = rand()%41-20;

atlag+=tomb[i];

printf("%d\t",tomb[i]);

}

printf("Atlag : %d\n",atlag/meret);

return 0;

}

2016. dec. 19. 18:34
 4/12 A kérdező kommentje:
Ezt most írtam,ez elméletileg jó!Mm működik!
2016. dec. 19. 18:34
 5/12 anonim ***** válasza:

Mi a kérdés? Mi a probléma?


Mi az hogy "Mm működik." ??????

2016. dec. 19. 19:19
Hasznos számodra ez a válasz?
 6/12 anonim ***** válasza:

sizeof(tomb)/sizeof(int);


Nem gondolod hogy itt szorozni kéne?

2016. dec. 19. 19:20
Hasznos számodra ez a válasz?
 7/12 SimkoL ***** válasza:

Minek számolni amikor a feladat 40 elemű tömbről beszél. Int, float, double... picit gondolkozz el rajta.



#include<stdio.h>

#include<stdlib.h>

#include<time.h>


int main(void)

{

int meret = 40, tomb[meret], i;

double atlag = 0, ossz = 0;

srand(time(NULL));

printf("A szamaink: \n");

for(i = 0; i < meret; i++){

tomb[i] = rand()%41 - 20;

ossz += tomb[i];

printf("%4d",tomb[i]);

}

printf("Osszeg: %4.0f\n", ossz);

atlag = ossz / meret;

printf("Atlag : %4.2f\n", atlag);

system("PAUSE");

return 0;

}

2016. dec. 19. 19:26
Hasznos számodra ez a válasz?
 8/12 anonim ***** válasza:

> Nem gondolod hogy itt szorozni kéne?


Nem.

2016. dec. 19. 19:26
Hasznos számodra ez a válasz?
 9/12 anonim ***** válasza:

Jöttem kötekedni SimkoL.

C-ben még mindig nem használunk VLA-t, a tömbök méreteit csak konstans kifejezésekkel lehet megadni, pl. makróval. Így le se fordul a programod, persze ezt te is tudod mert sokszor le lett írva. Még sem értem miért ragaszkodsz makacsul a hülyeséghez és zavarod össze az ilyen dolgokkal a kezdőket? (A system("PAUSE");-t már meg sem említem..)


Compile Error

test.c: In function ‘main’:

test.c:8:1: error: ISO C90 forbids variable length array ‘tomb’ [-Wvla]

int tomb[meret], i;

^

test.c:21:1: warning: ignoring return value of ‘system’, declared with attribute warn_unused_result [-Wunused-result]

system("PAUSE");

^

sh: 1: PAUSE: not found


Helyesen úgy van ahogy a kérdező csinálta, vagy:

#define MERET 40

majd: int tomb[MERET];


Az átlag valóban double de az összeg nem. Miért is lenne egész számok összege lebegőpontos? Igen, majd kasztolni kell ott ahol arra szükség van.

2016. dec. 19. 20:00
Hasznos számodra ez a válasz?
 10/12 anonim ***** válasza:

Először is javasolnám az int helyett a char használatát, mivel ilyen kicsi számok esetén bőven elférnek annak a tartományában: [-128,127]. Persze egy ilyen feladatnál sok jelentősége nincsen, mert nem foglal sok memóriát 40 int típusú változó, de nagyobb projekteknél jól jönnek az ilyen megszokások, hogy takarékosan bánsz a memóriával.


No de nézzük a komoly problémákat...

Először is nem értem mi ez az elején: int r = rand()%41-20.

Sehol nem használod fel később az r változót, ráadásul a rand() függvénynek nem árt seed-et adni.


A meret változó értékadása is elég szakszerűtlen, mivel a tömböd konstans méretű, ezért javasolnám egy egyszerű #define direktíva használatát.


Az átlag változó neve nagyon megtévesztő, mert igazából az összeget tartalmazza.


Miután kiírod a tömb elemeid, nem zárod le a sort.


Az átlagszámításhoz nem árt, ha lebegőpontos számokat használsz.


Egy elegánsabb megoldása a feladatodnak:


#include <stdio.h>


#define SIZE 40


int main(void) {

char i, table[SIZE];

int sum = 0;


srand(time(NULL));


printf("A szamaink:\n");

for(i = 0;i < SIZE;i++) {

table[i] = rand()%41-20;

sum += table[i];

printf("%4d",table[i]);

}

printf("\n");


printf("Atlag: %f\n",(float)sum/40);

return 0;

}

2016. dec. 19. 20:03
Hasznos számodra ez a válasz?
1 2

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!