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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> запись строки по символу, который ищем, запись строки по символу, который ищем 
V
    Опции темы
kshyms
  Дата 6.2.2012, 13:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 303
Регистрация: 30.8.2006
Где: Душанбе

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



Код

#include <fstream>
#include <string>
#include <windows.h>
using namespace std;
int main()
{
  ifstream infile("m.txt");
  ofstream outfile("email.txt");
  string word;
  while ( infile >> word )
          string str[25]= word;
        char c='@';
         for (int i = 1; // перебор значений слова
                  if(str[i]=c)goto yt;
      
                  ++i)
  std:: cout << word<<"\n"<< std::flush;
   system("PAUSE");       
goto yt:
 outfile << word <<"\n";запись слова

    return EXIT_SUCCESS;
}


Ошибки при записи строки по символу который ищем


Это сообщение отредактировал(а) kshyms - 6.2.2012, 15:35
PM MAIL WWW Skype   Вверх
bsa
Дата 6.2.2012, 14:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

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



опять хаотичный набор символов? Отформатируй код сначала.
в строке 11 у тебя создается массив строк. Это нормально?
И вообще, задача у тебя сформулирована крайне нечетко. Не охота догадываться.
PM   Вверх
kshyms
Дата 6.2.2012, 15:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 303
Регистрация: 30.8.2006
Где: Душанбе

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



Код

#include <fstream>
#include <string>
#include <windows.h>
using namespace std;
int main()
{
  ifstream infile("m.txt");//входной файл
  ofstream outfile("email.txt");//выходной файл
  string word;
  while ( infile >> word )
          string str= word;
        char c='@';
         for (int i = 1; // перебор символов слова 
                  if(str[i]=c)goto yt; //если в слове символ @ тогда переход на метку и запись слова в выходной файл 
      
                  ++i)
  std:: cout << word<<"\n"<< std::flush;
   system("PAUSE");       
goto yt:
 outfile << word <<"\n";запись слова

    return EXIT_SUCCESS;
}

Задача
Запись слова в файл email.txt только если в слове имеется знак @  а если нет не записываем

Это сообщение отредактировал(а) kshyms - 6.2.2012, 15:45
PM MAIL WWW Skype   Вверх
bsa
Дата 6.2.2012, 15:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

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



Объясни, что делает код:
Код
         for (int i = 1; // перебор значений слова
                  if(str[i]=c)goto yt;
      
                  ++i)
  std:: cout << word<<"\n"<< std::flush;

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


Опытный
**


Профиль
Группа: Участник
Сообщений: 303
Регистрация: 30.8.2006
Где: Душанбе

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



for (int i = 1; // перебор от 1 до последнего символа слова заканчивающегося " " пробелом
                  if(str[i]=c)goto yt; условие если какой либо из символов слова равен @ переход на запись 
      
                  ++i)
  std:: cout << word<<"\n"<< std::flush;// слово с новой строки
PM MAIL WWW Skype   Вверх
bsa
Дата 6.2.2012, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

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



kshyms, отформатируй код согласно правилам, а не так, как тебе хочется чтобы было!!! Ошибки сами бросятся в глаза.
PM   Вверх
kshyms
Дата 6.2.2012, 19:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 303
Регистрация: 30.8.2006
Где: Душанбе

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



Я читаю из того что нашел это лучшее Эккель Б. - Философия С++. Том 1. Введение в стандартный С++ Но того что надо, еще не нашел.

Добавлено @ 19:55
Функция read считывает некоторое количество байт из входного потока. Эта
функция может считывать любую переменную или экземпляр из потока. Я думаю что  это подходит!

Это сообщение отредактировал(а) kshyms - 6.2.2012, 20:06
PM MAIL WWW Skype   Вверх
kshyms
Дата 6.2.2012, 20:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 303
Регистрация: 30.8.2006
Где: Душанбе

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



Цитата

код согласно правилам
 Это тоже  

Это сообщение отредактировал(а) kshyms - 6.2.2012, 20:07
PM MAIL WWW Skype   Вверх
feodorv
Дата 6.2.2012, 22:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

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



Мда. Попробуем разобраться)))

Цитата(kshyms @  6.2.2012,  13:59 Найти цитируемый пост)
  while ( infile >> word )

То есть читаем пословно, пока есть чего читать. Далее следует набор операторов, которые не попадают в while, потому что его надо бы использовать так:

Код

while ( infile >> word )
{
  ... набор операторов ...
}



