Вывести список книг на экран, упорядочив по количеству страниц в книге - 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; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д