Rajzoljunk a konzol ablakba Windowson
Írj programot, amely a szabványos bemenetről olvas be folyamatosan valós számokat egész addig, amíg a felhasználó nem 0-t ad meg! Az adatsor végigolvasása után írja ki
a) a számok átlagát (a 0-t ne vedd figyelembe!),
b) a legkisebb számot,
c) a legnagyobb számot!
Írd át az 1. feladat megoldását úgy, hogy az adatokat fájlvége jelig olvassa, ne pedig 0 értékig!
Tipp: a scanf visszetérési értéke jelzi, hogy hány db adatot sikerült beolvasni. Ha egy db valós számot próbálunk beolvasni, akkor a következő kifejezés értéke IGAZ, ha sikeres a beolvasás:. scanf("%lg",&beolvas)==1. Ha fájlvége jel vagy egyéb hiba miatt nem sikeres a beolvasás, akkor HAMIS a kifejezés értéke.
Írd át a programot úgy, hogy az kiírja a beolvasott elemek átlagánál nagyobb beolvasott elemeket. Feltételezheted, hogy a felhasználó legfeljebb 2000 számot ad meg.
Hozz létre egy 100 elemű, valós számok tárolására alkalmas tömböt! Töltsd fel a tömböt -50 és +50 közötti véletlen értékekkel! Számítsd ki az elemek átlagát! Írd ki az átlaghoz legközelebbi, és attól legtávolabbi számot!
A következő feladat szorgalmi jellegű, mert sok gondolkodást igényel, ezért ilyet ZH-ban nem adunk. Viszont érdemes megcsinálni, programozási szempontból nem nehéz.
Egy síkban vagyunk, ahol x a vízszintes, y a függőleges tengely. Egy ágyú az x=0, y=0 pontban található. A felhasználó adja meg egy négyzet A oldalhosszát, valamint középpontjának x0, y0 koordinátáit, melyek nemnegatív valós értékűek lehetnek. Adja meg továbbá a (0 sugarúnak tekintett) ágyugolyó kezdősebességét. Az ágyú csöve 2 fokonként állítható. Van-e olyan alfa szög, amit beállítva eltalálja az ágyú a négyzetet? Hány ilyen szög van? Ha van, írd ki ezeket!
https://infoc.eet.bme.hu/f02/#7
| 1. feladat |
#include <stdio.h>
int main(){
double beolvas,min,max,osszeg,atlag;
int db;
db=0;
osszeg = 0.0;
scanf("%lg",&beolvas);
min = max = beolvas;
while(beolvas!=0.0){
osszeg += beolvas;
db++;
if(min>beolvas)min=beolvas;
if(max<beolvas)max=beolvas;
scanf("%lg",&beolvas);
}
if(db>0){
atlag = osszeg / db;
printf("A %d db valos szam atlaga %g, minimuma %g, maximuma %g.\n",
db,atlag,min,max);
}
return 0;
}
|
| 2. feladat |
#include <stdio.h>
int main(){
double beolvas,min,max,osszeg,atlag;
int db;
db=0;
osszeg = 0.0;
while(scanf("%lg",&beolvas)==1){
if(db==0)
min = max = beolvas;
osszeg += beolvas;
db++;
if(min>beolvas)min=beolvas;
if(max<beolvas)max=beolvas;
}
if(db>0){
atlag = osszeg / db;
printf("A %d db valos szam atlaga %g, minimuma %g, maximuma %g.\n",
db,atlag,min,max);
}
return 0;
}
|
| 3. feladat |
#include <stdio.h>
int main(){
double osszeg,atlag;
double elemek[2000];
int db,i;
osszeg = 0.0;
for(db=0; scanf("%lg",&elemek[db])==1; db++){
osszeg += elemek[db];
}
if(db>0){
atlag = osszeg / db;
for( i = 0; i < db; i++ )
if( elemek[i] > atlag )
printf("%g\n", elemek[i]);
}
return 0;
}
|
| 4. feladat |
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
int main(){
double tomb[100], atlag, legkozelebbi, legtavolabbi;
int i;
srand(time(0)); // a véletlenszámgenerátor inicializálása, egy programban csak egyszwer fusson!
for( i = 0; i < 100; i++)
tomb[i] = ( (double)rand() / RAND_MAX) * 100.0 - 50.0;
atlag = 0.0;
for( i = 0; i < 100; i++)
atlag += tomb[i];
atlag = atlag / 100;
for( i = 0; i < 100; i++)
printf("%-16g",tomb[i]);
printf("\n");
legkozelebbi = legtavolabbi = tomb[0];
for( i = 0; i < 100; i++ ){
if( fabs( atlag - tomb[i] ) < fabs ( atlag - legkozelebbi ) ) legkozelebbi = tomb[i];
if( fabs( atlag - tomb[i] ) > fabs ( atlag - legtavolabbi ) ) legtavolabbi = tomb[i];
}
printf("atlag=%g\nlegkozelebbi=%g\nlegtavolabbi=%g\n", atlag, legkozelebbi, legtavolabbi);
return 0;
}
|
| 5. feladat |
#include <stdio.h>
#include <math.h>
int main(void){ // nem lett alaposan letesztelve. jó-e?
double x, y, x0, y0, alfa, alfarad, A, v0, t, D;
const double PI = acos(0.0) * 2.0;
printf("A= "); scanf("%lg", &A);
printf("x0="); scanf("%lg", &x0);
printf("y0="); scanf("%lg", &y0);
printf("v0="); scanf("%lg", &v0);
for (alfa = alfarad = 0; alfa < 90; alfa += 2, alfarad = alfa * PI / 180){
int talalt = 0;
t = (x0 - A / 2) / (v0 * cos(alfarad));
y = v0 * t * sin(alfarad) - 9.81 / 2 * t * t;
if (y >= y0 - A / 2 && y <= y0 + A / 2)
talalt = 1;
t = (x0 + A / 2) / (v0 * cos(alfarad));
y = v0 * t * sin(alfarad) - 9.81 / 2 * t * t;
if (y >= y0 - A / 2 && y <= y0 + A / 2)
talalt = 1;
D = v0*sin(alfarad);
D *= D;
D -= 2 * 9.81*(y0 - A / 2);
if (D > 0){
D = sqrt(D);
x = (v0*sin(alfarad) + D) / 9.81;
if (x >= x0 - A / 2 && x <= x0 + A / 2)
talalt = 1;
x = (v0*sin(alfarad) - D) / 9.81;
if (x >= x0 - A / 2 && x <= x0 + A / 2)
talalt = 1;
}
D = v0*sin(alfarad);
D *= D;
D -= 2 * 9.81*(y0 + A / 2);
if (D > 0){
D = sqrt(D);
x = (v0*sin(alfarad) + D) / 9.81;
if (x >= x0 - A / 2 && x <= x0 + A / 2)
talalt = 1;
x = (v0*sin(alfarad) - D) / 9.81;
if (x >= x0 - A / 2 && x <= x0 + A / 2)
talalt = 1;
}
if (talalt)
printf("%g fok\n", alfa);
}
return 0;
}
|