Форум: Форум C++Разное
Новые темы: 00
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум C++

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Вставить в массив символов несколько элементов со сдвигом всех остальных элементов
 
 автор: morgan18   (15.01.2012 в 00:50)   письмо автору
 
 

нужно в строку символов вставить несколько символов.
я пол инета перерыл на С++ даже не представляю как это делать(((((( помогите плиз.
если не код, то хоть алгоритмом помогите.

  Ответить  
 
 автор: morgan18   (15.01.2012 в 12:07)   письмо автору
 
   для: morgan18   (15.01.2012 в 00:50)
 

закроййте тему

  Ответить  
 
 автор: cheops   (15.01.2012 в 13:51)   письмо автору
 
   для: morgan18   (15.01.2012 в 00:50)
 

На всякий случай все-таки приведу решение для char строк, здесь "Hello world" превращается в "Hello program world" (в предположении, что под все строки программы выделено достаточно памяти). Следует учитывать, что в промышленном коде char-строки лучше избегать, так как постоянно приходиться следить за памятью. Лучше использовать динамические строки, объем памяти, выделенной под который изменяется автоматически - это позволяет избежать целого класса ошибок.
#include <iostream>
using namespace std;

// Прототип функции 
char *substr(char *str, int number);
// Глнавная функция
int main()
{
  char str[80] = "Hello world";
  char insert[80] = "program ";
  char tmp[80];
  /*
  str = Hello world
  tmp = world
  str = Hello
  str = str + programm
  str = str + tmp
  */

  // Копируем "word" в "temp"
  strcpy(tmp, substr(str, 6));
  // Удлаяем из str все, после 6 символа
  str[6] = '\0';
  // Добавляем к str строку insert
  strcat(str, insert);
  // Добавляем к str строку tmp
  strcat(str, tmp);
  // Выводим результат
  cout << str << endl;

  // Пауза перед завершением программы
  system("pause");

  return 0;
}
char *substr(char *str, int number)
{
  return str + number;
}

  Ответить  
 
 автор: morgan18   (15.01.2012 в 17:15)   письмо автору
 
   для: cheops   (15.01.2012 в 13:51)
 

Спасибо. Если на то пошло, то какими функциями можно записать вещественное число в массив символов???

  Ответить  
 
 автор: cheops   (15.01.2012 в 17:58)   письмо автору
 
   для: morgan18   (15.01.2012 в 17:15)
 

Лучше всего старой доброй sprintf() пользоваться с её богатыми возможностями форматирования.

  Ответить  
 
 автор: morgan18   (19.01.2012 в 20:46)   письмо автору
11.1 Кб
 
   для: cheops   (15.01.2012 в 17:58)
 

я нашел класс который преобразует строку в матеметическое выражение и считает это выражение, немного преобразовал его.
я никак не могу понять почему при вызове метода класса который считает все это несколько раз считается только значение введенное первый раз, причем в примере использования этого класса он с разными значениями работает нормально.
как сделать, чтобы считало каждый раз новое?
все это в прикрепленном проекте (MS VC++ 6.0)

  Ответить  
 
 автор: cheops   (21.01.2012 в 11:44)   письмо автору
 
   для: morgan18   (19.01.2012 в 20:46)
 

А как воспроизвести ситуацию, т.е. что нужно вводить и что должно получиться. У меня при запуске в Visual Studio 2010 выводиться
Введите функцию y(x)=2*1.000000
2
2*1.000000
2

Это верно?

  Ответить  
 
 автор: morgan18   (21.01.2012 в 15:32)   письмо автору
 
   для: cheops   (21.01.2012 в 11:44)
 

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

Введите функцию y(x)=2*1.000000
 2
 2*2.000000
 4

я вызываю метод f. В него передается введенное выражение(2*x) и x(в первом случае 1, во втором - 2), оно должно подставить место x в первом случае 1, во втором 2, но подставляется почемуто 1. как это исправить?

cout<<function.f(func, 1)<<endl;
cout<<function.f(func, 2)<<endl;

  Ответить  
 
 автор: cheops   (21.01.2012 в 20:10)   письмо автору
 
   для: morgan18   (21.01.2012 в 15:32)
 

Смотрите, у вас сначала строка func равна 2*x, однако после первого вызова
cout<<function.f(func, 1)<<endl;
строка func равна "2*1.000000", т.е в неё уже не может подставиться новое значение. Попробуйте в первую строку подставить вместо 1 => 2 и программа вернет вам верный результат равный 4.

  Ответить  
 
 автор: morgan18   (21.01.2012 в 22:37)   письмо автору
 
   для: cheops   (21.01.2012 в 20:10)
 

спасибо попробую)))

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования