Не работает сортировка структур по алфавиту - 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]);
}
Вот моя програмка, смысл её такой: Вводим данные о сотрудниках, и мне должны отсортироваться адреса(названия улиц, номер дома и квартиры). И вот почему-то ошибки, в void list()

Решение задачи: «Не работает сортировка структур по алфавиту»

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]);
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 3.846 из 5
Похожие ответы