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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.05.2010, 09:13   #1
ZET78
Пользователь
 
Регистрация: 02.05.2010
Сообщений: 60
По умолчанию Считывание строк

Друзья, в общем я все мучаюсь со своим переводчиком, и проблема вот в чем, у меня не получается считать строки в массив.
код вообще переводчика(только когда ты вводишь с клавиатуры английские и русские слова в порядке следование) вот он:
Код:
#include <vcl.h>
#pragma hdrstop
#include <iostream.h>
#include <string.h>
 void main(){
         int i,n,j,k,b;
        string en_word[10];
        string ru_word[10];
        string tr_word[10];
        cout<<"\n n= ";
                cin>>n;
                        for(i=0;i<n;i++){

                                cout<<"\n insert en word: ";
                                 cin>>en_word[i];
                                 cout<<"\n insert ru word: ";
                                 cin>>ru_word[i+1];

                        }
                        for(i=0;i<n;i++){

                                cout<<en_word[i]<<"-";
                                 cout<<ru_word[i+1]<<" ";

                        }
                        cout<<"\n 1:ru-en 2:en-ru 0:exit ";
                        cin>>b;
                        while(b!=0){
                         if(b==2){
                         cout<<"\n insert english word ";
                         cin>>tr_word[0];
                         for(i=0;i<n;i++){
                         if(tr_word[0]==en_word[i]){

                                        cout<<"\n translate "<<ru_word[i+1];
                         }
                         }
                         }
                         if(b==1){
                                cout<<"\n insert rus word ";
                                cin>>tr_word[0];
                                for(i=0;i<n;i++){
                                        if(tr_word[0]==ru_word[i+1]){
                                                cout<<"\n translate: "<<en_word[i];
                                        }
                                }
                         }
                         cout<<"\n 1:ru-en 2:en-ru 0:exit ";
                        cin>>b;
                         }



}
просто объясните пожалуйста, как мне читать в один и тот же массив без потери индексов, строки с разных файлов!

Последний раз редактировалось MaTBeu; 10.05.2010 в 13:22.
ZET78 вне форума Ответить с цитированием
Старый 10.05.2010, 13:23   #2
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,604
По умолчанию

Движок табуляцию не замял, это вы просто не знаете правил форматирования кода. Код помещается в теги [ code ] - изображение решетки вверху окна форматирования.
MaTBeu вне форума Ответить с цитированием
Старый 10.05.2010, 19:33   #3
ZET78
Пользователь
 
Регистрация: 02.05.2010
Сообщений: 60
По умолчанию

простите, просто форму-форуму рознь)
ZET78 вне форума Ответить с цитированием
Старый 10.05.2010, 19:43   #4
ozo
Форумчанин
 
Аватар для ozo
 
Регистрация: 26.04.2010
Сообщений: 328
По умолчанию

Код:
//#include <vcl.h> wtf ?
//#pragma hdrstop  wtf ?
//#include <iostream.h> wtf ?
#include <iostream>
//#include <string.h> wtf ?
#include <string>

using namespace std;

//void main(){ wtf ?
int main(){
    int i,/*n,*/j,k,b; // welcome to c++
    string en_word[10];
    string ru_word[10];
    //string tr_word[10]; wtf ?
    cout<<"\n n= ";
    //cin>>n; сегфолт при n < 0 и n > 10
    int n = -1;
    while( n <= 0 || n > 10 )
	cin >> n;

    for(i=0;i<n;i++){
	cout<<"\n insert en word: ";
	cin>>en_word[i];
	cout<<"\n insert ru word: ";
	cin>>ru_word[i];
    }
    for(i=0;i<n;i++){
	cout<<en_word[i]<<"-";
	cout<<ru_word[i]<<" ";
    }

    do{
	cout<<"\n 1:ru-en 2:en-ru 0:exit ";
	cin>>b;	
	if(b==2){
	    cout<<"\n insert english word ";
	    string tr_word;
	    cin>>tr_word;
	    for(i=0;i<n;i++)//{
		if(tr_word == en_word[i])//{
		    cout<<"\n translate "<<ru_word[i];
	    //}
	    //}
	} else if(b==1){
	    cout<<"\n insert rus word ";
	    string tr_word;
	    cin>>tr_word;
	    for(i=0;i<n;i++)//{
		if(tr_word==ru_word[i])//{
		    cout<<"\n translate: "<<en_word[i];
		//}
	    //}
	}
	//while(b!=0){ wtf ?
    } while( b >= 0  && b < 3 );
}
А это моё:
Код:
#include <vector>
#include <algorithm>
#include <fstream>
#include <iostream>

