Informatika2-2014/Hazi

A MathWikiből
A lap korábbi változatát látod, amilyen Wettl (vitalap | szerkesztései) 2014. május 14., 22:32-kor történt szerkesztése után volt.
(eltér) ←Régebbi változat | Aktuális változat (eltér) | Újabb változat→ (eltér)

C feladatok

A feladatokat a judge összeomlása miatt itt tűzzük ki és a már ismert info1hazi@gmail.com címre kell küldeni. A levél mellékletében legyen a C program, melynek neve a hallgató ékezet nélküli neve és a feladat sorszáma legyen, pl.

SzaboIstvan1.c

A feladatok beadási határideje elvben e hét vége, de a saját rendszerünk hibája miatt jövő csütörtök éjfélig elfogadunk minden beérkező megoldást. A kitűzött feladatok nagyon egyszerűek, mindenkinek meg kell tudnia oldani. Természetesen ha valaki elakad, megbeszélheti a megoldást mással, de programkódot átadni valakinek, illetve valakitől elkérni, és azt beadni nem szabad!

1. Tökéletes szám. Írjunk C programot, mely a bemeneten kapott pozitív egész számról eldönti, hogy tökéletes szám-e. Ha tökéletes szám, akkor 1-et írjon ki, ha nem akkor 0-t. Mindkét esetben tegyen egy sortörés karaktert az eredmény után.

Példa bemenet:

28

Kimenet:

1

Példa bemenet:

35

Kimenet:

0

2. Szórásnégyzet. Írjunk C programot mely a bemenetről olvas be lebegőpontos számokat, egészen addig amíg egy negatív számot nem kap (hasonlóra a 9. gyakorlaton volt példa). A kapott számok közül kiírja a legnagyobbat, új sorban a számok tapasztalati szórásnégyzetét. A képlet amit érdemes használni (ld. wikipedia):

s_N^2 = \frac1N \left(\sum_{i=1}^N x_i^2\right) - {\bar x}^2

Példa bemenet:

4.2
4.8
2.3
4.5
-1


Kimenet:

4.800000
0.952500


Példa bemenet 2:

5.6
5.2
-1
4.2


Kimenet:

5.600000
0.040003

3. Kisbetű-nagybetű. Írjunk C függvényt, amely a paraméterként kapott csak ASCII betűket tartalmazó sztringben minden kisbetűt nagybetűre cserél!

Bemenet:

Kiskapu 12

Kimenet:

KISKAPU 12

(Segítség: 'k' - 'K' == 'a' - 'A')


4. Minmax. Az alábbi C kódban írjuk meg a 'minmax' függvényt és egészítsük ki a meghívását végző sort, hogy a program a 't' tömbben megadott számok minimumát és maximumát írja ki!


#include<stdio.h>
 
void minmax( ?, ?, ?) { // innen kitöltendő
 
 
}
 
int main(void) {
    double t[] = {1.2, 2.3, 6.1, -3, -2.7, 2.7, 11.11, -20, 0.23, 4.1};
    double min, max;
    minmax( t, ?, ?);  // ?-ek kitöltendők
    printf("%lf\n%lf\n", min, max);
    return 0;
}

5. Mátrix négyzete. Írjunk programot, mely beolvas egy pozitív egész n számot, létrehoz egy n\times n-es double értékeket tartalmazó mátrixot (malloc), kiszámolja a kapott mátrix négyzetét, majd ezt ki is írja.

Példa bemenet:

3
1.0 2.3 -1.2
4.5 -7.5 -2.0
5.6 1.2 5.4

Kimenet:

4.630000 -16.390000 -12.280000
-40.450000 64.200000 -1.200000
41.240000 10.360000 20.040000


6. Gyerek be (extra). Az előadáson elhangzott kiszámolós feladat [1] párjaként írjunk olyan programot, melyben a gyerekek úgy állnak sorba, hogy mindenki megmondja, hogy az addig már sorban állók sorában hányadik helyre akar állni. Az első gyerek csak az első helyre tud állni, a második választhat, az első vagy a második helyre állhat, a harmadik gyerek az első, második és harmadik helyre állhat... A bemenet pozitív egészek egy sorozata, az első szám 1, a második \leq2, a harmadik \leq3,... Addig olvassuk be a számokat, míg egy 0 nem érkezik. Ekkor a program kiírja a sorban álló gyerekeket a sorbaállásuk sorszáma szerint.

Példa bemenet:

1
1
1
1
0

Kimenet:

4 3 2 1

Bemenet:

1
2
3
4
5
0

Kimenet:

1 2 3 4 5 

Bemenet:

1
2
1
2
3
2
1
0

Kimenet:

7 3 6 4 5 1 2 

A feladatot itt is láncolt listával oldjuk meg, a struktúra is lehet azonos:

#include <stdio.h>
#include <stdlib.h>
 
struct gyerek {
  int sorszam;
  struct gyerek *kov;
};

Nem tudjuk, hányan akarnak sorba állni, ezért dinamikus memóriaallokációval biztosítsuk a helyet pl. a következő függvényhívással:

(struct gyerek*)malloc(sizeof(struct gyerek));
Személyes eszközök