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

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

Войти
Регистрация
Восстановить пароль
 
 
Sabi_na
0 / 0 / 0
Регистрация: 10.12.2013
Сообщений: 20
#1

Выводит предложения, которые начинаются с тире - C++

14.12.2013, 18:13. Просмотров 931. Ответов 22
Метки нет (Все метки)

Всем привет, помогите написать код.
Буду очень благодарна)

Написать программу, которая считывает текст с файла и выводит в другой файл и на экран только предложения, которые начинаются с тире, перед которым могут идти только пробелы.

Добавлено через 3 часа 25 минут
помогите пожалуйста
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.12.2013, 18:13     Выводит предложения, которые начинаются с тире
Посмотрите здесь:
Вывести на экран только предложения, которые начинаются с тире (перед ним могут находиться пробелы) C++
программу, которая считывает текст из файла и выводит на экран только предложения, начинающиеся с тире, перед которым могут находиться только пробелы C++
Напишите программу, которая вводит ряд строк и выводит те из них, которые начинаются с буквы «b» C++
Считать строки из файла, и вывести те что начинаются с тире C++
Вывести только предложения, начинающиеся с тире C++
C++ Вывести на экран предложения начинающиеся с тире
C++ Cчитать текст из файла и вывести на экран предложения, начинающиеся с тире
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Main_programm
8 / 0 / 1
Регистрация: 13.12.2013
Сообщений: 12
14.12.2013, 18:53     Выводит предложения, которые начинаются с тире #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
void main()
{
  FILE *f1;//файл исходных данных
  FILE *f2;//файл результат
  char str[500];//строка из файла
 
  f1=fopen("test.txt","r");//открываем 1-й файл для чтения
  f2=fopen("rez.txt","w");//открываем 1-й файл для записи
 
  while(fgets(str,500,f1))//перебираем строки пока не закончатся
  {
    int i = 0;//временный счетчик
    while(str[i]==' ')i++;//"перескакиваем" пробелы
    if(str[i]=='-')//если после пробелов есть тире
    {
      fputs(str,f2);//вывод в файл
      printf("%s", str);//вывод на экран
    }
  }
  delete i;
}
Sabi_na
0 / 0 / 0
Регистрация: 10.12.2013
Сообщений: 20
14.12.2013, 19:19  [ТС]     Выводит предложения, которые начинаются с тире #3
Цитата Сообщение от Main_programm Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
void main()
{
  FILE *f1;//файл исходных данных
  FILE *f2;//файл результат
  char str[500];//строка из файла
 
  f1=fopen("test.txt","r");//открываем 1-й файл для чтения
  f2=fopen("rez.txt","w");//открываем 1-й файл для записи
 
  while(fgets(str,500,f1))//перебираем строки пока не закончатся
  {
    int i = 0;//временный счетчик
    while(str[i]==' ')i++;//"перескакиваем" пробелы
    if(str[i]=='-')//если после пробелов есть тире
    {
      fputs(str,f2);//вывод в файл
      printf("%s", str);//вывод на экран
    }
  }
  delete i;
}
а под Visual Studio можешь переделать ?
Main_programm
8 / 0 / 1
Регистрация: 13.12.2013
Сообщений: 12
14.12.2013, 19:39     Выводит предложения, которые начинаются с тире #4
К сожалению, сейчас нет под рукой ни одной версии.
Sabi_na
0 / 0 / 0
Регистрация: 10.12.2013
Сообщений: 20
14.12.2013, 19:49  [ТС]     Выводит предложения, которые начинаются с тире #5
Помогите исправить ошибки, пожалуйста.

#include <iostream>
#include <stdio.h>
using namespace std;
void main()
{
FILE *f1;//файл исходных данных
FILE *f2;//файл результат
char str[500];//строка из файла

f1=fopen("test.txt","r");//открываем 1-й файл для чтения
f2=fopen("rez.txt","w");//открываем 1-й файл для записи

while(fgets(str,500,f1))//перебираем строки пока не закончатся
{
int i = 0;//временный счетчик
while(str[i]==' ')i++;//"перескакиваем" пробелы
if(str[i]=='-')//если после пробелов есть тире
{
fputs(str,f2);//вывод в файл
printf("%s", str);//вывод на экран
}
}
delete i;
}

