Не работает сортировка структур по алфавиту - 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]);
}