Показать сообщение отдельно

  #1209  
Старый 16.06.2008, 20:20
Delimiter
Banned
Регистрация: 08.04.2005
Сообщений: 446
С нами: 11099536

Репутация: 518
По умолчанию

почему ты не даешь циклу нормально работать???

Вывод результатов нужно делать ПОСЛЕ работы цикла! А иначе получается ты пытаешься
выводить каждый раз когда нажимаешь Enter, как же в таком случае ты посчитаешь сколько раз он нажат. Если его не нужно считать и он должен завершать ввод, то просто

for(i=0;(array[i]=(char )getchar())!='\n';i++)

и внизу в цикле не нужно ничего пихать в массив(вместо табуляции), только считай повторы
поскольку ты пихаешь каждый символ уже

for(i=0;(array[i]=(char )getchar())!='\n';i++)
тут_______/

и это чего должно делать?
Код:
			for (z=0; z<i; ++z) 
                        {
				if (array[z] == ' ')
                                {
					printf(" _\n");
				}
				else {
					printf("| |\n");
				}
			}
если это гистограмма то почему ты не используешь уже вычесленные n,space,t?
загоняй в for
типа
Код:
 for(i=0;i<space;i++)
   printf('=');
 printf("\r\n");
одна линейка готова


Если же ты хочешь выходить все таки по EOF то...
Код:
#include <stdio.h>
/*program for copy input string to output string, in this programm here 
	edit symbol tab and backspace for input \\ */
main()
{
	int c, t, space, n, i, l, z, h;
	char array[100], nl;
	c = t = space = n = 0;
	
	
	for (i = 0; i < 100; ++i) {
		array[i] = 0;
	}
	nl = '\\';
	for(i=0;(array[i]=(char )getchar())!=EOF;i++)
	{
		if(array[i]=='\t') {
			array[i]=nl;  \\ непонятная замена
			++t; 
		}
		if(array[i]=='\b') {
			array[i]=nl; \\ непонятная замена
		}
		if(array[i]>='0' && array[i]<='9') {
			n++; 
		}
		if(array[i]==' ') {
			space++; 
		}
		if(array[i]=='\n') {
			array[i] = 0;
			printf(" _\n");

	                for(z=0;z<space;z++)
                          printf('=');
                        printf("spaces\r\n");

	                for(z=0;z<n;z++)
                          printf('=');
                        printf("numbers\r\n");

	                for(z=0;z<t;z++)
                          printf('=');
                        printf("tabs\r\n");

			   printf("\nSymbol:%s\r\n", array); 
			   printf("\nTab:%d\r\n", t);
			   printf("\nSpace:%d\r\n", space);
			   printf("\nNumber:%d\r\n", n);
                       
                        // и главное сбрасывай счетчик i
                        // иначе в твоем исполнении опасно!!!
                        i=0; //!!!!!!!!!!!!!!!!!!!!!!!

                        // хотя этот break тебе и не даст 8)))
                        // но УЧИСЬ сбрасывать счетчики чтоб
                        // заработал EOF
			// break; УБИРАЕМ ЭТО!!!!
                       // получится что статистика выводится только
                       // при нажатии Ентера
                       // значит нужно снова обнулить
                       c = t = space = n = 0;
		}
	}
}

Последний раз редактировалось Delimiter; 16.06.2008 в 21:00..
 
Ответить с цитированием