1> Обращение к "Debug\po.unsuccessfulbuild".
1>ClCompile:
1> po.cpp
1>c:\users\sabina\documents\visual studio 2010\projects\po\po\po.cpp(5): error C2447: {: отсутствует заголовок функции (возможно, используется формальный список старого типа)
1>
1>СБОЙ построения.
1>
1>Затраченное время: 00:00:00.73
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
Main_programm
8 / 0 / 1
Регистрация: 13.12.2013
Сообщений: 12
14.12.2013, 20:19     Выводит предложения, которые начинаются с тире #6
C++
1
2
3
4
5
6
7
#include <iostream>
 #include <stdio.h>
 using namespace std;
int main()
 {
 FILE *f1;//файл исходных данных
...
Попробуйте так.
функция main должна иметь определенный тип.
Sabi_na
0 / 0 / 0
Регистрация: 10.12.2013
Сообщений: 20
14.12.2013, 20:31  [ТС]     Выводит предложения, которые начинаются с тире #7
Цитата Сообщение от Main_programm Посмотреть сообщение
C++
1
2
3
4
5
6
7
#include <iostream>
 #include <stdio.h>
 using namespace std;
int main()
 {
 FILE *f1;//файл исходных данных
...
Попробуйте так.
функция main должна иметь определенный тип.

теперь вот что получилось
1>c:\users\sabina\documents\visual studio 2010\projects\po\po\po.cpp(23): error C2065: i: необъявленный идентификатор
1>c:\users\sabina\documents\visual studio 2010\projects\po\po\po.cpp(23): error C2541: delete: нельзя удалять объекты, не являющиеся указателями

оно ругается на эту строчку " delete i; "

Добавлено через 3 минуты
Цитата Сообщение от Main_programm Посмотреть сообщение
C++
1
2
3
4
5
6
7
#include <iostream>
 #include <stdio.h>
 using namespace std;
int main()
 {
 FILE *f1;//файл исходных данных
...
Попробуйте так.
функция main должна иметь определенный тип.
Вот смотри есть похожий код, только здесь считывает текст с файла и выводит в другой файл и на экран сначала вопросительные, а потом восклицательные предложения.

#include <fstream>
#include <iostream>
#include <string>
#include <vector>

int main()
{
std::ifstream ifs("input.txt");
if (!ifs)
return 1;
std::ofstream ofs("output.txt");
std::vector<std::string> vec;
std::string line;
// пока считали строку с входного файла
while (std::getline(ifs, line))
{
if (line.back() == '!') // если восклицательное предложение - запоминаем
vec.push_back(line);
else // иначе выводим на экран и в файл
{
std::cout << line << std::endl;
ofs << line << std::endl;
}
}
// выводим все что осталось (все восклицательные предложения)
for (std::vector<std::string>::const_iterator cit = vec.begin();
cit != vec.end(); ++cit)
{
std::cout << *cit << std::endl;
ofs << *cit << std::endl;
}
}
Main_programm
8 / 0 / 1
Регистрация: 13.12.2013
Сообщений: 12
14.12.2013, 20:31     Выводит предложения, которые начинаются с тире #8
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
 #include <iostream>
 #include <stdio.h>
 using namespace std;
int main()
{
  FILE *f1;//файл исходных данных
  FILE *f2;//файл результат
  char str[500];//строка из файла
  int i;//временный счетчик
 
  f1=fopen("test.txt","r");//открываем 1-й файл для чтения
  f2=fopen("rez.txt","w");//открываем 1-й файл для записи
 
  while(fgets(str,500,f1))//перебираем строки пока не закончатся
  {
    i = 0;
    while(str[i]==' ')i++;//"перескакиваем" пробелы
    if(str[i]=='-')//если после пробелов есть тире
    {
      fputs(str,f2);//вывод в файл
      printf("%s", str);//вывод на экран
    }
  }
}
Попробуйте вот так сделать)
Sabi_na
0 / 0 / 0
Регистрация: 10.12.2013
Сообщений: 20
14.12.2013, 20:46  [ТС]     Выводит предложения, которые начинаются с тире #9
Цитата Сообщение от Main_programm Посмотреть сообщение
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
 #include <iostream>
 #include <stdio.h>
 using namespace std;
int main()
{
  FILE *f1;//файл исходных данных
  FILE *f2;//файл результат
  char str[500];//строка из файла
  int i;//временный счетчик
 
  f1=fopen("test.txt","r");//открываем 1-й файл для чтения
  f2=fopen("rez.txt","w");//открываем 1-й файл для записи
 
  while(fgets(str,500,f1))//перебираем строки пока не закончатся
  {
    i = 0;
    while(str[i]==' ')i++;//"перескакиваем" пробелы
    if(str[i]=='-')//если после пробелов есть тире
    {
      fputs(str,f2);//вывод в файл
      printf("%s", str);//вывод на экран
    }
  }
}
Попробуйте вот так сделать)

теперь ошибок нет, ну запустить задачу не получается, прерывает процесс(
нужно попробовать как-то тот код переделать.
спасибо за помощь, ну в вижуале не работает задача.
StackOverflow
All rights reserved.
91 / 81 / 5
Регистрация: 03.08.2013
Сообщений: 258
14.12.2013, 21:01     Выводит предложения, которые начинаются с тире #10
Sabi_na, выход из функции main добавьте, а именно: return 0 перед последней завершающей фигурной скобкой. Вопрос к автору: а что, если в самом предложении встречаются тире и дефисы? И если он найдёт таки чёрточку, то он всю строку в выходной файл выведет?
Main_programm
8 / 0 / 1
Регистрация: 13.12.2013
Сообщений: 12
14.12.2013, 21:04     Выводит предложения, которые начинаются с тире #11
Чтобы заработало
Сначала создайте файлик с названием "test.txt" в котором напишите несколько предложений которые нужно обработать.
а результат будет на экране, и в файле с названием "rez.txt"
Я только что установил студию и все заработало))

Добавлено через 3 минуты
Цитата Сообщение от StackOverflow Посмотреть сообщение
Sabi_na, выход из функции main добавьте, а именно: return 0 перед последней завершающей фигурной скобкой. Вопрос к автору: а что, если в самом предложении встречаются тире и дефисы? И если он найдёт таки чёрточку, то он всю строку в выходной файл выведет?
Если Вы внимательно смотрели код, то уже наверное заметили, что как только нашли тире (а согласно условию задачи нам нужно именно первое и именно с него начинается предложение), сразу переходим к нужной опереции (т.е. копированию и выводу на экран), а дальнейший поиск сразу прерывается.
StackOverflow
All rights reserved.
91 / 81 / 5
Регистрация: 03.08.2013
Сообщений: 258
14.12.2013, 21:12     Выводит предложения, которые начинаются с тире #12
Main_programm, если внутри предложеня будет тире - ваша программа не покрошится?
Main_programm
8 / 0 / 1
Регистрация: 13.12.2013
Сообщений: 12
14.12.2013, 21:32     Выводит предложения, которые начинаются с тире #13
Цитата Сообщение от StackOverflow Посмотреть сообщение
Main_programm, если внутри предложеня будет тире - ваша программа не покрошится?
НЕТ!
А с чего ей крошится?

Ну защиты "от дурака" нет конечно, тоесть если подсунуть пустой входной файлик тоона вообще не сработает)
)))

