powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Пустые строки
17 сообщений из 17, страница 1 из 1
Пустые строки
    #34626454
serakuz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!!!
Это задачка из учебника, нужно удолять пустые строки:
Код: cpp
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
#include <stdio.h>
#include <conio.h>
main()
{
  clrscr();
  int c, i = 0;
  while ((c = getchar()) != EOF)
  {
    if (c =='\n')
    {
      if (i == 1)
      {
	putchar('\n');
	++i;
      }
    }
    else
    {
      putchar(c);
      i = 0;
    }
  }
  getchar();
}


Подскажите что нитак?
...
Рейтинг: 0 / 0
Пустые строки
    #34626486
ErV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
serakuz wrote:

> Подскажите что нитак?
Для чего переменная i? она всегда будет равна нулю.
Проще
Код: plaintext
1.
2.
if ((c != '\n')&&(c != '\r'))//для Win32.
        putchar(c);
А ещё лучше использовать fgets.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Пустые строки
    #34626532
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
serakuzЗдравствуйте!!!
Это задачка из учебника, нужно удолять пустые строки:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
#include <stdio.h>
#include <conio.h>
main()
{
  clrscr();
  int c, i =  0 ;
  while ((c = getchar()) != EOF)
  {
    if (c =='\n')
    {
      if (i ==  1 )
      {
	putchar('\n');
	++i;
      }
    }
    else
    {
      putchar(c);
      i =  0 ;
    }
  }
  getchar();
}

Подскажите что нитак?

Я бы выводил перенос строки, если i==0, а после этого устанавливал i в 1 (инициализировать i надо тоже в 1). А здесь сравнение i==1 мне вообще не понятно.
...
Рейтинг: 0 / 0
Пустые строки
    #34626751
serakuz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
#include <stdio.h>
#include <conio.h>
main()
{
clrscr();
int c, i = 1;
while ((c = getchar()) != EOF)
{
if (c =='\n')
{
if (i == 0)
{
putchar(c);
i++;
}
}
else
{
putchar(c);
i = 1;
}

}
getchar();
}
Все равно при нажатии на Ентер переходит на новую строку
...
Рейтинг: 0 / 0
Пустые строки
    #34626865
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
serakuzВсе равно при нажатии на Ентер переходит на новую строку

После вывода интера установить в 1 .

Т.е. 1 это значит, что только что выводили \n, 0 - только что выводили символ. Поэтому при получении \n, проверяем, если выводили символ, то выводим \n и ставим флаг в 1, если выводили \n, то ничего не делаем. При получении ! \n, ничего не проверяем, просто выводим символ, и отмечаем, что только что выводили символ.

Ну, а теперь запрограммируй это. ;)
...
Рейтинг: 0 / 0
Пустые строки
    #34626877
Tubrik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что она должна делать?
...
Рейтинг: 0 / 0
Пустые строки
    #34626988
serakuz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Это задача с учебника:
Напишите программу, которая будет в каждой вводимой строке заменять стоящие подряд символы пробелов и табуляций на один пробел и удалять пустые строки.
с пробелами и с табуляцией мне все понятно но с пустыми строками тупик.
...
Рейтинг: 0 / 0
Пустые строки
    #34627071
Tubrik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
serakuzЭто задача с учебника:
Напишите программу, которая будет в каждой вводимой строке заменять стоящие подряд символы пробелов и табуляций на один пробел и удалять пустые строки.
с пробелами и с табуляцией мне все понятно но с пустыми строками тупик.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
	char	str[ 256 ];
	char	res[ 256 ];
	char	*ptr_res;	// устанавливаю указатель на res
	bool	bl_space;
	size_t	len;

	while (true)
	{
		ptr_res = res;
		printf("\nInput next string (empty string for exit):\n");
		fgets(str,  256 , stdin);	// читает строку контролируя ее дину (чтобы не выйти за размер массива) вместе с '\n'
		
		len = strlen(str);
		str[len--] = '\0';	// убираю символ '\n'
			
		if ( 0  == len)
		{
			break;	// ввели пустую строку ЗДЕСЬ МОЖЕШЬ СДЕЛАТЬ ВСЕ ЧТО ХОЧЕШЬ С ПУСТОЙ СТРОКОЙ
		}// if

		bl_space = false;

		for (size_t i =  0 ; i < len; i++)
		{
			if ( isspace(str[i]) )
			{
				if (!bl_space)// если пробела небыло, то ставлю его
					*ptr_res++ = ' '; 
				
				bl_space = true;	// поднимаю флаг - последний добавленный символ - пробел
			}
			else
			{
				*ptr_res++ = str[i];
				bl_space = false;	// был обычный символ - флаг опущен
			}
		}// for
		

		*ptr_res = '\0'; // конец строки
		printf("\nResult = '%s'\n", res);
	}// while
