Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
filimoncc
1 / 1 / 1
Регистрация: 02.12.2013
Сообщений: 104
#1

Дан текстовый файл. Выведите все строки, которые содержат хотя бы один пробел - C++

20.05.2014, 21:45. Просмотров 696. Ответов 12
Метки нет (Все метки)

Дан текстовый файл. Выведите все строки, которые содержат хотя бы один пробел.
Формат входных данных
Во входном файле содержиться текст, состоящий из латинских букв, цифр, знаков препинания, пробелов и переводов строк.
Текст содержит хотя бы одну строку.
Длина каждой строки не превосходит 100 симвлов, количество строк в тексте не более 100.
Формат выходных данных
В выходной файл выведите все строки, содержащие хотя бы один пробел. Строки выводите в порядке их следования во входном файле.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <fstream>
using namespace std;
int main(){
    ifstream filein("in.txt");
    ofstream fileout("out.txt");
    char a;
      while( !filein.eof() )
 
   {    filein>>a;
 
   if (isspace(a))
 
   {
   fileout<<a;
    }
    }
     filein.close(); 
     fileout.close();
return 0;
}
Подскажите почему не работает?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.05.2014, 21:45     Дан текстовый файл. Выведите все строки, которые содержат хотя бы один пробел
Посмотрите здесь:

C++ Найти сумму элементов в тех столбцах,которые содержат хотя бы один отрицательный элемент
C++ Что не так? Дан текстовый файл F. Переписать в другой файл G все строки, содержащие цифры.
Проверить, все ли строки матрицы содержат хотя бы один положительный элемент C++
C++ Найти сумму элементов в тех строках которые, содержат хотя бы один отрицательный элемент
C++ Дан текстовый файл. Заменить в нем все подряд идущие пробелы на один пробел.
Найти сумму элементов в тех строках, которые содержат хотя бы один отрицательный элемент C++
Найти количество отрицательных элементов строк, которые содержат хотя бы один нулевой элемент C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zer0mail
Нарушитель
2321 / 1947 / 192
Регистрация: 03.07.2012
Сообщений: 6,970
Записей в блоге: 1
20.05.2014, 22:01     Дан текстовый файл. Выведите все строки, которые содержат хотя бы один пробел #2
Потому что ты читаешь символы и выводишь те, которые пробелы.

Используй getline, например, и символьный буфер: Чтение текстовых файлов для новичков (getline)
filimoncc
1 / 1 / 1
Регистрация: 02.12.2013
Сообщений: 104
20.05.2014, 22:18  [ТС]     Дан текстовый файл. Выведите все строки, которые содержат хотя бы один пробел #3
Можете поправить код?
zer0mail
Нарушитель
2321 / 1947 / 192
Регистрация: 03.07.2012
Сообщений: 6,970
Записей в блоге: 1
20.05.2014, 22:23     Дан текстовый файл. Выведите все строки, которые содержат хотя бы один пробел #4
Не вижу смысла.
filimoncc
1 / 1 / 1
Регистрация: 02.12.2013
Сообщений: 104
20.05.2014, 22:39  [ТС]     Дан текстовый файл. Выведите все строки, которые содержат хотя бы один пробел #5
Правильно, зачем помогать.
zer0mail
Нарушитель
2321 / 1947 / 192
Регистрация: 03.07.2012
Сообщений: 6,970
Записей в блоге: 1
20.05.2014, 22:59     Дан текстовый файл. Выведите все строки, которые содержат хотя бы один пробел #6
Не надо путать помощь и халяву.
Вы написали - "Подскажите почему не работает?"
Я подсказал, почему и дал ссылку, как сделать.
Теперь пишите: "исправьте".

Надо было сразу написать: "Я не понимаю, как решить задание и не хочу понимать. Напишите готовую программу, чтобы я мог тупо скопировать".
Это по крайней мере было бы честно, не вводило в заблуждение других и сэкономило бы этим другим время.
filimoncc
1 / 1 / 1
Регистрация: 02.12.2013
Сообщений: 104
20.05.2014, 23:21  [ТС]     Дан текстовый файл. Выведите все строки, которые содержат хотя бы один пробел #7
Напишите готовую программу, чтобы я мог понять.
zer0mail
Нарушитель
2321 / 1947 / 192
Регистрация: 03.07.2012
Сообщений: 6,970
Записей в блоге: 1
20.05.2014, 23:24     Дан текстовый файл. Выведите все строки, которые содержат хотя бы один пробел #8
Полагаю, не можете (судя по обилию созданных вами тем). Вижу, как вместо освоения С++ идет освоение техники вытягивания ответов
filimoncc
1 / 1 / 1
Регистрация: 02.12.2013
Сообщений: 104
13.06.2014, 20:08  [ТС]     Дан текстовый файл. Выведите все строки, которые содержат хотя бы один пробел #9
C++
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
#include <iostream>
#include <fstream>
using namespace std;
 
int main()
{
    int k=0;
 
    ifstream file("file.txt");
    string a;
      while( !file.eof() )
 
   {    getline(file, a);
   k=strlen(a);//äëèГ*Г* ñòðîêè
   for (int i=0;i<k;i++)
   {
       if (a[i]==" ")
       {cout<<a<<endl;//âûâîäèì ðåçóëüòГ*ГІ
       break;
       }
    }
   }
     file.close(); // Г§Г*êðûâГ*ГҐГ¬ ГґГ*éë
 
    return 0;
}
Добавлено через 19 секунд
почему возникает ошибка в 14 строке?

