Vissza

Egydimenziós tömbök
Házi feladatok:
  1. Egy n elemű tömb egész számokat tartalmaz. Határozzuk meg a tömb maximum elemét.
  2. Egy n elemű tömb egész számokat tartalmaz. Határozzuk meg a tömb pozitív elemeinek számát.
  3. Egy n elemű tömb egész számokat tartalmaz. Határozzuk meg a tömb páros elemeinek számát.
  4. Egy n elemű tömb egész számokat tartalmaz. Határozzuk meg a tömb 5-el való osztható elemeinek számát.
  5. Egy n elemű tömb egész számokat tartalmaz. Határozzuk meg a pozitív elemek szorzatát.
  6. Egy n elemű tömb egész számokat tartalmaz. Határozzuk meg a páratlan elemek összegét.
  7. 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.
  8. Hozzunk létre egy n elemű tömböt, mely tartalmazza az első n páros számot.
  9. Hozzunk létre egy n elemű tömböt, mely tartalmazza az első n Fibonacci számot.
  10. Hozzunk létre egy n elemű tömböt, mely tartalmazza az első n négyzetszámot.
  11. 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.
  12. 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.
  13. 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.
  14. 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.
  15. Egy n elemű tömb valós számokat tartalmaz. Határozzuk meg a páros indexű elemek átlagát.
  16. Egy n elemű tömb valós számokat tartalmaz. Határozzuk meg az egy adott értéknél nagyobb elemek számát.
  17. 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.
  18. Adott egy karaktereket tartalmazó tömb. Helyettesítsünk a számjegyeket egy megadott speciális karakterrel.
  19. 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.
    1. Megjegyzések: 8%-os kamat -> 8 + 100 = 108%-os a növekedés,
      1. első évben: 500 · 1.08 = 540,
      2. második évben 540 ·1.08 = 583.2, stb
  20. 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. 
    1. Megjegyzések: 800 · 0.03 = 24, ennyit veszít az értékéből,
      1. az első év után: 800 - 24 = 776
      2. a második év után: 778 - 24 = 754, stb.
  21. 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:
#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:
#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;
}