...
Рейтинг: 0 / 0
Пустые строки
    #34627112
serakuz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Пустые строки
    #34627117
serakuz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пардон эта задача из первой главы.
Я таких высот пока непонимайт.
...
Рейтинг: 0 / 0
Пустые строки
    #34627124
Tubrik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
serakuzПардон эта задача из первой главы.
Я таких высот пока непонимайт.

каких высот? ты си уже полгода изучаешь
...
Рейтинг: 0 / 0
Пустые строки
    #34627137
Tubrik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
	char	str[ 256 ];
	char	res[ 256 ];
	//char	*ptr_res;	// устанавливаю указатель на res -  ВЫСОТЫ БОЛЬШЕ НЕТ
	bool	bl_space;
	size_t	len;

	while (true)
	{
		printf("\nInput next string (empty string for exit):\n");
		fgets(str,  256 , stdin);	// читает строку контролируя ее дину (чтобы не выйти за размер массива) вместе с '\n'
		
		len = strlen(str);
		str[len--] = '\0';	// убираю символ '\n'
			
		if ( 0  == len)
		{
			break;	// ввели пустую строку ЗДЕСЬ МОЖЕШЬ СДЕЛАТЬ ВСЕ ЧТО ХОЧЕШЬ С ПУСТОЙ СТРОКОЙ
		}// if

		bl_space = false;
		int	j =  0 ;

		for (size_t i =  0 ; i < len; i++)
		{
			if ( isspace(str[i]) )
			{
				if (!bl_space)// если пробела небыло, то ставлю его
					res[j++] = ' '; 
				
				bl_space = true;	// поднимаю флаг - последний добавленный символ - пробел
			}
			else
			{
				res[j++] = str[i];
				bl_space = false;	// был обычный символ - флаг опущен
			}
		}// for
		

		res[j++] = '\0'; // конец строки
		printf("\nResult = '%s'\n", res);
	}// while
...
Рейтинг: 0 / 0
Пустые строки
    #34627141
ErV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
serakuz wrote:

> Я таких высот пока непонимайт.
Нету там "высот".
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Пустые строки
    #34627172
serakuz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
все нужно на Turbo C.
...
Рейтинг: 0 / 0
Пустые строки
    #34627183
Tubrik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
serakuzвсе нужно на Turbo C.

а что тут не из турбо си?

может разве что тип bool, я не помню, тогда молча поменяй

bool bl_space; на int bl_space;

false на 0, а true на 1

и тип size_t на int, если он тебе не нравится

готовое уже даешь, а ему телодвижение лень совершить
...
Рейтинг: 0 / 0
Пустые строки
    #34627236
serakuz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВСЕ работает ОК!
Большое спасибо.
...
Рейтинг: 0 / 0
Пустые строки
    #34627719
grieg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Этот учебник устарел, лучше купи новый.

Код: plaintext
1.
#include <stdio.h>
Это ввод-выво в стиле Си. В С++ есть еще ввод/вывод через cin/cout. Полагаю, что опускаться до Сишнойго стиля без особой необходимости не стоит.

Код: plaintext
1.
#include <conio.h>
Это заголовок, который есть в ДОСе, а больше, думаю, нигде нет.

Код: plaintext
1.
main()
Это устаревший прототип main. Современные компиляторы скажут, что здесь ошибка.

В общем, потом придется переучиваться.
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Пустые строки
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]