Informatika2-2014/Hazi
(Új oldal, tartalma: „== C feladatok == '''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…”) |
|||
(2 szerkesztő 4 közbeeső változata nincs mutatva) | |||
1. sor: | 1. sor: | ||
== C feladatok == | == 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. | '''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. | ||
19. sor: | 25. sor: | ||
0 | 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 | + | '''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): |
<math>s_N^2 = \frac1N \left(\sum_{i=1}^N x_i^2\right) - {\bar x}^2</math> | <math>s_N^2 = \frac1N \left(\sum_{i=1}^N x_i^2\right) - {\bar x}^2</math> | ||
48. sor: | 54. sor: | ||
Kimenet: | Kimenet: | ||
− | 5.600000 | + | 5.600000 |
− | 0.040003 | + | 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! | ||
+ | |||
+ | |||
+ | <C> | ||
+ | #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; | ||
+ | } | ||
+ | </C> | ||
+ | |||
+ | '''5. Mátrix négyzete.''' Írjunk programot, mely beolvas egy pozitív egész <math>n</math> számot, létrehoz egy <math>n\times n</math>-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 [http://wiki.math.bme.hu/view/Info2/2008tavasz/C#6._gyakorlat_.282008-03-18.2C_2008-03-21.29] 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 <math>\leq</math>2, a harmadik <math>\leq</math>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: | ||
+ | <C> | ||
+ | #include <stdio.h> | ||
+ | #include <stdlib.h> | ||
+ | struct gyerek { | ||
+ | int sorszam; | ||
+ | struct gyerek *kov; | ||
+ | }; | ||
+ | </C> | ||
− | + | 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: | |
+ | <C> | ||
+ | (struct gyerek*)malloc(sizeof(struct gyerek)); | ||
+ | </C> |
A lap jelenlegi, 2014. május 14., 23:32-kori változata
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));