Vissza
Egydimenziós tömbök
Házi feladatok:
- Egy n elemű tömb egész számokat
tartalmaz. Határozzuk
meg a tömb maximum elemét.
- Egy n elemű tömb egész számokat
tartalmaz. Határozzuk
meg a tömb pozitív elemeinek számát.
- Egy n elemű tömb egész számokat
tartalmaz. Határozzuk
meg a tömb páros elemeinek számát.
- Egy n elemű tömb egész számokat
tartalmaz. Határozzuk
meg a tömb 5-el való osztható elemeinek
számát.
- Egy n elemű tömb egész számokat
tartalmaz. Határozzuk
meg a pozitív elemek szorzatát.
- Egy n elemű tömb egész számokat
tartalmaz. Határozzuk
meg a páratlan elemek összegét.
- Egy n elemű tömb egész számokat
tartalmaz. Írjuk ki a tömb elemeit táblázatos
formában, feltüntetve a sorszámot is.
- Hozzunk létre egy n elemű tömböt, mely
tartalmazza az
első n páros számot.
- Hozzunk létre egy n elemű tömböt, mely
tartalmazza az
első n Fibonacci számot.
- Hozzunk létre egy n elemű tömböt, mely
tartalmazza az
első n négyzetszámot.
- Egy n elemű tömb egész számokat
tartalmaz. Határozzuk meg
a tömb azon pozícióit, melyeken negatív
számok vannak.
- Egy n elemű tömb egész számokat
tartalmaz. Tegyük át egy
másik tömbbe, fordított sorrendbe azokat a
számokat, melyek oszthatóak
5-el.
- Egy n elemű tömb egész számokat
tartalmaz. Tegyük át egy
másik tömbbe azokat a számokat, melyek tartalmaznak
0-os számjegyeket.
- Egy n elemű tömb egész számokat
tartalmaz. Tegyük át egy
másik tömbbe azokat a számokat, melyek tartalmaznak
5-ös számjegyeket.
- Egy n elemű tömb valós számokat
tartalmaz. Határozzuk
meg a páros indexű elemek átlagát.
- Egy n elemű tömb valós számokat
tartalmaz. Határozzuk
meg az egy adott értéknél nagyobb elemek
számát.
- Egy n elemű tömb egész számokat
tartalmaz. Határozzuk
meg a számok abszolút értékei
közül a
maximumot.
- Adott egy karaktereket tartalmazó tömb.
Helyettesítsünk a számjegyeket egy megadott
speciális karakterrel.
- István megtakarított 500 lejét beteszi a
bankba, 10 éves lajáratra. A
bank ezért 8%-os kamatot fizet. Írjunk programot, mely
meghatározza egy
tömbbe, hogy mennyi
pénze lesz Istvánnak a bankban, minden év
lejárta
után.
Megjegyzések: 8%-os kamat ->
8 + 100 = 108%-os a növekedés,
- első évben: 500 · 1.08
= 540,
- második évben 540 ·1.08 = 583.2, stb
- István otthon tartja a pénzét, 800 lejt,
mely minden évben veszít az
értékéből 3%-ot. Írjunk programot, mely
meghatározza egy
tömbe, hogy mennyit ér István pénze, minden
egyes
lejárt év után, 10 éven
keresztül.
Megjegyzések: 800 ·
0.03 = 24, ennyit veszít az értékéből,
- az első év után: 800 - 24 = 776
- a második év után: 778 - 24 = 754, stb.
- Egy-egy állományban diákok
átlagjegyei vannak eltárolva
évfolyamonként, összesen 4 évfolyamon.
Határozzuk meg, minden évfolyam esetében, hogy
hány százaléka a diákoknak 5-ös
alatti, hány százalék 5-6 közötti,
hány százalék 6-8 közötti és
hány százalék 8-10 közötti.
Határozzuk meg azt az évfolyamot, ahol a legnagyobb
százalékban van 4.5-es alatti jegy, illetve, ahol a
legnagyobb százalékban 8-10 között vannak a
jegyek.
Megoldott
feladatok:
1. Egy
n elemű tömb egész számokat
tartalmaz. Határozzuk
meg a tömb elemeinek összegét. A
tömb elemeit véletlenszerűen töltjük fel,
használva az srand(), time()
és rand()
könyvtárfüggvényeket.
#include <iostream>
#include <time.h>
#include <stdlib.h>
using namespace std;
int main()
{
int n, tomb[50];
int i, ossz;
srand (time
(NULL));
cout << "n: ";
cin >> n;
for (i = 0; i < n; i++)
{
tomb[i] = ( rand() % 100 ) - 50;
cout << tomb[i]
<< "\t";
}
cout << endl;
ossz = 0;
for (i = 0; i < n; i++)
ossz += tomb[i];
cout << "Az osszeg: " << ossz <<
endl;
return 0;
}
2. Egy
n elemű
tömb egész számokat
tartalmaz. Rendezzük a könyvtárfüggvény qsort-al a tömb elemeit. A
tömb elemeit konstan értékekkel töltjük
fel.
#include
<stdio.h>
#include
<iostream>
#include <stdlib.h>
using namespace std;
int mcomp(const void
*a1, const void *a2);
int main()
{
int t[] =
{2,45,3,21,65,7,8,11,13};
int n = sizeof(t) / sizeof(t[0]);
int i;
qsort(t, n,
sizeof(int), mcomp);
for (i = 0; i < n; i++)
cout << t[i] <<
" ";
cout << endl;
return 0;
}
int mcomp(const void *a1,
const void *a2)
{
return (*(int*)a1) - (*(int*)a2);
}
3. Egy
n elemű tömb egész számokat
tartalmaz. Határozzuk
meg a páros elemek pozícióit. A
tömb
elemeit
véletlenszerűen töltjük fel, és
táblázatos formában írjuk ki.
#include
<iostream>
#include <iomanip>
#include <stdlib.h>
#include <time.h>
using namespace std;
int main()
{
int n, tomb[50];
int i;
srand(time(NULL));
cout << "n:";
cin >> n;
for (i = 0; i < n; i++)
cout << setw(5)
<< i;
cout << endl;
for (i = 0; i < n; i++)
{
tomb[i] = ( rand() % 100 )
-50;
cout << setw(5)
<< tomb[i];
}
cout << endl << endl;
cout << "A paros elemek pozicioi:";
for (i = 0; i <
n; i++)
if( tomb[i]%2 == 0 ) cout
<< i << " ";
cout << endl << endl;
return 0;
}
4.
Hozzunk
létre egy n elemű tömböt, mely
tartalmazza az
első n prímszámot.
#include
<iostream>
#include <iomanip>
using namespace std;
int pprim(int szam);
int main()
{
int n, tomb[10000];
int i, szam, prim, j;
cout << "n:";
cin >> n;
tomb[0] = 2;
i = 1;
szam = 3;
while (i < n) {
if (pprim(szam)) {
tomb[i] = szam;
i++;
}
szam += 2;
}
for (i = 0; i <
n; i++)
cout << setw(5)
<< tomb[i];
cout << endl << endl;
return 0;
}
int pprim(int szam)
{
int i;
for (i = 3; i*i <= szam; i += 2)
if (szam%i == 0) return 0;
return 1;
}
5. Adott
egy egész szám. Töltsünk fel egy
tömböt a szám
számjegyeivel.
#include
<iostream>
#include <iomanip>
using namespace std;
int main()
{
long szam;
int i, n, tomb[100];
cout << "szam:";
cin >> szam;
i = 0;
while (szam!=0 )
{
tomb[i] = szam % 10;
i++;
szam = szam /10;
}
n = i;
for (i = n-1;
i >= 0; i--)
//a tomb elemeinek
forditott sorrendbe valo kiiratasa
cout << setw(5)
<< tomb[i];
cout << endl << endl;
return 0;
}
6.
Adott egy karaktereket tartalmazó tömb.
Készítsünk karakter előfordulási
statisztikát. A karakterek beolvasása leáll az
első fehérkarakter beütésénél,
#include
<iostream>
#include <iomanip>
using namespace std;
int main()
{
char tomb[20];
int i, stat[256];
cout << "karakterlanc: ";
cin >> tomb;
for (i = 0; i < 256; i++)
stat[i] = 0;
for (i = 0; tomb[i] != '\0'; i++)
stat[ tomb[i] ] ++;
for (i = 0; i < 256; i++)
if (stat[i] != 0) {
cout << setw(5) << (char)i;
cout << setw(5) << stat[i]
<< endl;
}
cout << endl << endl;
return 0;
}
7.
Írjuk és hívjuk meg a következő
függvényeket:
- egy állmányban levő számokat beolvas
egy egész elemű tömbe,
- kiírja a tömb tartalmát a
képernyőre,
- meghatározza a tömbben levő számok
átlagát.
#include
<iostream>
#include
<fstream>
using
namespace std;
void
beolvas(int[], int&);
void
kiir(int [], int);
float
feldolgoz(int [], int);
int
main(){
int n, tomb[50];
float atl;
beolvas(tomb, n);
kiir(tomb, n);
atl = feldolgoz(tomb, n);
cout << "A szamok atlaga: " << atl << endl;
}
void beolvas(int
x[50], int &n)
{
int i;
ifstream F;
F.open("szamok.txt");
for (i = 0; !F.eof(); ++i){
F >> x[i];
}
n = i;
F.close();
}
void
kiir(int x[50], int n)
{
int i;
for (i = 0; i <
n; i++)
cout << x[i] << " ";
cout << endl;
}
float feldolgoz(int x[50], int n)
{
int i, sum;
sum = 0;
for (i = 0; i <
n; i++)
sum += x[i];
return (float)sum/n;
}
A fenti feladatok
standard C író/olvasó függvényekkel
1. Egy
n elemű tömb egész számokat
tartalmaz. Határozzuk
meg a tömb elemeinek összegét. A
tömb elemeit véletlenszerűen töltjük fel,
használva az srand(), time()
és rand()
könyvtárfüggvényeket.
#include
<stdio.h>
#include
<stdlib.h>
#include <time.h>
int main()
{
int
n, tomb[50];
int
i,
ossz;
srand
(time (NULL));
printf("n: ");
scanf("%i", &n);
for (i = 0;
i < n;
i++)
{
tomb[i] = (
rand() % 100 ) - 50;
printf("%i\t", tomb[i]);
}
printf("\n");
ossz = 0;
for (i = 0;
i < n;
i++)
ossz
+= tomb[i];
printf("Az
osszeg: %i\n", ossz);
return 0;
}
2. Egy n elemű
tömb egész számokat
tartalmaz. Rendezzük a könyvtárfüggvény qsort-al a tömb elemeit. A
tömb elemeit konstan értékekkel töltjük
fel.
#include
<stdio.h>
#include
<stdlib.h>
int mcomp(const void
*a1, const void *a2);
int
main()
{
int t[] =
{2,45,3,21,65,7,8,11,13};
int n = sizeof(t) / sizeof(t[0]);
int i;
qsort(t, n, sizeof(int), mcomp);
for (i = 0; i < n; i++)
printf("%5i", t[i]);
printf("\n");
return 0;
}
int mcomp(const void
*a1, const void *a2)
{
return (*(int*)a1) - (*(int*)a2);
}
3. Egy n elemű tömb egész
számokat
tartalmaz. Határozzuk
meg a páros elemek pozícióit. A
tömb
elemeit
véletlenszerűen töltjük fel, és
táblázatos formában írjuk ki.
#include
<stdio.h>
#include
<stdlib.h>
#include
<time.h>
int
main()
{
int n, tomb[50];
int i;
srand(time(NULL));
printf("n:");
scanf("%i", &n);
//a fejlec
kiiratasahoz
for (i = 0; i <
n; i++)
printf("%3i\t", i);
printf("\n");
for (i = 0; i <
n; i++)
{
tomb[i] = ( rand() % 100 ) -50;
printf("%3i\t", tomb[i]);
}
printf("\n\n");
printf("A paros elemek pozicioi:");
for (i = 0; i <
n; i++)
if( tomb[i]%2
== 0 ) printf("%i\t", i);
printf("\n\n");
return 0;
}
4. Hozzunk
létre egy n elemű tömböt, mely
tartalmazza az
első n prímszámot.
#include
<stdio.h>
#include <stdlib.h>
int pprim(int szam);
int main()
{
int n, tomb[10000];
int i, szam, prim, j;
printf("n:");
scanf("%i", &n);
tomb[0] = 2;
i = 1;
szam = 3;
while (i < n) {
if (pprim(szam)) {
tomb[i] = szam;
i++;
}
szam += 2;
}
for (i = 0; i <
n; i++)
printf("%i\t", tomb[i]);
printf("\n\n");
return 0;
}
int pprim(int szam)
{
int i;
for (i = 3; i*i <= szam; i += 2)
if (szam%i == 0) return 0;
return 1;
}
5. Adott
egy egész szám. Töltsünk fel egy
tömböt a szám
számjegyeivel.
#include
<stdio.h>
#include <stdlib.h>
int main()
{
long szam;
int i, n, tomb[100];
printf("szam:");
scanf("%ld", &szam);
i = 0;
while (szam!=0 )
{
tomb[i] = szam % 10;
i++;
szam = szam /10;
}
n = i;
for (i = n-1; i >= 0; i--)
//a tomb elemeinek
forditott sorrendbe valo kiiratasa
printf("%i ", tomb[i]);
printf("\n\n");
return 0;
}
6. Adott egy karaktereket
tartalmazó tömb.
Készítsünk karakter előfordulási
statisztikát.
#include
<stdio.h>
int
main()
{
char tomb[20];
int i, stat[256];
printf("karakterlanc:");
scanf("%s", tomb);
for (i = 0; i < 256; i++)
stat[i] = 0;
for (i = 0; tomb[i] != '\0'; i++)
stat[ tomb[i] ] ++;
for (i = 0; i < 256; i++)
if (stat[i] != 0) printf("%c::%i\n", i, stat[i]);
printf("\n\n");
return 0;
}
7. Írjuk és hívjuk meg
a következő függvényeket:
- egy állmányban levő számokat beolvas
egy egész elemű tömbe,
- kiírja a tömb tartalmát a
képernyőre,
- meghatározza a tömbben levő számok
átlagát.
#include
<stdio.h>
#include
<stdio.h>
void beolvas(int[], int*);
void
kiir(int x[], int)
float
feldolgoz(int [], int);
int main(){
int n, tomb[50];
float atl;
beolvas(tomb,
&n);
kiir(tomb, n);
atl = feldolgoz(tomb, n);
printf("A szamok atlaga: %.2f\n", atl);
}
void beolvas(int x[50], int
*n)
{
int i;
FILE *F;
F = fopen("szamok.txt", "r");
for (i = 0; !feof(F); ++i){
fscanf(F, "%i", &x[i]);
}
*n = i;
fclose(F);
}
void
kiir(int x[50], int n)
{
int i;
for (i = 0; i <
n; i++)
printf("%i ", x[i]);
printf("\n");
}
float feldolgoz(int
x[50], int n)
{
int i, sum;
sum = 0;
for (i = 0; i <
n; i++)
sum += x[i];
return (float)sum/n;
}