Lab 11

background image

Laboratorium nr 11

Temat: Definiowanie tablicy wska ników oraz sortowania tablic i tablic wska ników. Program sortuj cy i

porz dkuj cy tablic liczb losowych.

1)

Definiowanie tablicy wska ników.

# include <stdio.h>
# include <conio.h>
# include <stdlib.h>
# include <malloc.h>

int main () {
int i,**tab;
tab=calloc(10,sizeof(int *));
for(i=0;i<10;i++){
tab[i]=calloc(1,sizeof(int));
*(tab+i)=rand();
printf("Tab[%i]=%i\n",i,tab[i]);
};
getch();
return(0);
}

# include <stdio.h>
# include <conio.h>
# include <stdlib.h>
# include <malloc.h>
# include <string.h>

int main () {
int i;
char bufor[10],**tab;
tab=calloc(10,sizeof(char *));
for(i=0;i<10;i++){
itoa(rand(),bufor,10);
tab[i]=calloc(10,sizeof(char));
strcpy(*(tab+i),bufor);
printf("Tab[%i]=%s\n",i,tab[i]);
};
getch();
return(0);
}

Uwaga: wyra enie **tab oznacza tablic wska ników (tzn. wska nik to tablicy wska ników). W przypadku

tablicy wska ników nadal obowi zuje zapis tab[i], który jest równorz dny zapisowi *(tab+i)

2)

Sortowanie tablicy liczb losowych.

# include <stdio.h>
# include <conio.h>
# include <stdlib.h>
int losuj(int *tab){
int i;
for(i=0;i<10;i++) tab[i]=rand();
return(0);
}
int sortuj(int *tab){
int i,j,liczba;
for(i=0;i<10-1;i++){
for (j=0;j<10-1-i;j++){
if(tab[j]>tab[j+1]) {
liczba=tab[j];
tab[j]=tab[j+1];
tab[j+1]=liczba;
}
}
}
return(0);
}
int wyswietl(int *tab){
int i;
printf("\nTablica\n");
for(i=0;i<10;i++) printf("%i\t%i\n",i,tab[i]);
return(0);
}

int main () {
int tab[10];
losuj(tab);
wyswietl(tab);
sortuj(tab);
wyswietl(tab);
getch();
return(0);
}

background image

3)

Sortowanie rekordów bazy danych.

# include <stdio.h>
# include <stdlib.h>
# include <conio.h>
# include <string.h>
# include <malloc.h>
struct baza {
char imie[100];
char nazwisko[100];
char telefon[50];
};
int utworz_baze(struct baza *wsk,int liczba){
char bufor[25];
int i;
for(i=0;i<liczba;i++){
itoa(rand(),bufor,10);
strcpy(wsk->imie,bufor);
strcpy(wsk->nazwisko,bufor);
strcpy(wsk->telefon,bufor);
wsk++;
};
return(0);
}
int wyswietl(struct baza *wsk, int liczba){
int i;
printf("Baza\nImie\tNazwisko\tTelefon\n");
for(i=0;i<liczba;i++){
printf("%s\t%s\t%s\n",wsk->imie,wsk->nazwisko,wsk->telefon);
wsk++;
}
return(0);
}
int sortuj(struct baza *wsk, int liczba){
struct baza *osoba;
int i,j;
osoba=(struct baza*) calloc(1,sizeof(struct baza));
for(i=0;i<liczba-1;i++){
for (j=0;j<liczba-1-i;j++){
if(atoi(wsk[j].imie)>atoi(wsk[j+1].imie)) {
*osoba=*(wsk+j);
*(wsk+j)=*(wsk+j+1);
*(wsk+j+1)=*osoba;
}
}
}
return(0);
}

int main() {
struct baza *wsk_bazy;
int ilosc=10;
wsk_bazy=(struct baza*) calloc(ilosc,sizeof(struct baza));
utworz_baze(wsk_bazy,ilosc);
wyswietl(wsk_bazy,ilosc);
sortuj(wsk_bazy,ilosc);
wyswietl(wsk_bazy,ilosc);
free(wsk_bazy);
getch();
return(0);
}

Uwaga: w przypadku sortowania ła cuchów nale y skorzysta z funkcji, porównuj cej dwa ła cuchy:

strcmp(const char *string1, const char *string2)

Zadanie: Zmodyfikuj „swój” program bazy danych tak, aby umo liwiał sortowanie danych:

a)

rosn co i malej co,

b)

według wybranych pól rekordów


Wyszukiwarka

Podobne podstrony:
IE RS lab 11 solutions
lab 11 4 5
lab 11 7 2
lab 11 2 3a
CCNA1 lab 11 2 4 pl
CCNA2 lab 11 2 3b pl
CCNA2 lab 11 2 2b pl
lab 11 3 3
lab 11 1 5 1
Lab 11 - Oznaczenie modułu jednostronnego ściskania skał, skaly11, WYDZIAŁ GÓRNICZY
lab 11 2 3c
Lab 11 - Oznaczenie modułu jednostronnego ściskania skał, jed.ścisk.11, Nr ?wiczenia_
Lab.11, lab2 pierwszastrona, I TD
CCNA2 lab 11 2 3c pl
lab 11 cps szybki splot
lab 11 3 2
IE RS lab 11 diagram

więcej podobnych podstron