Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <string.h>
- #include <stdlib.h>
- typedef struct{
- char imie[15];
- char nazwisko[20];
- int wiek;
- double zarobki;
- }OSOBA;
- void printOut(OSOBA osoba[], int i){
- int k;
- // char a[68]="____________________________________________________________________";
- // printf("\n%s", a);
- printf("\n|%-3s|%-15s|%20s|%15s|%15s|", "lp", "Imie", "Nazwisko", "wiek", "zarobki" );
- for(k=0; k < i; k++){
- printf("\n|%-3d|%-15s|%20s|%15d|%15lf|", k+1, osoba[k].imie, osoba[k].nazwisko, osoba[k].wiek, osoba[k].zarobki);
- }
- printf("\n");
- // printf("%s\n", a);
- }
- void appendToData(OSOBA *osoba, int *i){
- char name[15], secondname[20];
- int age;
- double income;
- scanf("%s %s %d %lf", name, secondname, &age, &income);
- strcpy(osoba[*i].imie, name);
- strcpy(osoba[*i].nazwisko, secondname);
- osoba[*i].wiek = age;
- osoba[*i].zarobki = income;
- ++(*i);
- }
- void deleteSelected(OSOBA *osoba, int i){
- int j;
- scanf("%d", &j);
- int k = j-1;
- for(k; k < i; k++){
- strcpy(osoba[k].imie, osoba[k+1].imie);
- strcpy(osoba[k].nazwisko, osoba[k+1].nazwisko);
- osoba[k].wiek = osoba[k+1].wiek;
- osoba[k].zarobki = osoba[k+1].zarobki;
- }
- }
- void saveToFile(OSOBA *osoba, int i){
- FILE *fout=fopen("plik_docelowy.txt", "w");
- if(fout){
- int j=0;
- while(j!=i){
- fprintf(fout, "%s %s %d %g\n", osoba[j].imie, osoba[j].nazwisko, osoba[j].wiek, osoba[j].zarobki);
- j++;
- }
- }
- else printf("\nerror\n");
- fclose(fout);
- exit(0);
- }
- void sortowanieNizw(OSOBA *osoba, int i){
- int j, k;
- char swap[20];
- int temp;
- double d_temp;
- for(j = i-1; j >= 0; j--){
- for(k = 0; k < j; k++){
- if(strcmp(osoba[k+1].nazwisko, osoba[k].nazwisko) < 0){
- strcpy(swap, osoba[k].nazwisko);
- strcpy(osoba[k].nazwisko, osoba[k+1].nazwisko);
- strcpy(osoba[k+1].nazwisko, swap);
- }
- else if(strcmp(osoba[k+1].nazwisko, osoba[k].nazwisko) == 0){
- if(strcmp(osoba[k+1].imie, osoba[k].imie) < 0){
- strcpy(swap, osoba[k].imie);
- strcpy(osoba[k].imie, osoba[k+1].imie);
- strcpy(osoba[k+1].imie, swap);
- }
- else if(strcmp(osoba[k+1].imie, osoba[k].imie) == 0){
- if(osoba[k+1].zarobki < osoba[k].zarobki){
- d_temp = osoba[k].zarobki;
- osoba[k].zarobki = osoba[k+1].zarobki;
- osoba[k+1].zarobki = d_temp;
- }
- else if(osoba[k+1].zarobki == osoba[k].zarobki){
- if(osoba[k+1].wiek < osoba[k].wiek){
- temp = osoba[k].wiek;
- osoba[k].wiek = osoba[k+1].wiek;
- osoba[k+1].wiek = temp;
- }
- }
- }
- }
- }
- }
- }
- void sortowanieInwz(OSOBA *osoba, int i){
- int j, k;
- char swap[20];
- int temp;
- double d_temp;
- for(j = i-1; j >= 0; j--){
- for(k = 0; k < j; k++){
- if(strcmp(osoba[k+1].imie, osoba[k].imie) < 0){
- strcpy(swap, osoba[k].imie);
- strcpy(osoba[k].imie, osoba[k+1].imie);
- strcpy(osoba[k+1].imie, swap);
- }
- else if(strcmp(osoba[k+1].imie, osoba[k].imie) == 0){
- if(strcmp(osoba[k+1].nazwisko, osoba[k].nazwisko) < 0){
- strcpy(swap, osoba[k].nazwisko);
- strcpy(osoba[k].nazwisko, osoba[k+1].nazwisko);
- strcpy(osoba[k+1].nazwisko, swap);
- }
- else if(strcmp(osoba[k+1].nazwisko, osoba[k].nazwisko) == 0){
- if(osoba[k+1].wiek < osoba[k].wiek){
- temp = osoba[k].wiek;
- osoba[k].wiek = osoba[k+1].wiek;
- osoba[k+1].wiek = temp;
- }
- else if(osoba[k+1].wiek == osoba[k].wiek){
- if(osoba[k+1].zarobki < osoba[k].zarobki){
- d_temp = osoba[k].zarobki;
- osoba[k].zarobki = osoba[k+1].zarobki;
- osoba[k+1].zarobki = d_temp;
- }
- }
- }
- }
- }
- }
- }
- void sortowanieWniz(OSOBA *osoba, int i){
- int j, k;
- char swap[20];
- int temp;
- double d_temp;
- for(j = i-1; j >= 0; j--){
- for(k = 0; k < j; k++){
- if(osoba[k+1].wiek < osoba[k].wiek){
- temp = osoba[k].wiek;
- osoba[k].wiek = osoba[k+1].wiek;
- osoba[k+1].wiek = temp;
- }
- else if(osoba[k+1].wiek == osoba[k].wiek){
- if(strcmp(osoba[k+1].nazwisko, osoba[k].nazwisko) < 0){
- strcpy(swap, osoba[k].nazwisko);
- strcpy(osoba[k].nazwisko, osoba[k+1].nazwisko);
- strcpy(osoba[k+1].nazwisko, swap);
- }
- else if(strcmp(osoba[k+1].nazwisko, osoba[k].nazwisko) == 0){
- if(strcmp(osoba[k+1].imie, osoba[k].imie) < 0){
- strcpy(swap, osoba[k].imie);
- strcpy(osoba[k].imie, osoba[k+1].imie);
- strcpy(osoba[k+1].imie, swap);
- }
- else if(strcmp(osoba[k+1].imie, osoba[k].imie) == 0){
- if(osoba[k+1].zarobki < osoba[k].zarobki){
- d_temp = osoba[k].zarobki;
- osoba[k].zarobki = osoba[k+1].zarobki;
- osoba[k+1].zarobki = d_temp;
- }
- }
- }
- }
- }
- }
- }
- void sortowanieZniw(OSOBA *osoba, int i){
- int j, k;
- char swap[20];
- int temp;
- double d_temp;
- for(j = i-1; j >= 0; j--){
- for(k = 0; k < j; k++){
- if(osoba[k+1].zarobki < osoba[k].zarobki){
- d_temp = osoba[k].zarobki;
- osoba[k].zarobki = osoba[k+1].zarobki;
- osoba[k+1].zarobki = d_temp;
- }
- else if(osoba[k+1].zarobki == osoba[k].zarobki){
- if(strcmp(osoba[k+1].nazwisko, osoba[k].nazwisko) < 0){
- strcpy(swap, osoba[k].nazwisko);
- strcpy(osoba[k].nazwisko, osoba[k+1].nazwisko);
- strcpy(osoba[k+1].nazwisko, swap);
- }
- else if(strcmp(osoba[k+1].nazwisko, osoba[k].nazwisko) == 0){
- if(strcmp(osoba[k+1].imie, osoba[k].imie) < 0){
- strcpy(swap, osoba[k].imie);
- strcpy(osoba[k].imie, osoba[k+1].imie);
- strcpy(osoba[k+1].imie, swap);
- }
- else if(strcmp(osoba[k+1].imie, osoba[k].imie) == 0){
- if(osoba[k+1].wiek < osoba[k].wiek){
- temp = osoba[k].wiek;
- osoba[k].wiek = osoba[k+1].wiek;
- osoba[k+1].wiek = temp;
- }
- }
- }
- }
- }
- }
- }
- int main(int argc, char *argv[]){
- OSOBA osoba[50];
- FILE *fin=fopen("plik_zrodlowy.txt","r");
- int i = 0;
- if(!fin){
- printf("Error opening file..\n");
- exit(0);
- }
- else{
- printf("\nCollecting data..\n");
- while(fscanf(fin, "%s %s %d %lf", osoba[i].imie, osoba[i].nazwisko, &osoba[i].wiek, &osoba[i].zarobki)==4){
- i++;
- }
- printf("\nData collected!\n");
- fclose(fin);
- }
- int liczba;
- do{
- printf("Wybierz co chcesz zrobic, wpisujac cyfre/cyfre oraz litere, znajduja sie one przed danym wyborem.\n"
- "1. Wypisz dane w postaci tabelki.\n"
- "2. Sortuj dane wedlug:\n"
- "a) nazwisko-imie-wiek-zarobki,\n"
- "b) imie-nazwisko-wiek-zarobki,\n"
- "c) wiek-nazwisko-imie-zarobki,\n"
- "d) zarobki-nazwisko-imie-wiek.\n"
- "3. Dodaj osobe do bazy.\n"
- "4. Usun osobe z bazy.\n"
- "5. Zapisz dane do pliku.\n"
- "6. Koniec programu.\n");
- scanf("%d", &liczba);
- switch(liczba){
- case 1: // printuj dane
- printOut(osoba, i);
- break;
- case 2: // o ktore sortowanie chodzi?
- printf("Ktory sposob posortowanie preferujesz?\n");
- char litera;
- scanf(" %c", &litera);
- if(litera == 'a') sortowanieNizw(osoba, i);
- if(litera == 'b') sortowanieInwz(osoba, i);
- if(litera == 'c') sortowanieWniz(osoba, i);
- if(litera == 'd') sortowanieZniw(osoba, i);
- break;
- case 3: // dodaj do bazy
- printf("\nZdecydowales sie dodac osobe do bazy danych. Wpisz kolejno jej atrybuty.\n");
- appendToData(osoba, &i);
- break;
- case 4: // usun z bazy
- printf("\nZdecydowales sie usunac osobe z bazy. Ktora z kolei osob chcesz wykasowac z bazy?\n");
- deleteSelected(osoba, i);
- break;
- case 5: // zapis do pliku
- printf("\nWybrales zapis do pliku \"plik_docelowy.txt\"\n");
- saveToFile(osoba, i);
- break;
- case 6:
- continue;
- default:
- printf("Prosze sprobowac ponownie!\n");
- break;
- }
- }while(liczba != 6);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement