Модераторы: bsa

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> можете помочь с этим? попробовал усовершенствовать код 
:(
    Опции темы
toader
Дата 17.6.2009, 12:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 12.6.2009

Репутация: нет
Всего: нет



можете помочь с этим?

попробовал усовершенствовать код но к сожалению не удачно(((

Код

#include <iostream>
#include <fstream>
#include <string>
using namespace std;

int main () {
  string line;
  ifstream myfile ("./src/example.txt");
  ofstream myfile2 ("./src/vasea-new.txt")
  if (myfile.is_open())
  {
    while (! myfile.eof() )
    {
      getline (myfile,line);
      cout << line << endl;
      cout << endl;
    }
    int m,n;
    cout << "Ce cuvint doritzi sa modificatzi? :";
    cin >> m;
    cout << "Cu ce cuvint doritzi sal modificatzi? : ";
    cin >> n;

    std::string word;
    {
      myfile >> word;
    if (word == m)
      myfile2 << n << " ";
    else
      myfile2 << word << " ";
    }

    }
   }



после прочтения файла и показывания его в консоли вопрос "какое слово хотите заменить?" пишем "este" затем "на какое слово изменить?" пишем "nu este" ив ответ.. чтобы в vasea-new появился изменённый текст.. кто-то может объяснить ошибку? я примерно знаю где она
по моему она где-то в моём while
PM MAIL   Вверх
xvr
Дата 17.6.2009, 12:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 35
Всего: 223



Твой while дочитывает файл до конца, а в строке 26 ты снова пытаешься из него читать, а нечего - файл уже кончился!

PM MAIL   Вверх
toader
Дата 17.6.2009, 12:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 12.6.2009

Репутация: нет
Всего: нет



а как сделать их отдельно? 
PM MAIL   Вверх
toader
Дата 17.6.2009, 12:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 12.6.2009

Репутация: нет
Всего: нет



вот я кажется понел... но еррор у       if (word == m)
помогите исправить

Код

#include <iostream>
#include <fstream>
#include <string>
using namespace std;

int main () {
  string line;
  ifstream myfile ("./src/example.txt");
  if (myfile.is_open())
  { std::string word;
    while (! myfile.eof() )
    {
      getline (myfile,line);
      cout << line << endl;
      myfile >> word;
      int m,n;
      cout << "Ce cuvint doritzi sa modificatzi? :" <<endl;
      cin >> m;
      cout << "Cu ce cuvint doritzi sal modificatzi? :" <<endl;
      cin >> n;

      if (word == m)
       std::cout << n << std::endl; //выводим слово n
      else
          std::cout << word << std::endl;
    }

    }
  else cout << "Unable to open file";
  return 0;

}


Это сообщение отредактировал(а) toader - 17.6.2009, 12:54
PM MAIL   Вверх
zim22
Дата 17.6.2009, 12:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 29
Всего: 69



Цитата(toader @  17.6.2009,  12:52 Найти цитируемый пост)
. но еррор у       if (word == m)

Код

char buf[256] = {0};
if (word == itoa(m, buf, 10))



--------------------
PM MAIL   Вверх
toader
Дата 17.6.2009, 12:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 12.6.2009

Репутация: нет
Всего: нет



Цитата(zim22 @ 17.6.2009,  12:56)
Цитата(toader @  17.6.2009,  12:52 Найти цитируемый пост)
. но еррор у       if (word == m)

Код

char buf[256] = {0};
if (word == itoa(m, buf, 10))

Код

‘itoa’ was not declared in this scope



а у        if (word == m)

Код

Multiple markers at this line
    - no match for ‘operator==’ in ‘word == m’
    - Line breakpoint: Hello.cpp [line: 31]


Это сообщение отредактировал(а) toader - 17.6.2009, 12:59
PM MAIL   Вверх
zim22
Дата 17.6.2009, 13:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 29
Всего: 69



Цитата(toader @  17.6.2009,  12:58 Найти цитируемый пост)
‘itoa’ was not declared in this scope


toader, учитесь пользоваться MSDN
Цитата

Routine                 Required header
_itoa                        <stdlib.h>


Это сообщение отредактировал(а) zim22 - 17.6.2009, 13:05


--------------------
PM MAIL   Вверх
toader
Дата 17.6.2009, 13:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 12.6.2009

Репутация: нет
Всего: нет



Цитата(zim22 @ 17.6.2009,  13:04)

toader, учитесь пользоваться MSDN
Цитата

Routine                 Required header
_itoa                        <stdlib.h>


добавил 

Код

#include <stdio.h>
#include <stdlib.h>


фсёравно пишет

     
Код

 if (word == itoa(m, buf, 10))


Multiple markers at this line
    - Line breakpoint: Hello.cpp [line: 31]
    - ‘itoa’ was not declared in this scope

Это сообщение отредактировал(а) toader - 17.6.2009, 13:22
PM MAIL   Вверх
xvr
Дата 17.6.2009, 13:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 35
Всего: 223



Цитата(zim22 @ 17.6.2009,  13:04)
Цитата(toader @  17.6.2009,  12:58 Найти цитируемый пост)
‘itoa’ was not declared in this scope


toader, учитесь пользоваться MSDN
Цитата

Routine                 Required header
_itoa                        <stdlib.h>

Черезвычайно полезно, особенно учитывая тот факт, что проверять ему надо СЛОВО (а не число), и сидит он под Linux  smile 

2 toader: Иногда полезно прежде чем вслепую втыкать то, что вам советуют, немного подумать головой (кстати - главный инструмент программиста)
Вместо этого -
Цитата

      int m,n;

поставьте
Цитата

      string m,n;


PM MAIL   Вверх
zim22
Дата 17.6.2009, 13:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 29
Всего: 69



...

Это сообщение отредактировал(а) zim22 - 17.6.2009, 13:21


--------------------
PM MAIL   Вверх
toader
Дата 17.6.2009, 13:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 12.6.2009

Репутация: нет
Всего: нет



xvr,  болишое спасибо теперь я буду знать что int для цифр а string для букв)

вот вроде всё сделал но он почемуто не меняет а показевает ишё рас лине.. как сделать чтобы поменял?

создаёт пустой vasea-out smile

Код


#include <iostream>
#include <fstream>
#include <string>
using namespace std;

int main () {
  string line;
  ifstream myfile ("./src/example.txt");
  ofstream fout("./src/vasea-out.txt");

  if (!myfile || !fout)
      {
          std::cout << "Error opening file" << std::endl;
          return 1;
      }

  if (myfile.is_open())
  { std::string word;
    while (! myfile.eof() )
    {
      getline (myfile,line);
      cout << line << endl;
      cout << endl;
      myfile >> word;
      string m,n;
      cout << "Ce cuvint doritzi sa modificatzi? :" <<endl;
      cin >> m;
      cout << "Cu ce cuvint doritzi sal modificatzi? :" <<endl;
      cin >> n;
      if (word == m)      // <<<<<<<<<<  error
       fout << n << " ";  // <<<<<<<<<< error
      else
       fout << word << " ";
    }
      cout << line << endl;
    }
  else cout << "Unable to open file";
  return 0;

}



Это сообщение отредактировал(а) toader - 17.6.2009, 13:52
PM MAIL   Вверх
xvr
Дата 17.6.2009, 13:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 35
Всего: 223



Твоя программа читает строку (21 строка исходника) и печатает ее, затем  проверяет только первое слово в следующей строке (строка 24 исходника), при этом она задает свой сакральный вопрос на каждой строке входного файла  smile 
Что бы она не задавала вопрос каждый раз, код, который собственно задает вопрос, нужно вынести из цикла.
А что бы не пропускала лишние строки строки 21-23 нужно убрать совсем. Строку 35 тоже.

Вообще программа производит впечатление кусков исходников надерганных из разных мест и собранных в одну большую кучу (без понимания того, что там делается)  smile 

PM MAIL   Вверх
toader
Дата 17.6.2009, 13:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 12.6.2009

Репутация: нет
Всего: нет



Цитата(xvr @ 17.6.2009,  13:55)
Вообще программа производит впечатление кусков исходников надерганных из разных мест и собранных в одну большую кучу (без понимания того, что там делается)  smile

я слехка изменил код 
"Это сообщение отредактировал(а) toader - 17.6.2009, 13:52 "   
прогблмы всё ишё на свойх местах?

Это сообщение отредактировал(а) toader - 17.6.2009, 14:00
PM MAIL   Вверх
toader
Дата 17.6.2009, 14:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 12.6.2009

Репутация: нет
Всего: нет



вот завершил код.. просмотрел в деБуге всё делает так как надо.. но.. но.. но почему-то в новом файле vasea-out нечего не пишет((((( помогите пожалуйста smile



Код

#include <iostream>
#include <fstream>
#include <string>
using namespace std;

int main()
{
    string line;
    std::ifstream finp("./src/example.txt");
    std::ofstream fout("./src/vasea-out.txt");
    if (!finp || !fout)
    {           std::cout << "Error opening file" << std::endl;
        return 1;
    }
    std::string word;
    while (!finp.eof())
    {
     getline (finp,line);
        cout << line << endl;
        cout << endl;
        finp >> word;
        string m,n;
        cout << "Ce cuvint doritzi sa modificatzi? :" <<endl;
        cin >> m;
        cout << "Cu ce cuvint doritzi sal modificatzi? :" <<endl;
        cin >> n;

        if (word == m)
            fout << n << " ";
        else
            fout << word << " ";
    }
}

PM MAIL   Вверх
xvr
Дата 17.6.2009, 15:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 35
Всего: 223



Что то незаметно там никаких изменений. Как getline стоял в 18й строке, так и стоит
Еще раз повторяю - строки 22-26 перенести и поставить перед циклом (перед строкой 16)
Строки 18-20 удалить

PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0556 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.