Вы попробуйте протестить...
StackOverflow
All rights reserved.
91 / 81 / 5
Регистрация: 03.08.2013
Сообщений: 258
14.12.2013, 21:58     Выводит предложения, которые начинаются с тире #14
Main_programm, попробовал, работает. Приношу извинения за свои сомнения.
P.S. Но не сработать она может не только при пустом файле. Правда, это уже тема для отдельной беседы. Задача, поставленная в рамках данной темы, решена, и это главное!
Sabi_na
0 / 0 / 0
Регистрация: 10.12.2013
Сообщений: 20
14.12.2013, 22:26  [ТС]     Выводит предложения, которые начинаются с тире #15
Цитата Сообщение от Main_programm Посмотреть сообщение
Чтобы заработало
Сначала создайте файлик с названием "test.txt" в котором напишите несколько предложений которые нужно обработать.
а результат будет на экране, и в файле с названием "rez.txt"
Я только что установил студию и все заработало))

Добавлено через 3 минуты


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

опиши пожалуйста подробней весь процесс, где именно нужно создать этот файлик ?
Main_programm
8 / 0 / 1
Регистрация: 13.12.2013
Сообщений: 12
14.12.2013, 22:32     Выводит предложения, которые начинаются с тире #16
В папке где находится EXE-шник программы создаем файлик текстовый с именем "test.txt"
А в файлике том пишем предложения свои ну те о которых в начале говорилось. с тире вначале и с пробелами перед ними.
А после проделанного запускаем програмку и смотрим результат.
После отработки программы ф той же папке, рядом с первым файликом появится еще один с названием "rez.txt"