int main(){
    std::vector< std::string > ru, en;
    
    std::string tmp;
    std::ifstream ruFile("ru.txt");
    std::ifstream enFile("en.txt");
    if( ruFile && enFile ){  
	while( !ruFile.eof() && !enFile.eof() ){
	    ruFile >> tmp;
	    ru.push_back( tmp );
	    enFile >> tmp;
	    en.push_back( tmp );
	}
    } else
	std::cout << "Таки да, файлы то не правильные !\n";
    ruFile.close();
    enFile.close();

    int mode;
    do{
	std::cout << "А ну-ка мод введите, 1 - с ру на ин, а 2 с ин на ру\n";
	std::cin >> mode;
	if( mode == 1 ){
	    std::cout << " А ну-ка, ру слово вводи !\n";
	    std::cin >> tmp;
	    std::vector< std::string >::iterator pos = std::find( ru.begin(), ru.end(), tmp );
	    if( pos != ru.end() )
		std::cout << "А ответ будет :\n" << en[ std::distance( ru.begin(), pos ) ] + '\n';
	    else 
		std::cout << "Нет такого\n";
	} else if( mode == 2 ){
	    std::cout << " А ну-ка, ин слово вводи !\n";
	    std::cin >> tmp;
	    std::vector< std::string >::iterator pos = std::find( en.begin(), en.end(), tmp );
	    if( pos != ru.end() )
		std::cout << "А ответ будет :\n" << ru[ std::distance( en.begin(), pos ) ] << '\n';
	    else 
		std::cout << "Нет такого\n";
	}
    } while( mode > 0 && mode < 3 );
}
Используй гугль, будь счастлив
hackme@yandex.ru
Блог об archlinux
ozo вне форума Ответить с цитированием
Старый 10.05.2010, 23:58   #5
ZET78
Пользователь
 
Регистрация: 02.05.2010
Сообщений: 60
По умолчанию

ozo. Первое ты пишешь в визуал студио а я в билдере, а библиотеки там подключаются по разному, если тебе удобнее использовать динамические переменные, то пожалуйста, мне удобнее работать пока со статикой. вообще мой вопрос состоит в другом, КАК ИЗ ФАЙЛА СРАЗУ В МАССИВ ЧИТАТЬ СТРОКИ???
ZET78 вне форума Ответить с цитированием
Старый 11.05.2010, 00:44   #6
ozo
Форумчанин
 
Аватар для ozo
 
Регистрация: 26.04.2010
Сообщений: 328
По умолчанию

Я использую emacs и g++. Стандарт он и в африке стандарт, надо его по возможности придерживаться
Код:
file >> array[i];
Примерно так.
Используй гугль, будь счастлив
hackme@yandex.ru
Блог об archlinux
ozo вне форума Ответить с цитированием
Старый 11.05.2010, 07:41   #7
ZET78
Пользователь
 
Регистрация: 02.05.2010
Сообщений: 60
По умолчанию

Оу, спасибо!
ZET78 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Добавление строк в таблицу с вставкой в них текста и чередованием фона строк Centurion2xx6 Microsoft Office Word 9 30.03.2010 11:00
Считывание диапазона строк из файла. Niodar PHP 11 27.02.2010 14:43
Считывание строк из файла Mikimaus Общие вопросы C/C++ 1 05.12.2009 21:05
Считывание строк из файла. перемещение по строкам "веред"-"назад" Larkin. Помощь студентам 2 15.06.2009 17:58
Считывание строк в массив mc_12 Общие вопросы C/C++ 4 05.01.2009 13:11