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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.06.2008, 18:34   #1
Sota
Let's keep talking
Форумчанин Подтвердите свой е-майл
 
Аватар для Sota
 
Регистрация: 02.07.2007
Сообщений: 217
Вопрос Перемещение из массива целых чисел... Си

Всем доброго времени суток!
Передо мной стоит такая задача на языке C++:
дан массив типа char содержимое которго:
15|1_2_3_4_5_6_7_8_9_0_11_12_13_14_ 15
Необходимо перенести все числа, начинающиеся с 4 символа в другой целочисленный массив. Числа разделены символом '_'.
Желательно привести листинг алгоритма. Всем заранее спасибо.
Лучше С++, чем ++С...
Sota вне форума Ответить с цитированием
Старый 01.06.2008, 19:51   #2
filosof_x86
...
Форумчанин
 
Аватар для filosof_x86
 
Регистрация: 01.06.2008
Сообщений: 134
По умолчанию

А что означает символ ‘|’ в самом начале строки? Если число, которое стоит перед этой чертой означает, сколько в строке элементов, то (если же нет, то концепция все равно будет ясна):
Код:
#include <iostream>
#include <string>

int process(const char *str, int count, int *out, char n)
{
  int res = 0;
  std::string tmp;
  while(count) {
    tmp.clear();
    count--;
    
    while(*str != '_' && *str != 0) {
      tmp += *str;
      str++;
    }
    if(count) str++;
    
    if(tmp[0] == n) {
      *out = atoi(tmp.c_str());
      out++;
      res++;
    }
  }
  return res;
}

int main()
{
  const char *str = "15|1_2_3_4_5_6_7_8_9_0_11_12_13_14_15",
                 *p = str;
  std::string tmp;

  while(*p != '|') { // оппределяем сколько элементов в строке
    tmp += *p;
    p++;
  }
  p++;

  int count = atoi(tmp.c_str());
  int *out = new int[count];
  
  int res = process(p, count, out, '1');
  std::cout << "res = " << res << std::endl;
  for(int i = 0; i<res; i++) std::cout << "[" << i << "] = " << out[i] << std::endl;
  
  delete [] out;
  return 0;
}
filosof_x86 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Умножение длинных целых чисел Rifler Паскаль, Turbo Pascal, PascalABC.NET 1 04.06.2008 21:12
Создать очередь из n целых чисел вычисляющая по формуле А=х*х+1; evrey Паскаль, Turbo Pascal, PascalABC.NET 1 02.06.2008 20:44
Вывод целых и десятичных чисел Maycal Общие вопросы C/C++ 2 24.10.2007 12:34
Задача: перевод целых чисел в римские n0x Паскаль, Turbo Pascal, PascalABC.NET 4 12.12.2006 19:52