Задать вопрос

Табличный редактор на Си. Не правильный вывод?

Решил сделать более серьезный проект на Си который был бы хотя бы полезным. Начальный уровень владения языком Си есть ,но почему то программа не корректно работает. Помогите пожалуйста.
Есть задача вот условия https://server.179.ru/tasks/olymp/041.html
Вот мое решение
// Табличный редактор.
#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;
}

Можете помочь? Заранее спасибо всем кто пытается помочь.
  • Вопрос задан
  • 345 просмотров
Подписаться 1 Оценить 3 комментария
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы