Informatika2-2014/Hazi
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):
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 -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 2, a harmadik
3,... 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));