|
Házi feladatok
1.Töltsünk fel véletlenszerűen
generált karakterekkel egy egydimenziós
tömböt, amelynek dinamikusan foglaltunk helyet, majd
rendezzük a könyvtárfüggvény qsort-al.
srand(time(0));
a[i]
= rand() % 26 + 65;
2. Töltsünk fel véletlenszerűen
generált valós számokkal egy egydimenziós
tömböt, amelynek dinamikusan foglaltunk helyet, majd
rendezzük a könyvtárfüggvény qsort-al.
srand(time(0));
float
a = (float)rand() / ((float)RAND_MAX/100);
3.Olvassunk ki valós számokat egy
állományból, egy egydimenziós
tömbbe, amelynek dinamikusan foglaltunk helyet, majd
rendezzük
a
könyvtárfüggvény qsort-al, használjuk az
alábbi függvényt:
int
hasonlit( const void *a1, const void *a2 )
{
float ta1 = * ( float* ) a1;
float ta2 = * ( float* ) a2;
if (ta1 == ta2) return 0;
if (ta1 > ta2) return 1;
if (ta1 < ta2) return -1;
}
4. Olvassunk ki karakterláncokat
egy
állományból, egy kétdimenziós
tömbbe, amelynek dinamikusan foglaljunk helyet, majd
rendezzük
a
könyvtárfüggvény qsort-al,
használjuk az alábbi függvényt:
int
hasonlit( const void *a1, const void *a2 )
{
return
strcmp( * ( char** ) a1, * ( char** ) a2 );
}
5. Olvassunk ki karaktereket/valós
számokat/karakterláncokat egy egydimenziós
tömbbe, amelynek dinamikusan foglaltunk helyet, majd
rendezés után vizsgáljuk meg, hogy egy
billentyűzetről beolvasott elem benne van-e a tömbben,
használjuk a könyvtárfüggvény qsort-ot a
rendezéshez, és a bsearch-et a kereséshez:
6. Egy nxm-es négyzetes
mátrixot
inicializáljunk véletlenszerűen generált
számokkal, ahol a
tömböt
kezeljük dinamikusan. Írjunk programot, mely
elkészíti a mátrix
elemenkénti, illetve soronkénti bit-paritás
térképét. Egy szám
bit-paritása a szerint 0 vagy 1, hogy
kettes számrendszerbeli alakja
páros vagy páratlan darab 1-est tartalmaz. Egy sor
bit-pairitása
aszerint 0 vagy 1, hogy az illető sor elemei
kettes számrendszerbeli
alakjaiban összesen páros vagy páratlan
számú 1-es van.
7. Egy nxm-es négyzetes
mátrixot inicializáljunk véletlenszerűen
generált számokkal, ahol
a
tömböt kezeljük dinamikusan. Írjunk programot,
mely kiírja a
képernyőre
azt az utat, amely az (0,0) sarokból indul, és mindig a
legnagyobb
szomszéd (fel, jobbra, le, balra) irányában
halalad tovább,
amennyiben
ez szigorúan nagyobb, mint az aktuális elem. Ha több
legnagyobb
szomszéd van, akkor a fentebb megadott sorrendben választ
az irányok
között. Ha nincs ilyen szomszéd, akkor
megáll a program futása.
Megoldott feladatok
1.Töltsünk fel véletlenszerűen
generált egész számokkal egy egydimenziós
tömböt, amelynek dinamikusan foglaltunk helyet, majd
rendezzük a könyvtárfüggvény qsort-al.
#include
<stdio.h>
#include
<time.h>
#include
<stdlib.h>
typedef int type;
int
hasonlit(const void *a1, const void *a2);
int
main()
{
type *a;
int
i,n;
n
= 10;
a
= (type*)malloc(n*sizeof(type));
srand((unsigned)time(NULL));
for(i=0;
i<n; i++)
a[i] = rand() % 100;
qsort(a,
n, sizeof(type), hasonlit);
for(i=0; i<n; i++) printf("%i ", a[i]);
free (a);
return 0;
}
int
hasonlit(const void *a1,const void *a2)
{
return *((type*)a1) - *((type*)a2);
}
2. Töltsünk fel véletlenszerűen
generált egész számokkal egy egydimenziós
tömböt, amelynek dinamikusan foglaltunk helyet, majd
rendezés után vizsgáljuk meg, hogy egy
billentyűzetről beolvasott elem benne van-e a tömbben,
használjuk a könyvtárfüggvény qsort-ot a
rendezéshez, és a bsearch-et a kereséshez:
#include
<stdio.h>
#include
<time.h>
#include
<stdlib.h>
int hasonlit(const
void *a1, const void *a2);
int main()
{
int *a, *pElem, i, n, elem;
n = 10;
a = (int*)malloc(
n * sizeof(int) );
srand((unsigned)time(NULL));
for(i=0; i<n;
i++)
a[i] = rand() % 100;
qsort(a, n, sizeof(int), hasonlit);
for(i=0; i<n;
i++)
printf("%i ", a[i]);
printf("\n");
printf("Melyik
elemet keresed: ");
scanf("%i",
&elem);
pElem = (int*) bsearch (&elem, a, n,
sizeof (int), hasonlit);
if ( pElem == NULL ) printf("Nincs
meg a keresett elem\n");
else printf("a
kersett elem megvan: %i\n", *pElem);
free (a);
return 0;
}
int hasonlit(const
void *a1,const void *a2)
{
return *((int*)a1) - *((int*)a2);
}
3. Olvassunk be számokat 0 végjelig a
billentyűzetről, és a realloc-al foglaljunk nekik helyet, majd
Írassuk ki a számokat.
#include
<stdio.h>
#include <stdlib.h>
int main ()
{
int szam, i;
int n = 0;
int* szamok =
NULL;
int* temp_szamok = NULL;
while(1) {
printf ("Kerek egy szamot, (0 - a
megallashoz): ");
scanf ("%d", &szam);
if (szam==0) break;
n++;
temp_szamok = (int*) realloc (szamok, n * sizeof(int));
if (temp_szamok != NULL) {
szamok = temp_szamok;
szamok[n-1] = szam;
}
}
printf ("A beolvasott ertekek: ");
for (i=0; i<n; i++) printf ("%d ",szamok[i]);
printf("\n");
free (szamok);
return 0;
}
4. Egy nxn-es négyzetes
mátrixot inicializáljunk véletlenszerűen
generált számokkal, ahol n>1000,
a tömböt kezeljük
dinamikusan. Írjuk ki
a tömb elemeit a képernyőre.
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define N 10
int main(){
int m, i, j;
int
**tomb;
tomb = (int**)malloc(N*sizeof(int*));
for (i=0; i<N; ++i)
tomb[i] =
(int*)malloc(N*sizeof(int));
srand(time(0));
for (i=0; i<N; ++i){
for(j=0; j<N; ++j){
tomb[i][j] = rand() % 1000;
printf("%5i", tomb[i][j]);
}
printf("\n");
}
for (i=0; i<N; ++i)
free(tomb[i]);
free(tomb);
return 0;
}
|