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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.04.2013, 15:56   #1
Yan04ka
Новичок
Джуниор
 
Регистрация: 04.04.2013
Сообщений: 2
По умолчанию ПЕРЕВОДЧИК

Нужно переделать так чтобы программа делила на лексемы предложение и переводила каждое слово отдельно. Это нужно сделать с использованием strtok.
Код:
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <string.h>
#include <fstream>
using namespace std;

struct dictionary
{
	char word[200];
	char trans[200];
};

int  _tmain(int argc, _TCHAR* argv[])
{
	setlocale (0, "Russian");
	int n=0; // слов в словаре
	char s[300];
	ifstream file_for_read("dic.txt");
	if(file_for_read.fail())
	{
		cout<<"Файл dic.txt не найден";
		getch();
	    return 0;
	}
	char filename[100];
	cout<<"Введiть iм'я файлу з вихiдними словами ";
	cin>>filename;
	ifstream text(filename);
	if(text.fail())
	{
		cout<<"Файл text.txt не найден";
		getch();
	    return 0;
	}
	ofstream transl("trans.txt");
	if(file_for_read.fail())
	{
		cout<<"Файл transl.txt не найден";
		getch();
	    return 0;
	}
	while(!file_for_read.eof())
	{
		file_for_read.getline(s, 300);
		n++;
	}
	dictionary *dic=new dictionary[n];
	char **trans = new char*[n];
	for(int i=0; i<n; i++) trans[i] = new char[350];
	int i=0;
	file_for_read.clear(); // сброс флага eof
	file_for_read.seekg(0); //поз в 0
	char *p;
	for(i=0; i<n; i++)
	{
		file_for_read.getline(s, 300);
		p=strtok(s, ";"); // first call strtok
		strcpy(dic[i].word, p); // копируем слово
		p=strtok(NULL, ";");
		strcpy(dic[i].trans, p); // копируем перевод
		
	}
	text.getline(s, 300);
	bool net=true;  // нет слова
	for(i=0; i<n; i++)
	   if(stricmp(s, dic[i].word)==0)
		   {
			transl<<dic[i].trans;
	        net=false;
	        break;
	        }
	   if(net)
	     transl<<s; 
	text.close();
	transl.close();
	file_for_read.close();
	if(net) cout<<"Слово не вдалося перекласти!"<<endl;
else cout<<"Слова вдалося перекласти!"<<endl;
cout<<s<<"->"<<dic[i].trans<<endl;
		getch();
	    return 0;
}


________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE]
(это кнопочка на панели форматирования с решёточкой #)
Не забывайте об этом!

Модератор.

Последний раз редактировалось Serge_Bliznykov; 07.04.2013 в 20:45.
Yan04ka вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Переводчик Bekzat_92 Помощь студентам 2 12.04.2012 21:46
Переводчик stenl1 Софт 5 08.08.2011 00:00
Переводчик Lemo Помощь студентам 2 09.02.2011 21:13
Переводчик (Си) N.o.n.a.m.e Помощь студентам 6 13.08.2010 16:29
Переводчик Jinno Фриланс 10 05.11.2009 21:45