background image

Laboratorium nr 11 

TematDefiniowanie 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