P.S.
имена файлов поменять можно в тексте программы, а еще можно пути к ним прописать.
Sabi_na
0 / 0 / 0
Регистрация: 10.12.2013
Сообщений: 20
14.12.2013, 22:58  [ТС]     Выводит предложения, которые начинаются с тире #17
Цитата Сообщение от Main_programm Посмотреть сообщение
В папке где находится EXE-шник программы создаем файлик текстовый с именем "test.txt"
А в файлике том пишем предложения свои ну те о которых в начале говорилось. с тире вначале и с пробелами перед ними.
А после проделанного запускаем програмку и смотрим результат.
После отработки программы ф той же папке, рядом с первым файликом появится еще один с названием "rez.txt"

P.S.
имена файлов поменять можно в тексте программы, а еще можно пути к ним прописать.
ввожу код программы

#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
FILE *f1;//файл исходных данных
FILE *f2;//файл результат
char str[500];//строка из файла
int i;//временный счетчик

f1=fopen("test.txt","r");//открываем 1-й файл для чтения
f2=fopen("rez.txt","w");//открываем 1-й файл для записи

while(fgets(str,500,f1))//перебираем строки пока не закончатся
{
i = 0;
while(str[i]==' ')i++;//"перескакиваем" пробелы
if(str[i]=='-')//если после пробелов есть тире
{
fputs(str,f2);//вывод в файл
printf("%s", str);//вывод на экран
}
}
}

создала файл так как ты и говорил.
Выводит предложения, которые начинаются с тире
потом запускаю программу, за секунду тухнет пустое окно где должен быть результат и файл рез тоже пустой.
просмотри код этот он правильный ?
StackOverflow
All rights reserved.
91 / 81 / 5
Регистрация: 03.08.2013
Сообщений: 258
14.12.2013, 23:00     Выводит предложения, которые начинаются с тире #18
Sabi_na, по вашему же условию все предложения должны начинаться с тире, так?
Так вот и начинайте каждое предложение с тире. Этот код не расчитан на то, чтобы искать фрагменты текста, которые следуют за тире или дифисами.
Sabi_na
0 / 0 / 0
Регистрация: 10.12.2013
Сообщений: 20
14.12.2013, 23:08  [ТС]     Выводит предложения, которые начинаются с тире #19
Цитата Сообщение от StackOverflow Посмотреть сообщение
Sabi_na, по вашему же условию все предложения должны начинаться с тире, так?
Так вот и начинайте каждое предложение с тире. Этот код не расчитан на то, чтобы искать фрагменты текста, которые следуют за тире или дифисами.
да, все правильно теперь работает, сама тупанула.
а как сделать чтобы окно в вижуале не пропадало, а то я только скомпилировала программу это окно вывода мгновенно пропадает и я не успеваю сделать скрин, а весь результат могу увидеть только в файле рез ?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.12.2013, 23:09     Выводит предложения, которые начинаются с тире
Еще ссылки по теме:
Считать текст из файла и вывести на экран только предложения начинающиеся с тире C++
C++ Считать текст из файла и вывести на экран только предложения, начинающиеся с тире
Записать в новый файл сначала предложения, начинающиеся с тире, а затем все остальные C++
Выделить слова которые начинаются с гласных C++
Написать программу, которая выводит на экран предложения из файла C++

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

Или воспользуйтесь поиском по форуму:
Main_programm
8 / 0 / 1
Регистрация: 13.12.2013
Сообщений: 12
14.12.2013, 23:09     Выводит предложения, которые начинаются с тире #20
создайте файлик "start.bat" а в нутри напишите такое:
echo off
cls
001.exe
Pause

где 001.exe это имя Вашего приложения

Сахраните и запустите его, таким образом Программа перестанет тухнуть после запуска.

или

сделайте системное прерывание на паузу
А по поводу пустого файла Вам уже ответили в предидущем посте
Yandex
Объявления
14.12.2013, 23:09     Выводит предложения, которые начинаются с тире
Ответ Создать тему
Опции темы

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