Вывести список книг на экран, упорядочив по количеству страниц в книге - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Нашёл задачу похожую на мне нужную, только эта круче, пытался убрать не нужное, но никак не получается,задание просто вывести список книг на экран, упорядочив по количеству страниц в книге. Как убрать год и не нужное фио??
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
int main(int argc, char *argv[])
{
    int n;
    printf("Vvedite kol-vo zapisei : ");
    scanf("%d",&n);
    fflush(stdin);
    
    typedef struct { 
        char fio[15], nazv[20];   
        unsigned god,kol_str;  
        } kniga;
kniga zap[n];
kniga t;
unsigned i=0;
    while (1){
int i2;
puts ("[FIO] [nazvanie knigi] [god izdaniya] [kol-vo stranic]");
char s[80],str[80]="";
    gets (s);
 if (s[0]=='"')
        {   i2=1;
            int i3=0;
            while (s[i2]!='"')
            {str[i3]=s[i2];
            i2++;
            i3++;
            }}
else 
        {   i2=0;
            int i3=0;
            while (s[i2]!=' ')
            {str[i3]=s[i2];
            i2++;
            i3++;
            }}
strcpy (zap[i].fio,str);
if (s[0]=='"') i2+=2;
else i2++;
char str2[80]="";
        if (s[i2]=='"')
        {   i2++;
            int i3=0;
            while (s[i2]!='"')
            {str2[i3]=s[i2];
            i2++;
            i3++;
            }}
else 
        {   int i3=0;
            while (s[i2]!=' ')
            {str2[i3]=s[i2];
            i2++;
            i3++;
            }}
strcpy (zap[i].nazv,str2);
if (s[i2]=='"') i2+=2;
else i2++;
char str3[5]="";
            {int i3=0;
            while (s[i2]!=' ')
            {str3[i3]=s[i2];
            i2++;
            i3++;
        }   zap[i].god=atoi (str3);
        }
i2++;
char str4[5]="";
        {int i3=0;
            while (s[i2]!=0)
            {str4[i3]=s[i2];
            i2++;
            i3++;
        }zap[i].kol_str=atoi (str4);
        }
 
        if (i+1==n) break;
    else i++;
            }
while (1){
unsigned flag=0;
        puts ("1-Sortirovka po ubivaniyu");
puts ("2-Sortirovka po vozrastaniyu");
puts ("3-exit");
unsigned a=0;
    scanf ("%u",&a);
    fflush (stdin);
    i=0;
switch (a)
    {case 1: {for (;i<n;i++)
            for (int j=1;j<n;j++)
            if (zap[j].god>zap[j-1].god)
        {t=zap[j];
        zap[j]=zap[j-1];
        zap[j-1]=t;}
        break;}
        
    case 2:  {for (;i<n;i++)
            for (int j=1;j<n;j++)
            if (zap[j].god<zap[j-1].god)
        {t=zap[j];
        zap[j]=zap[j-1];
        zap[j-1]=t;}
        break;}
        
    case 3: flag=1;}
if (flag) return 0;
i=1;
    flag=1;
while (flag){
flag=0;
i=0;
    for (;i<n;i++)
            if (zap[i].god==zap[i-1].god)
            {int m=0;
                while (1)
                if (zap[i].fio[m]==zap[i-1].fio[m])
                    m++;
                else if (zap[i].fio[m]<zap[i-1].fio[m])
                        {t=zap[i];
                        zap[i]=zap[i-1];
                        zap[i-1]=t;
                        flag=1;
                        break;}
                else break;         
                }}
i=0;        
        puts ("__________________________________________");
    for (;i<n;i++)
printf ("%s  %s  %d  %d\n",zap[i].fio,zap[i].nazv,zap[i].god,zap[i].kol_str);
fflush (stdin);
puts ("__________________________________________");
printf ("\n");
printf ("\n");
printf ("\n");
        }
return 0;
}

Решение задачи: «Вывести список книг на экран, упорядочив по количеству страниц в книге»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
int main(int argc, char *argv[])
{
    int n;
    printf("Vvedite kol-vo zapisei : ");
    scanf("%d",&n);
    fflush(stdin);
    
    typedef struct { 
        char nazv[20];   
        unsigned god;  
        } kniga;
kniga zap[n];
kniga t;
unsigned i=0;
    while (1){
int i2;
puts ("[nazvanie knigi] [kol-vo stranic] [god izdaniya] ");
char s[80];
    gets (s);
 
 
 
if (s[i2]=='"') i2+=2;
else i2++;
char str3[5]="";
            {int i3=0;
            while (s[i2]!=' ')
            {str3[i3]=s[i2];
            i2++;
            i3++;
        }   zap[i].god=atoi (str3);
        }
i2++;
char str4[5]="";
        {int i3=0;
            while (s[i2]!=0)
            {str4[i3]=s[i2];
            i2++;
            i3++;
        }
        }
 
        if (i+1==n) break;
    else i++;
            }
while (1){
unsigned flag=0;
        puts ("1-Sortirovka po ubivaniyu");
puts ("2-Sortirovka po vozrastaniyu");
puts ("3-exit");
unsigned a=0;
    scanf ("%u",&a);
    fflush (stdin);
    i=0;
switch (a)
    {case 1: {for (;i<n;i++)
            for (int j=1;j<n;j++)
            if (zap[j].god>zap[j-1].god)
        {t=zap[j];
        zap[j]=zap[j-1];
        zap[j-1]=t;}
        break;}
        
    case 2:  {for (;i<n;i++)
            for (int j=1;j<n;j++)
            if (zap[j].god<zap[j-1].god)
        {t=zap[j];
        zap[j]=zap[j-1];
        zap[j-1]=t;}
        break;}
        
    case 3: flag=1;}
if (flag) return 0;
i=1;
    flag=1;
while (flag){
flag=0;
i=0;
    for (;i<n;i++)
            if (zap[i].god==zap[i-1].god)
            {int m=0;
                }}
i=0;        
        puts ("<br>");
    for (;i<n;i++)
printf ("%s  %d  %d\n",zap[i].nazv,zap[i].god,zap[i]);
fflush (stdin);
puts ("<br>");
printf ("\n");
printf ("\n");
 
        }
return 0;
}

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


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

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

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