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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.04.2012, 19:58   #1
lowercase
Пользователь
 
Регистрация: 15.05.2010
Сообщений: 88
По умолчанию конвертация числа в строку конкатенация строк

Здраствуйте. Вот уже сижу второй час и у меня просто могз начинает вскипать от строк в с++. есть код программы которая раскладывает число на простые множители.

Код:
#include <stdio.h>

int gm(n){
  if (n < 2) return 1;
  int i = 2;
  while(n % i > 0) i++;
  return i;
}

void main(){                    
  int n = 0;
  scanf("%d",&n);

  int lm = gm(n);
  n = n / lm;
  printf("%d",lm);
    while (n > 1){
      lm = gm(n);
      n = n / lm;
      printf(" * %d",lm);
  }
}
так вот тут выводится сразу на экран результат. меня интересует как сначало сформировать строку, а потом уже ее вывести? у меня это вечная проблема со строками. в паскале нет проблем. а вот си постоянно боком вылезит
lowercase вне форума Ответить с цитированием
Старый 20.04.2012, 20:23   #2
kineziz
Форумчанин
 
Регистрация: 22.12.2011
Сообщений: 378
По умолчанию

Тебе результат преобразовать в строку да?
Большинство хороших программистов делают свою работу не потому, что ожидают оплаты или признания, а потому что получают удовольствие от программирования.
kineziz вне форума Ответить с цитированием
Старый 20.04.2012, 20:42   #3
lowercase
Пользователь
 
Регистрация: 15.05.2010
Сообщений: 88
По умолчанию

да. ну приблезительно так получается(на паскале):
Код:
  function gpf(n: longint): string;
  var lm: longint;
      lms, res: string;
  begin
    res := '';
    lm := gm(n); // gm(n) та же функция, что описана выше. 
    n := n div lm;
    Str(lm,lms);
    res := res + lms;
    while(n > 1) do begin
      lm := gm(n);
      n := n div lm;
      Str(lm,lms); // число пеерводим в строку
      res := res + ' * ' +lms; // складываем строки
    end;
    gpf := res;
  end;
то есть функция возвращает строку с результатом. вот этого я не могу никак добится на с++
например, при заданом числе 10 результат(строка) будет "2 * 5";при 2100: "2 * 2 * 3 * 5 * 5 * 7".

Последний раз редактировалось lowercase; 20.04.2012 в 20:49.
lowercase вне форума Ответить с цитированием
Старый 20.04.2012, 22:03   #4
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

lowercase

могз начинает вскипать от строк в с++.

Хм. это забавно, потому что у тебя в программе нету ни строк, ни C++ oO

как сначало сформировать строку, а потом уже ее вывести?

std::stringstream ss;

...
в цикле

ss << " * " << lm;

.. вывод строки:

std::cout << ss.str() << std::endl;
Rififi вне форума Ответить с цитированием
Старый 20.04.2012, 22:34   #5
lowercase
Пользователь
 
Регистрация: 15.05.2010
Сообщений: 88
По умолчанию

Цитата:
Сообщение от Rififi Посмотреть сообщение
lowercase
Хм. это забавно, потому что у тебя в программе нету ни строк, ни C++
1. строки не писал ибо у меня там сущий бред.
2. вроде понял почему не с++.

на счет std::stringstream. спасибо попробую.
lowercase вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Конвертация строкового потока в С-строку HelenSecuriter Помощь студентам 5 24.07.2011 20:53
Из числа в строку AhAsm Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 6 09.02.2011 11:38
Преобразование числа в строку )Игнат( Общие вопросы Delphi 6 06.07.2008 09:32
Числа в строку DeDoK Общие вопросы Delphi 8 07.06.2008 00:08