Submission
Status:
PPPPP
Score: 100
User: TirpitZ
Problemset: ชั้นหนังสือ
Language: c
Time: 0.051 second
Submitted On: 2024-09-27 21:48:04
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct novel
{ int num;
char name[31]; };
struct out
{ char name[31]; };
int main()
{
int high,nofn;
scanf("%d %d",&high,&nofn);
struct novel book[nofn]; //tell the variable type 'novel' name variable is 'book'
for(int i=0;i<nofn;i++) //loop for scan name book& numbook :)
{ scanf("%d",&book[i].num);
scanf("%s",&book[i].name); }
//gets(book[i].name); }
/*for(int i=0;i<nofn;i++)
{ printf("%s %d\n",book[i].name, book[i].num); }
*/
char tempname[31];
int tempnum;
int k=0;
int sum=0;
char temp1,temp2;
int tot_book=0;
int num_left=0;
int swap; // 0 = ไม่ต้อง swap , 1 = ต้อง swap
for(int i=0;i<nofn;i++)
{
for(int k=i+1;k<nofn;k++) //ไล่หนังสือที่...
{ swap= 1;
for(int p=0;p<31;p++)
{
temp1=book[i].name[p];
temp2=book[k].name[p];
//printf("%d %d book[i] = %c %d : book[k] = %c %d\n",i,k,temp1,temp1,temp2,temp2);
if(temp1<temp2) { swap=0; break; } // ไม่ต้อง swap
if(temp1>temp2) break; // ต้อง swap
// ถ้าเท่ากัน ก็ต้อง check ตัว char ที่ p ถัดไป
// ASC of '\0' = 0 so ถ้าจบคำก่อน ก็จะน้อยกว่าเสมอ
}
if(swap==1)
{ //printf("swap\n");
strcpy(tempname,book[i].name);
strcpy(book[i].name,book[k].name);
strcpy(book[k].name,tempname);
tempnum=book[i].num;
book[i].num=book[k].num;
book[k].num=tempnum; }
}
/*printf("%d :\n",i);
for(int r=0;r<nofn;r++) { printf("%s %d\n",book[r].name, book[r].num); } */
}
/* for(int i=0;i<nofn;i++)
{
printf("%s %d\n",book[i].name, book[i].num);
}*/
for(int i=0;i<nofn;i++)
{
tot_book=tot_book+book[i].num;
}
//printf("%d",tot_book);
struct out disp[tot_book];
k=0; num_left=book[k].num;
for(int i=0;i<tot_book;i++)
{
strcpy(disp[i].name,book[k].name);
num_left=num_left-1;
if(num_left==0)
{ k++; num_left=book[k].num; }
}
char temp[high+1];
int len;
for(int i=0;i< tot_book;i++)
{
len=strlen(disp[i].name);
if(i%2==0)
{
for(int p=len;p<high;p++)
{
disp[i].name[p]='.';
}
}
else
{
strcpy(temp,disp[i].name);
for(int p=0;p<high-len;p++)
{
disp[i].name[p]='.';
}
for(int p=high-len;p<high;p++)
{
disp[i].name[p]=temp[high-p-1];
}
}
}
//for(int i=0;i<tot_book;i++) printf("%d:{%s}\n",i,disp[i].name);
printf("+");
for(int i=0;i<tot_book;i++) printf("-+");
printf("\n");
for(int i=0;i<high;i++)
{
printf("|");
for(int k=0;k<tot_book;k++) { printf("%c|",disp[k].name[i]); }
printf("\n");
}
printf("+");
for(int i=0;i<tot_book;i++) printf("-+");
}