Answer the question
In order to leave comments, you need to log in
Spreadsheet editor in C. Wrong conclusion?
I decided to make a more serious C project that would at least be useful. There is an initial level of proficiency in the C language, but for some reason the program does not work correctly. Help me please.
There is a task, here are the conditions https://server.179.ru/tasks/olymp/041.html
Here is my solution
// Табличный редактор.
#include <stdio.h>
#define MAX 100
#define LEN 256
int main()
{
register int t, i, j;
int size, k, n, max_size_column[255], e;
char text[MAX][LEN];
// Ввод отредактированной таблицы пока не введется пустая строка.
for(t=0; t<MAX; t++) {
gets(text[t]);
if(!*text[t]) break;
}
// Находим кол-во столбцов.
for(j=0; text[0][j]; j++)
if(text[0][j]=='+') n++;
n=n-1;
// Заполняем массив наибольших значений минимально возможным числом.
for(k=0; k<n; k++)
max_size_column[k]=0;
k=0;
// Находим максимальное кол-во символов в каждом столбце.
for(i=0; i<t; i++)
for(j=0; text[i][j]; j++) {
if(text[i][0]=='|') {
if(text[i][j]!='|' && text[i][j]!=' ') size++;
if(text[i][j]=='|' && j!=0) {
if(max_size_column[k]<size) max_size_column[k]=size;
size=0;
k++;
if(k==n) k=0;
}
}
}
// Тест. Вывод максимального значения в каждом столбце.
//for(k=0; k<n; k++)
// printf("%d\t", max_size_column[k]);
//printf("\n");
// Вывод отформатированной таблицы.
for(i=0; i<t; i++) {
// Вывод строк оформления.
if(text[i][0]=='+') {
printf("+-");
for(e=1; e<=max_size_column[k]; e++) {
printf("-");
if(e==max_size_column[k]) {
e=0;
k++;
k==n ? printf("-+\n") : printf("-+-");
}
}
k=0;
}
// Вывод строк с символами.
if(text[i][0]=='|') {
printf("|1");
for(e=1, j=1; e<=max_size_column[k]; e++) {
if(text[i][j]!='|' && text[i][j]!=' ')
putchar(text[i][j]);
j++;
if(text[i][j]=='|' && e<max_size_column[k]) {
while(e!=max_size_column[k]) {
printf(" ");
e++;
}
}
if(e==max_size_column[k]) {
e=0;
k++;
if(k!=n) printf(" | ");
if(k==n) {
printf(" |\n");
break;
}
}
if(text[i][j]=='|' || text[i][j]==' ') {
e--;
j++;
}
}
k=0;
}
}
return 0;
}
Answer the question
In order to leave comments, you need to log in
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question