Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- #include<stdlib.h>
- #include<string.h>
- #include<ctype.h>
- #define MAX 255
- #define MAXNEV 50
- typedef struct Lista {
- char NEV[MAX + 1];
- int KOR;
- struct Lista *KOV;
- } Listaelem;
- int getline(char s[], int lim);
- int betuE(char s[]);
- int jonev(char s[]);
- int szame(char s[], int alap);
- void elsoelem(Listaelem* ELSO, char nev[], int kor);
- Listaelem* hozzaad(Listaelem* ELSO, char nev[], int kor);
- void main() {
- Listaelem *ELSO;
- char NEVINP[MAX + 1] = "";
- char KORINP[MAX + 1] = "";
- int ok1 = 0;
- int ok2 = 0;
- int sorsz = 0;
- int kor1 = 0;
- ELSO = NULL;
- do {
- printf("Kerem adja meg a %d. nevet: ", sorsz + 1);
- if (!getline(NEVINP, MAX)) {
- printf("\nBeolvasas vege.\n");
- ok1 = 1;
- }
- else if (strlen(NEVINP) > 50)
- printf("A nev max 50 karakter hosszu lehet!\n");
- //else if (!betuE(NEVINP))
- // printf("A bemenet csak betuket es szokozt tartalmazhat!\n");
- else if (!jonev(NEVINP))
- printf("A nev formatuma hibas!\n");
- else
- do {
- printf("Kerem adja meg a %d. nevhez tartozo eletkort: ", sorsz + 1);
- if (!getline(KORINP, MAX)) {
- printf("Bekeres vege.\n");
- ok2 = 1;
- ok1 = 1;
- }
- else if (!szame(KORINP, 10))
- printf("A kor csak szam lehet!\n");
- else if ((kor1 = atoi(KORINP)) < 0)
- printf("Az eletkor 0-nal nagyobb kell, hogy legyen!\n");
- else {
- ELSO = hozzaad(ELSO, NEVINP, kor1);
- sorsz++;
- break;
- }
- } while (!ok2);
- } while (!ok1);
- printf("Siker.");
- //teszt, hogy lefusson kell 3 személy legalább
- //másként crashelni fog, de ha van 3 személy akkor legalább látni jó-e a listába illesztés
- if (ELSO != NULL) {
- printf("\n1. %s\t%d\n", ELSO->NEV, ELSO->KOR);
- printf("2. %s\t%d\n", ELSO->KOV->NEV, ELSO->KOV->KOR);
- printf("3. %s\t%d\n", ELSO->KOV->KOV->NEV, ELSO->KOV->KOV->KOR);
- }
- if (ELSO != NULL) {
- //ekkor van tuti 1 elem, lehet törölni a listát
- }
- getchar();
- }
- int getline(char s[], int lim)
- {
- int c, i;
- for (i = 0; i < lim && (c = getchar()) != '\n' && c != EOF; i++)
- s[i] = c;
- s[i] = '\0';
- while (c != '\n' && c != EOF)
- c = getchar();
- return i;
- }
- int betuE(char s[]) {
- int i;
- for (i = 0; s[i] != '\0'; ++i)
- if (!((s[i] >= 'a' && s[i] <= 'z') || (s[i] >= 'A' && s[i] <= 'Z')))
- return 0;
- return 1;
- }
- int jonev(char s[]) {
- int i = 0;
- for (i; s[i]; i++) if (!(isalpha(s[i]) || isspace(s[i]))) return 0; //hogy ne engedjen be betut
- i = 0;
- int szokoz = 0;
- int eszokoz = -1;
- if (!isupper(s[0]))
- return 0;
- while (s[i] != ' ')
- i++;
- eszokoz = i;
- szokoz++;
- while (s[i] != '\0') {
- if (s[i] == ' ')
- szokoz++;
- i++;
- }
- if (szokoz != 1 && !isupper(s[eszokoz + 1]))
- return 0;
- else
- return 1;
- }
- int szame(char s[], int alap) { //s string ALAP alapú szám-e?
- int i = 0;
- while (s[i] == ' ' || s[i] == '\n' || s[i] == '\t')
- ++i; //return 0 hozzáadásával kizárhatóak a fehér karakterek
- while (s[i] == '-' || s[i] == '+')
- ++i;
- for (; s[i] != 0; ++i)
- if (!(s[i] >= '0' && s[i] <= alap - 1 + '0'))
- return 0;
- return 1; //logikai választ ad vissza
- }
- Listaelem* hozzaad(Listaelem* ELSO, char nev[], int kor) {
- Listaelem* AKT = ELSO;
- Listaelem* ELOZO = NULL;
- if (AKT == NULL) {
- printf("Elso elem hozzaadasa\n");
- Listaelem* uj = malloc(sizeof(Listaelem));
- elsoelem(uj, nev, kor);
- ELSO = uj;
- }
- else {
- while (AKT != NULL) {
- ELOZO = AKT;
- AKT = AKT->KOV;
- }
- ELOZO->KOV = (Listaelem *)malloc(sizeof(Listaelem));
- AKT = ELOZO->KOV;
- strcpy(AKT->NEV, nev);
- AKT->KOR = kor;
- AKT->KOV = NULL;
- }
- return ELSO;
- }
- void elsoelem(Listaelem* ELSO, char nev[], int kor) {
- ELSO->KOR = kor;
- strcpy(ELSO->NEV, nev);
- ELSO->KOV = NULL;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement