Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > массивы


Автор: elenSV 26.4.2009, 10:20
поменять элементы каждого числа массива слева направо 
Код

#include <iostream>
#include <algorithm>
#include <vector>

using namespace std;
typedef vector<int> vec;

int colvo ()
{
int size = 0;
cout << "Введите количество элементов массива" << endl;
cin >> size;
return size;
}
void vvod(vec &MyVector, int size)
{ cout << "Введите элементы массива" << endl;
for (int i=0; i<size; ++i)
cin >> MyVector[i];
return;
}
void outputResult(const vec &MyVector, int size)
{
cout << "Новый массив:" << endl;
for (int i = 0; i < size; i++)
cout << MyVector[i] << endl;
}

void preobr(vec &MyVector, int size)
{
?????????????????????????????????
}

int main ()
{
vec MyVector;
int i = colvo();
vvod(MyVector, i);
preobr(MyVector, i);
outputResult(MyVector, i);

return 0;
}


У меня никак не получается заменить все числа на такие числа, которые получаются из исходного записью его цифр в обратном порядке 

Здесь надо использовать что то вроде этого:
int X = 1234567890;

AnsiString Str1 = IntToStr(X); //вот тут преобразовываем число в строку
AnsiString Str2 = "";

for (int I = Str1.Length(); I > 0; I--) //выворачиваем строку наизнанку
{
Str2 = Str2 + Str1[i];
}
 smile 
X = StrToInt(Str2); //обратно строку - в число
если да то как
      

Автор: Zakary 26.4.2009, 10:49
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

Код

int main()
{
  vector<int> v;
  unsigned int i;

  for(i=0; i<10; i++) v.push_back(i);

  cout << "Initial: ";
  for(i=0; i<v.size(); i++) cout << v[i] << " ";
  cout << endl;

  reverse(v.begin(), v.end());

  cout << "Reversed: ";
  for(i=0; i<v.size(); i++) cout << v[i] << " ";

  return 0;
}


может подойдет?

Автор: Dov 26.4.2009, 11:19
ребятки, у вас кнопка КОД не фурычит?

Автор: elenSV 26.4.2009, 12:25
 smile 
блин а можно это записать с использованием ф-ий:
int colvo () 
void vvod
 void outputResult
А то я боюсь с нашим преподом это не проканает
 smile 

Автор: elenSV 1.5.2009, 10:43
проверьте пожлста - правильно али что?
Код

#include <iostream>
#include <algorithm>
#include <vector>

using namespace std;
typedef vector<int> vec;

int colvo ()
{
int size = 0;
cout << "Введите количество элементов массива" << endl;
cin >> size;
return size;
}
void vvod(vec &MyVector, int size)
{
int val = 0;
cout << "Введите элементы массива" << endl;
for(int i = 0; i < size; i++)
{
cin >> val;
MyVector.push_back(val);
}
}


void outputResult(const vec &MyVector, int size)
{
cout << "Новый массив:" << endl;
for (int i = 0; i < size; i++)
cout << MyVector[i] << endl;
}

void preobr(vec &MyVector, int i)
{

int X;
AnsiString Str1, Str2;


for (int J = 0; J < i; J++)
  {
  X = MyVector[J];

  Str1 = IntToStr(X); 
  Str2 = "";

  for (int I = Str1.Length(); I > 0; I--) 
    {
    Str2 = Str2 + Str1[I];
    }

  MyVector[J] = StrToInt(Str2);
  }
}

int main ()
{
vec MyVector;
int i = colvo();
vvod(MyVector, i);
preobr(MyVector, i);
outputResult(MyVector, i);

return 0;
}



Автор: zim22 1.5.2009, 12:36
Цитата(elenSV @  1.5.2009,  10:43 Найти цитируемый пост)
проверьте пожлста - правильно али что?

проверять преподаватель будет.
у вас есть конкретные вопросы?...

Автор: elenSV 8.5.2009, 21:47
Код

int X;
AnsiString Str1, Str2;


for (int J = 0; J < i; J++)
  {
  X = MyVector[J];

  Str1 = IntToStr(X); 
  Str2 = "";

  for (int I = Str1.Length(); I > 0; I--) 
    {
    Str2 = Str2 + Str1[I];
    }

  MyVector[J] = StrToInt(Str2);
  }

отказывается компилировать
какие здесь директивы ещё подключать smile 

Автор: zim22 9.5.2009, 07:09
Цитата(elenSV @  8.5.2009,  21:47 Найти цитируемый пост)
отказывается компилироватькакие здесь директивы ещё подключать 

в какой среде разработки вы пытаетесь компилировать? ключевые слова IntToStr и AnsiString принадлежат к Borland C++ Builder. Значит или используйте его или найдите аналоги в стандартной поставке С++ 

AnsiString - std::string из <string> 
IntToStr - atoi из <cstdlib>
Str1.Length() - str1.length();

Автор: elenSV 9.5.2009, 09:07
я компилирую на Kdevelop

у меня получилось что то вроде этого
Код

int X;
std::string Str1, Str2;

for (int J = 0; J < i; J++)
  {
  X = MyVector[J];

  Str1 =atoi(X); 
  Str2 = "";

  for (int I = str1.length(); I > 0; I--) 
    {
    Str2 = Str2 + Str1[I];
    }

  MyVector[J] = itoa(Str2);
  }


но тоже не оч компилируется - а в maine всё правильно записано?

Автор: zim22 9.5.2009, 09:19
>IntToStr - atoi из <cstdlib>
я перепутал. вам нужно из int получить string. нужна itoa

Цитата(elenSV @  9.5.2009,  09:07 Найти цитируемый пост)
но тоже не оч компилируется

прекратите говорить загадками и выложите ошибки компилятора.
или он так и пишет: "скомпилил, но не оч"?

Автор: elenSV 9.5.2009, 09:46
не а вообще ф-и atoi и itoa можно так записывать:
Код

 Str1 =atoi(X); 
MyVector[J] = itoa(Str2);

 smile 

Автор: math64 9.5.2009, 13:41
Нет, вот так
Код

std::string Str1, Str2;
int X;
Str1 =itoa(X); 
X = atoi(Str2.c_str());

Автор: elenSV 9.5.2009, 16:42
а для ф-и 
int I = str1.length()
надо ещё что подключать?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)