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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [C++] Вывод строки, содержащей двузначное число 
V
    Опции темы
VampirDX
  Дата 21.10.2007, 16:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Всем привет. В общем, задали написать прогу, вот текст
"Написать прогу, которая считывает текст из файла и выводит на экран только строки, содержащие двузначные числа."
  при том, сказали, использовать функцию isdigit. помогите, кто может.
PM MAIL   Вверх
Optimus
Дата 21.10.2007, 17:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Код

#include <conio.h>
#include <fstream.h>
#include <ctype.h>


void main()
{
  clrscr();

  char str[300];

  ifstream in;
  in.open("myFile.txt");

  if (!in)
  {
    cout << "Cannot open file";
    getch();
    return;
  }


  while(!in.eof())
  {
    in.getline(str, sizeof(str));

    for (int i = 0; str[i] != '\0'; ++i)
    if ( isdigit(str[i]))
    {
      for (int j = i + 1; str[j] != '\0' && isdigit(str[j]); ++j);

      if (j - i == 2 )
      {
        cout << str << endl;
      }

      i = j;
    }
  }

  in.close();


  getch();
}


напишите примеры строк которые надо выводить, и которые не надо


Это сообщение отредактировал(а) Optimus - 21.10.2007, 17:54
--------------------
"постановка задачи наполовину решает саму задачу"
PM MAIL   Вверх
VampirDX
Дата 21.10.2007, 18:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



выдает 2 ошибки:
 clrscr - идентификатор не найден( и я вообще хз что такое clrscr)
 j - необъявленная переменная
PM MAIL   Вверх
Optimus
Дата 21.10.2007, 18:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(VampirDX @  21.10.2007,  18:19 Найти цитируемый пост)
clrscr - идентификатор не найден( и я вообще хз что такое clrscr)

clrscr() - очищает экран, можно не писать

Цитата(VampirDX @  21.10.2007,  18:19 Найти цитируемый пост)
 j - необъявленная переменная 

тогда объявить там где
Код

char str[300];


--------------------
"постановка задачи наполовину решает саму задачу"
PM MAIL   Вверх
VampirDX
Дата 21.10.2007, 19:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



ЗАВЕЛАСЬ smile  smile 
спасибо огромное!!!

Добавлено через 1 минуту и 26 секунд
optimus слух, можешь объяснить вот эту часть в кратце, а то мои мозги уже не фильтруют?
 
 
Код

for (int i = 0; str[i] != '\0'; ++i)
    if ( isdigit(str[i]))
    {
      for (int j = i + 1; str[j] != '\0' && isdigit(str[j]); ++j);

      if (j - i == 2 )
      {
        cout << str << endl;
      }

      i = j;
    }

PM MAIL   Вверх
Optimus
Дата 21.10.2007, 20:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(VampirDX @  21.10.2007,  19:42 Найти цитируемый пост)
if ( isdigit(str[i]))

проверяем если символ в строке это цифра

Цитата(VampirDX @  21.10.2007,  19:42 Найти цитируемый пост)
for (int j = i + 1; str[j] != '\0' && isdigit(str[j]); ++j);

определяем где заканчивается подстрока цифр

Цитата(VampirDX @  21.10.2007,  19:42 Найти цитируемый пост)
if (j - i == 2 )

проверяем если количества цифр ровна двум


Это сообщение отредактировал(а) Optimus - 21.10.2007, 20:42
--------------------
"постановка задачи наполовину решает саму задачу"
PM MAIL   Вверх
VampirDX
Дата 21.10.2007, 22:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



благодарствую
PM MAIL   Вверх
wolmor
Дата 24.10.2007, 11:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



помогите плиз эту прогу на C# написать, чтобы массив вводился с клавиатуры, а не из файла  smile
PM MAIL   Вверх
Optimus
Дата 24.10.2007, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Код

static void Main(string[] args)
{
  string[] myStrings = new string[3];

  for (int i = 0; i < myStrings.Length; ++i)
  {
    Console.WriteLine("Введите {0} строку", i + 1);
    myStrings[i] = Console.ReadLine();
  }

  Console.WriteLine("\n");

  for (int i = 0; i < myStrings.Length; ++i)
  {
    for (int j = 0; j < myStrings[i].Length; ++j)
    {
      if (Char.IsDigit(myStrings[i][j]))
      {
        int k;
        for (k = j + 1; k < myStrings[i].Length && Char.IsDigit(myStrings[i][k]); ++k);

        if (k - j == 2)
        {
          Console.WriteLine(myStrings[i]);
        }

        j = k;
      }
    }
  }

  Console.ReadLine();
}



Это сообщение отредактировал(а) Optimus - 24.10.2007, 13:36
--------------------
"постановка задачи наполовину решает саму задачу"
PM MAIL   Вверх
wolmor
Дата 24.10.2007, 17:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Optimus, большое спасибо
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

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

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


 




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


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

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