Добавлено через 6 минут
C++
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
#include <iostream>
#include <fstream>
using namespace std;
 
int main()
{
    int k=0;
 
    ifstream file("file.txt");
    string a;
      while( !file.eof() )
 
   {    file.getline(a, 100);
   k=strlen(a);//äëèГ*Г* ñòðîêè
   for (int i=0;i<k;i++)
   {
       if (a[i]==" ")
       {cout<<a<<endl;//âûâîäèì ðåçóëüòГ*ГІ
       break;
       }
    }
   }
     file.close(); // Г§Г*êðûâГ*ГҐГ¬ ГґГ*éë
 
    return 0;
}
Или вот, 13 строчка ошибка, почему?
leo_sgm
5 / 5 / 1
Регистрация: 05.08.2013
Сообщений: 14
13.06.2014, 20:19     Дан текстовый файл. Выведите все строки, которые содержат хотя бы один пробел #10
Цитата Сообщение от filimoncc Посмотреть сообщение
почему возникает ошибка в 14 строке?
Функции нужна char-строка, а у тебя string
+ будь внимателен, когда одинарные кавычки ' ', а когда двойные " ".
filimoncc
1 / 1 / 1
Регистрация: 02.12.2013
Сообщений: 104
13.06.2014, 20:39  [ТС]     Дан текстовый файл. Выведите все строки, которые содержат хотя бы один пробел #11
Цитата Сообщение от leo_sgm Посмотреть сообщение
Функции нужна char-строка, а у тебя string
+ будь внимателен, когда одинарные кавычки ' ', а когда двойные " ".
C++
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
#include <iostream>
#include <fstream>
using namespace std;
 
int main()
{
    int k=0;
 
    ifstream file("file.txt");
    char a;
      while( !file.eof() )
 
   {    getline(file, a);//Г·ГЁГІГ*ГҐГ¬ î÷åðåäГ*ГіГѕ ñòîêó ГЁГ§ ГґГ*éëГ*
   k=strlen(a);//äëèГ*Г* ñòðîêè
   for (int i=0;i<k;i++)
   {
       if (a[i]==' ')
       {cout<<a<<endl;//âûâîäèì ðåçóëüòГ*ГІ
       break;
       }
    }
   }
     file.close(); // Г§Г*êðûâГ*ГҐГ¬ ГґГ*éë
 
    return 0;
}
Все исправил, согласно вашим рекомендациям, но появляется ошибка 13 строке: [Error] no matching function for call to 'getline(std::ifstream&, char&)'

Добавлено через 2 минуты
Если исправить 13 строку на file.getline(a,100), то наверное посимвольное считывание произойдет и остальной код работать не будет?
leo_sgm
5 / 5 / 1
Регистрация: 05.08.2013
Сообщений: 14
13.06.2014, 21:53     Дан текстовый файл. Выведите все строки, которые содержат хотя бы один пробел #12
filimoncc,
Цитата Сообщение от filimoncc Посмотреть сообщение
Если исправить 13 строку на file.getline(a,100), то наверное посимвольное считывание произойдет и остальной код работать не будет?
У тебя "а" теперь всего лишь 1 символ, а не массив символов, т .е. не строка.
Цитата Сообщение от filimoncc Посмотреть сообщение
char a;
- Ты можешь вернуть тип string для "а", подключив <string> и использовав length() для нахождения длины. (впрочем, можно и свою функцию нахождения длины написать, если забыл и не помнишь вообще, что да как)
- или объявить "а" как массив символов. И использовать strlen()
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.06.2014, 22:17     Дан текстовый файл. Выведите все строки, которые содержат хотя бы один пробел
Еще ссылки по теме:

Разработка программного модуля вставки строки заданной длины, содержащую хотя бы один перенос, в текстовый файл C++
Определить сумму элементов в тех столбцах, которые содержат хотя бы один положительный элемент C++
C++ Определить сумму элементов в тех строках, которые содержат хотя бы один нулевой элемент. 2)Поменять местами четные строки...
Скопировать из файла F1 в файл F2 все строки, которые не содержат цифры C++
Найти сумму элементов в столбцах, которые содержат хотя бы один нулевой элемент. C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
filimoncc
1 / 1 / 1
Регистрация: 02.12.2013
Сообщений: 104
13.06.2014, 22:17  [ТС]     Дан текстовый файл. Выведите все строки, которые содержат хотя бы один пробел #13
leo_sgm, используя string, пишет 'length' was not declared in this scope

Добавлено через 5 минут
В общем запустилась программа вот с таким кодом:
C++
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
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
 
int main()
{
    int k=0;
 
    ifstream file("file.txt");
    string a;
      while( !file.eof() )
 
   {    getline(file, a);//Г·ГЁГІГ*ГҐГ¬ î÷åðåäГ*ГіГѕ ñòîêó ГЁГ§ ГґГ*éëГ*
   k=a.length();//äëèГ*Г* ñòðîêè
   for (int i=0;i<k;i++)
   {
       if (a[i]==' ')
       {cout<<a<<endl;//âûâîäèì ðåçóëüòГ*ГІ
       break;
       }
    }
   }
     file.close(); // Г§Г*êðûâГ*ГҐГ¬ ГґГ*éë
 
    return 0;
}
Все работает отлично, спасибо всем.
Yandex
Объявления
13.06.2014, 22:17     Дан текстовый файл. Выведите все строки, которые содержат хотя бы один пробел
Ответ Создать тему
Опции темы

Текущее время: 23:13. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru