Informatika2-2014/Hazi

A MathWikiből
(Változatok közti eltérés)
 
(2 szerkesztő 3 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 találtok példát). A kapott számok közül kiírja a legnagyobbat, új sorban a számok tapasztalati szórásnégyzetét, végül ez után még tesz egy sortörést. A képlet amit érdemes használni (ld. wikipedia):
+
'''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>
51. sor: 57. sor:
 
  0.040003
 
  0.040003
  
'''3. Kisbetű-nagybetű.''' Készítsen C függvényt, amely a paraméterként kapott csak ASCII betűket tartalmazó sztringben minden kisbetűt nagybetűre cserél!  
+
'''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:
 
Bemenet:
  
  kiskapu 12
+
  Kiskapu 12
  
 
Kimenet:
 
Kimenet:
64. sor: 70. sor:
  
  
'''4. Minmax.''' Az alábbi C kódban írja meg a 'minmax' függvényt és egészítse 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!
+
'''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!
  
  
84. sor: 90. sor:
 
</C>
 
</C>
  
'''5. Mátrix négyzete.''' Írjunk programot, mely beolvas egy pozitív egész 'n' számot, létrehoz egy <math>n\times n</math>-es mátrixot,  
+
'''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.
  
Bemenet:
+
Példa bemenet:
  
 
  3
 
  3
94. sor: 100. sor:
  
 
Kimenet:
 
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., 22: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):

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