Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.04.2013, 17:17   #1
jula939393
Пользователь
 
Регистрация: 21.03.2013
Сообщений: 36
По умолчанию Переписать с Паскаля на Си или С++(Задание на файлы)

Здравствуйте!!!Помогите пожалуйста!!
Задание:Написать программу, которая считывает текст из файла и выводит его
на экран, заменив цифры от 0 до 9 на слова «ноль», «один», ..., «девять»,
начиная каждое предложение с новой строки.
НА Паскале:
Код:
USES CRT;
CONST Separators:set of char=['.','!','?']; {множ-во: разделители}
      Digits:set of char=['0'..'9']; {множ-во: цифры}
      sDigits:array['0'..'9'] of string=
('ноль','один','два','три','четыре','пять','шесть','семь','восемь','девять');
      fname:string='file.txt';
VAR f:text;
    snt:string;
    c,ch:char;
    flagSnt:boolean;

BEGIN
  clrscr;
  assign(f,fname);
  {Открытие исходного файла:}
  {$I-} reset(f); {$I+}
  if (IOResult<>0) then begin
    writeln('Ошибка! Невозможно открыть файл "',fname,'"'); exit;
  end;
  snt:=''; flagSnt:=false;
  while not eof(f) do begin {цикл - пока не конец файла:}
    read(f,c); {чтение символа}
    if c in Digits then {если это цифра}
      snt:=snt+sDigits[c] {заменить на соотв. слово}
    else
      snt:=snt+c;
    if c in Separators then begin {если это разделитель}
      if flagSnt then begin
        flagSnt:=false; writeln(snt); {вывести предложение}
      end;
      snt:=''; {начать новое предложение}
    end
    else flagSnt:=true;
  end;
  close(f);

END.

Последний раз редактировалось Stilet; 28.04.2013 в 17:49.
jula939393 вне форума Ответить с цитированием
Старый 28.04.2013, 17:48   #2
Somebody
Участник клуба
 
Регистрация: 08.10.2007
Сообщений: 1,185
По умолчанию

C++
Код:
#include <fstream>
#include <iostream>
#include <map>
#include <set>

using namespace std;

const set<char> separators{'.', '!', '?'};
const map<char, const char*> replaceMap = {
	{'0', "ноль"}, {'1', "один"}, {'2', "два"}, {3, "три"}, {'4', "четыре"},
	{'5', "пять"}, {'6', "шесть"}, {'7', "семь"}, {'8', "восемь"}, {'9', "девять"}
	};
const char fileName[] = "file.txt";

int main()
{
	ifstream f(fileName);
	if (!f.good())
	{
		cerr << "Ошибка! Невозможно открыть файл \"" << fileName << "\"\n";
		return 1;
	}
	char c;
	while (f.get(c).good())
	{
		const auto r = replaceMap.find(c);
		if (r != replaceMap.cend())
			cout << r->second;
		else
			cout << c;
		if (separators.count(c) != 0)
			cout << '\n';
	}
}
Somebody вне форума Ответить с цитированием
Старый 28.04.2013, 18:27   #3
jula939393
Пользователь
 
Регистрация: 21.03.2013
Сообщений: 36
По умолчанию

Выдаёт 8 ошибок,у меня MinGW
jula939393 вне форума Ответить с цитированием
Старый 28.04.2013, 18:47   #4
Somebody
Участник клуба
 
Регистрация: 08.10.2007
Сообщений: 1,185
По умолчанию

Компилируй с ключом -std=c++11 (и убедись, что версия свежая).
Somebody вне форума Ответить с цитированием
Старый 29.04.2013, 11:15   #5
jula939393
Пользователь
 
Регистрация: 21.03.2013
Сообщений: 36
По умолчанию

А какой у вас компилятор?
jula939393 вне форума Ответить с цитированием
Старый 29.04.2013, 21:17   #6
Somebody
Участник клуба
 
Регистрация: 08.10.2007
Сообщений: 1,185
По умолчанию

g++, версия не помню какая. В общем, не очень старый MinGW.
Somebody вне форума Ответить с цитированием
Старый 30.04.2013, 10:56   #7
jula939393
Пользователь
 
Регистрация: 21.03.2013
Сообщений: 36
По умолчанию

Спасибо большое!!!!))))
jula939393 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Кто может переписать или подсказать как с паскаля сделать в С korvi21 Помощь студентам 2 23.12.2011 13:48
переписать задачу с Паскаля в Visual C++ Rexonik Общие вопросы C/C++ 10 05.12.2011 00:16
Переписать с Паскаля на С++ gvilon Общие вопросы C/C++ 2 09.11.2011 22:54
Переписать с Паскаля на С++ gvilon Помощь студентам 0 09.11.2011 22:13
Переписать задачу из паскаля на СИ Drago56 Общие вопросы C/C++ 1 14.12.2010 17:40