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

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

Восстановить пароль Регистрация
 
filimoncc
1 / 1 / 1
Регистрация: 02.12.2013
Сообщений: 101
20.05.2014, 21:45     Дан текстовый файл. Выведите все строки, которые содержат хотя бы один пробел #1
Дан текстовый файл. Выведите все строки, которые содержат хотя бы один пробел.
Формат входных данных
Во входном файле содержиться текст, состоящий из латинских букв, цифр, знаков препинания, пробелов и переводов строк.
Текст содержит хотя бы одну строку.
Длина каждой строки не превосходит 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++
C++ Найти сумму элементов в тех строках которые, содержат хотя бы один отрицательный элемент
C++ Дан текстовый файл. Заменить в нем все подряд идущие пробелы на один пробел.
Найти количество отрицательных элементов строк, которые содержат хотя бы один нулевой элемент C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zer0mail
2183 / 1866 / 187
Регистрация: 03.07.2012
Сообщений: 6,631
Записей в блоге: 1
20.05.2014, 22:01     Дан текстовый файл. Выведите все строки, которые содержат хотя бы один пробел #2
Потому что ты читаешь символы и выводишь те, которые пробелы.

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

Надо было сразу написать: "Я не понимаю, как решить задание и не хочу понимать. Напишите готовую программу, чтобы я мог тупо скопировать".
Это по крайней мере было бы честно, не вводило в заблуждение других и сэкономило бы этим другим время.
filimoncc
1 / 1 / 1
Регистрация: 02.12.2013
Сообщений: 101
20.05.2014, 23:21  [ТС]     Дан текстовый файл. Выведите все строки, которые содержат хотя бы один пробел #7
Напишите готовую программу, чтобы я мог понять.
zer0mail
2183 / 1866 / 187
Регистрация: 03.07.2012
Сообщений: 6,631
Записей в блоге: 1
20.05.2014, 23:24     Дан текстовый файл. Выведите все строки, которые содержат хотя бы один пробел #8
Полагаю, не можете (судя по обилию созданных вами тем). Вижу, как вместо освоения С++ идет освоение техники вытягивания ответов
filimoncc
1 / 1 / 1
Регистрация: 02.12.2013
Сообщений: 101
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
Сообщений: 101
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++ Определить сумму элементов в тех строках, которые содержат хотя бы один нулевой элемент. 2)Поменять местами четные строки...
Скопировать из файла F1 в файл F2 все строки, которые не содержат цифры C++

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

Или воспользуйтесь поиском по форуму:
filimoncc
1 / 1 / 1
Регистрация: 02.12.2013
Сообщений: 101
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     Дан текстовый файл. Выведите все строки, которые содержат хотя бы один пробел
Ответ Создать тему
Опции темы

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