Цитата(kshyms @  6.2.2012,  13:59 Найти цитируемый пост)
string str[25]= word;

Что это? Способ определить буфер в 25 символов с записью в него word? А получился список на 25 строк... Да и зачем нам дополнительная переменная, ведь мы и так word имеем))) word[i] и word.length() могём)))


Цитата(kshyms @  6.2.2012,  15:31 Найти цитируемый пост)
         for (int i = 1; // перебор символов слова 
                  if(str[i]=c)goto yt; //если в слове символ @ тогда переход на метку и запись слова в выходной файл 
      
                  ++i)

Что-то жуткое(((( Вместо условия в for имеем целый оператор вкупе с goto. goto крайне не рекомендуется использовать, тем более всё можно сделать гораздо культурнее:
Код

for( int i = 0; i < word.length(); ++i) if( word[i] == '@' ){ ... что-то делаем ... }

Кроме того, в классе string есть функция find.


Цитата(kshyms @  6.2.2012,  13:59 Найти цитируемый пост)
std:: cout << word<<"\n"<< std::flush;

Не задан заголовочный файл iostream, поэтому cout не будет воспринят.


Итого:
Код

#include <iostream>
#include <fstream>
#include <string>
#include <windows.h>

using namespace std;

int main()
{
  ifstream infile("m.txt");
  ofstream outfile("email.txt");
  string word;

  while ( infile >> word )
  {
//    std::cout << word << std::newl;
    for( int i = 0; i < word.length(); ++i)
      if( word[i] == '@' )
      { 
        outfile << word << endl; 
        break; 
      }
  }

  return EXIT_SUCCESS;
}


И не забываем закрывать файлы!!!


--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
kshyms
Дата 7.2.2012, 07:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 303
Регистрация: 30.8.2006
Где: Душанбе

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



feodorv,  Голова! Профи!
PM MAIL WWW Skype   Вверх
kshyms
Дата 7.2.2012, 12:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 303
Регистрация: 30.8.2006
Где: Душанбе

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



Код

#include <iostream>
#include <fstream>
#include <string>
#include <windows.h>

using namespace std;

int main()
{
  ShellExecute(NULL, "open", "http://mysite.ru",NULL, NULL, SW_SHOW); 
ifstream  outfile("m.txt");
ifstream infile("m.txt");
  ofstream outfile("email.txt");
  string word;

  while ( infile >> word )
  {
//    std::cout << word << std::newl;
    for( int i = 0; i < word.length(); ++i)
      if( word[i] == '@' )
      { 
        outfile << word << endl; 
        break; 
      }
  }

  return EXIT_SUCCESS;
}

  
Как записать содержимое ссылки в файл m.txt строки 10 и 11


Это сообщение отредактировал(а) kshyms - 7.2.2012, 13:04
PM MAIL WWW Skype   Вверх
bsa
Дата 7.2.2012, 13:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

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



feodorv, молодец. оказал медвежью услугу. Теперь вместо тренировки он возьмет готовенькое. Ты что, думаешь, что я не заметил всех косяков?  smile 
Просто он уже не первый раз пишет какой-то хаотичный набор операторов. Это явно говорит о том, что человек не понимает своих действий. Я каждый раз говорю "отформатируй код", но он этого упорно не делает. Из чего следует, что собеседников своих он не уважает и делать ничего сам не хочет.

Это сообщение отредактировал(а) bsa - 7.2.2012, 15:43
PM   Вверх
feodorv
Дата 7.2.2012, 14:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

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



Цитата(bsa @  7.2.2012,  13:25 Найти цитируемый пост)
Просто он уже не первый раз пишет какой-то хаотичный набор операторов. Это явно говорит о том, что человек не понимает своих действий. 

Прошу прощения, не знал  smile Больше готовенького не будет smile 


--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
kshyms
  Дата 7.2.2012, 16:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 303
Регистрация: 30.8.2006
Где: Душанбе

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



кто желает плюсиков?
PM MAIL WWW Skype   Вверх
bsa
Дата 7.2.2012, 17:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

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



kshyms, если ты хочешь получит готовый ответ, то обращайся в центр помощи.
А в этом разделе помогают тебе самому решить проблему.

M
bsa
Сообщи мне в ПМ, если желаешь, чтобы я перенес эту тему в центр помощи


Это сообщение отредактировал(а) bsa - 7.2.2012, 17:09
PM   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

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

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

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

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


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

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


 




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


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

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