Не работает сортировка структур по алфавиту - C (СИ)
Формулировка задачи:
#include <stdio.h> #include <string.h> #define LEN 4 typedef struct { struct { char fam[40]; char name[20]; char otc[25]; } fio; struct {int day, mn, yr;} date; int godpos; int money; struct { char ulica[20]; int dom, kv; } adr; } man; man sot[LEN]; void vvod(void) { int i; for(i=0; i<LEN; i++) { printf("Vvodim sotrudnika # %d\n", i+1); puts("Familia:"); scanf("%s", sot[i].fio.fam); puts("Imya:"); scanf("%s", sot[i].fio.name); puts("Otchestvo:"); scanf("%s", sot[i].fio.otc); puts("Data Rozdenia: den"); scanf("%d", &sot[i].date.day); puts("Data Rozdenia: mesyac"); scanf("%d", &sot[i].date.mn); puts("Data Rozdenia: god"); scanf("%d", &sot[i].date.yr); puts("God postupleniya v firmu:"); scanf("%d", &sot[i].godpos); puts("Razmer oklada:"); scanf("%d", &sot[i].money); puts("Adres: ulica"); scanf("%s", sot[i].adr.ulica); puts("Adres: dom"); scanf("%d", &sot[i].adr.dom); puts("Adres:kvartira"); scanf("%d", &sot[i].adr.kv); } } void list(man *z) { puts("--------------------------"); if (strcmp(z[LEN-1].adr, sot[LEN].adr) > 0) { strcpy(ulica, sot[LEN-1].adr); strcpy(sot[LEN-1].adr, sot[LEN].adr); strcpy(sot[LEN].adr, ulica); } } void main() { int i; vvod(); puts("Spisok, uporyad. po adresam\n"); list(&sot[i]); }
Решение задачи: «Не работает сортировка структур по алфавиту»
textual
Листинг программы
#include <stdio.h> #include <string.h> #define LEN 4 typedef struct { struct { char fam[40]; char name[20]; char otc[25]; } fio; struct {int day, mn, yr;} date; int godpos; int money; struct { char ulica[20]; int dom, kv; } adr; } man; man sot[LEN]; void vvod(void) { int i; for(i=0; i<LEN; i++) { printf("Vvodim sotrudnika # %d\n", i+1); /*puts("Familia:"); scanf("%s", sot[i].fio.fam); puts("Imya:"); scanf("%s", sot[i].fio.name); puts("Otchestvo:"); scanf("%s", sot[i].fio.otc); puts("Data Rozdenia: den"); scanf("%d", &sot[i].date.day); puts("Data Rozdenia: mesyac"); scanf("%d", &sot[i].date.mn); puts("Data Rozdenia: god"); scanf("%d", &sot[i].date.yr); puts("God postupleniya v firmu:"); scanf("%d", &sot[i].godpos); puts("Razmer oklada:"); scanf("%d", &sot[i].money); */ puts("Adres: ulica"); scanf("%s", sot[i].adr.ulica); puts("Adres: dom"); scanf("%d", &sot[i].adr.dom); puts("Adres:kvartira"); scanf("%d", &sot[i].adr.kv); } } void list(man *z) { int i,j,c; puts("--------------------------"); for (i=0; i<LEN; i++) { for (j=LEN-1; j>i; j--) { if (z->adr.ulica[j-1] > z->adr.ulica[j]) { c=z->adr.ulica[j-1]; z->adr.ulica[j-1]=z->adr.ulica[j]; z->adr.ulica[j]=c; } } } printf("%s\n ", z->adr.ulica); } void main() { int i; vvod(); puts("Spisok, uporyad. po adresam\n"); for (i=0; i<LEN; i++) list(&sot[i]); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д