Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*Napisati kod koji za zadane podatke studenata (matični broj, ime i prezime) pravi hash tablicu sa zasebnim redovima.
- Tablica ima 11 mjesta, a funkcija za preslikavanje ključ računa da se zbraja ASCII vrijednost prvih pet slova
- prezimena i zatim računa ostatak cjelobrojnog dijeljenja te vrijednosti s veličinom tablice.
- Studenti s istim ključem se pohranjuju u vezanu listu sortiranu po prezimenima i imenima.
- Kada se tablica izgradi treba ispisati cijelu tablicu (naglasiti na kojem ključu se nalaze koji podaci),
- te ponuditi mogućnostda se za određenog studenta (prezime i ime) ispiše njegov matični broj.*/
- #define _CRT_SECURE_NO_WARNINGS
- #define MAXNAME 50
- #define TableSize 11
- #include<stdio.h>
- #include<errno.h>
- #include<string.h>
- #include<stdlib.h>
- #include<ctype.h>
- #include <stdbool.h>
- typedef struct Student;
- typedef struct Student* Pointer_Student;
- struct Student
- {
- char First_Name[MAXNAME];
- char Last_Name[MAXNAME];
- int Number;
- Pointer_Student Next;
- };
- //Funkcije
- //ClearScren
- void clrscr()
- {
- system("@cls||clear");
- }
- int Key(char *LastName);
- void menu();
- //Funkcija za unos podataka u tablicu
- int Input(Pointer_Student [],char[], char[], int);
- int main()
- {
- Pointer_Student Table[TableSize];
- for (int i = 0; i < TableSize; i++)
- {
- Table[i] = malloc(sizeof(struct Student));
- Table[i]->Next = NULL;
- }
- bool Condition = true;
- int x = 99,IdNumber=0;
- char FirtName[MAXNAME], LastName[MAXNAME];
- while (Condition == true)
- {
- //Dodaj Clearscreen ovde
- menu();
- scanf(" %d", &x);
- if (1 == x)
- {
- printf("Unesi ime studenta:\n");
- scanf(" %s", FirtName);
- printf("Unesi prezime studenta:\n");
- scanf(" %s", LastName);
- printf("Unesi maticni broj studenta:\n");
- scanf(" %d", &IdNumber);
- Input(Table,&FirtName,&LastName,IdNumber);
- }
- else if (2 == x)
- {
- Print_Table(Table);
- }
- else if (x == 9)
- {
- Condition = false;
- }
- }
- getchar();
- getchar();
- return 1;
- }
- int Key(char * LastName)
- {
- int key = 11;
- char letters[5];
- int i = 0,sum=0;
- while (LastName[i]!='\0'&&i<5)
- {
- letters[i] = LastName[i];
- sum = sum + letters[i];
- i++;
- }
- key = sum % TableSize;
- return key;
- }
- void menu()
- {
- printf("Odaberi sta oces:\n");
- printf("Dodaj studenta: 1\n");
- printf("Ispisi tablicu: 2\n");
- printf("Izadji: 9\n");
- }
- int Input(Pointer_Student Tablica[], char FirstName[], char LastName[], int IdNumber)
- {
- int i = Key(LastName);
- Pointer_Student Row = Tablica[i];
- while ((Row->Next != NULL) && (strcmp(Row->Last_Name, LastName) < 0))
- Row = Row->Next;
- Pointer_Student q = (Pointer_Student)malloc(sizeof(struct Student));
- q->Number = IdNumber;
- strcpy(q->First_Name, FirstName);
- strcpy(q->Last_Name, LastName);
- q->Next = Row->Next;
- Row->Next = q;
- return 0;
- }
- int Print_Table(Pointer_Student Tablica[])
- {
- for (int i = 0; i < TableSize; i++)
- {
- printf("\n %d. red tablice:\n",i);
- Pointer_Student Row = Tablica[i];
- while(Row->Next != NULL)
- {
- printf("\nIme: %s \nPrezime: %s \nMaticni broj: %d", Row->First_Name, Row->Last_Name, Row->Number);
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement