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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.04.2009, 10:58   #1
elenSV
Пользователь
 
Регистрация: 25.04.2009
Сообщений: 35
Смех поменять элементы каждого числа массива слева направо

поменять элементы каждого числа массива слева направо
#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];
}

X = StrToInt(Str2); //обратно строку - в число
если да то как
elenSV вне форума Ответить с цитированием
Старый 26.04.2009, 15:07   #2
elenSV
Пользователь
 
Регистрация: 25.04.2009
Сообщений: 35
По умолчанию

помогите кто чем может
elenSV вне форума Ответить с цитированием
Старый 01.05.2009, 12:14   #3
elenSV
Пользователь
 
Регистрация: 25.04.2009
Сообщений: 35
По умолчанию

проверьте пожлста
Код:
#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;
}

Последний раз редактировалось elenSV; 01.05.2009 в 16:19.
elenSV вне форума Ответить с цитированием
Старый 01.05.2009, 12:40   #4
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Код:
#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
#include <conio.h>


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;
string Str1;
char buf[100],t;

for (int J = 0; J < i; J++)
 {
  X = MyVector[J];
  itoa(X,buf,10);
  Str1 = (string)buf;


  for (int k=0; k<Str1.length()/2; k++)
   {
    t = Str1[k];
    Str1[k] = Str1[Str1.length()-k-1];
    Str1[Str1.length()-k-1] = t;
   }

  MyVector[J] = atoi(Str1.c_str());
 }
}

//----------------------
int main ()
{
vec MyVector;
int i = colvo();
vvod(MyVector, i);
preobr(MyVector, i);
outputResult(MyVector, i);
getch();
return 0;
}
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 01.05.2009, 15:09   #5
elenSV
Пользователь
 
Регистрация: 25.04.2009
Сообщений: 35
По умолчанию

а как это работает:
Цитата:
int X;
string Str1;
char buf[100],t;

for (int J = 0; J < i; J++)
{
X = MyVector[J];
itoa(X,buf,10);
Str1 = (string)buf;


for (int k=0; k<Str1.length()/2; k++)
{
t = Str1[k];
Str1[k] = Str1[Str1.length()-k-1];
Str1[Str1.length()-k-1] = t;
}

MyVector[J] = atoi(Str1.c_str());
}

Последний раз редактировалось elenSV; 01.05.2009 в 16:18.
elenSV вне форума Ответить с цитированием
Старый 01.05.2009, 15:27   #6
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

elenSV, используйте тег CODE!

Код:
int X;
string Str1;
char buf[100],t;

for (int J = 0; J < i; J++) 
 {
  X = MyVector[J]; // копируем в X элемент из вектора
  itoa(X,buf,10);  // преобразуем X в строку и помещаем результат в buf
  Str1 = (string)buf; // копируем в Str1 текст buf

  for (int k=0; k<Str1.length()/2; k++) // идем до середины строки
   {
   // и меняем местами 1 и последний, 2-й и предпоследний.....элементы
    t = Str1[k];
    Str1[k] = Str1[Str1.length()-k-1];
    Str1[Str1.length()-k-1] = t;
   }

  MyVector[J] = atoi(Str1.c_str());  // преобразуем строку в число и кладем обратно в вектор
 }
}
Можно и без Str1 обойтись и работать прямо с buf (только длину тогда нужно вычислять функцией strlen).
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 08.05.2009, 22:44   #7
elenSV
Пользователь
 
Регистрация: 25.04.2009
Сообщений: 35
По умолчанию

Kdevelop отказывается компилировать
какие директивы надо для этого подключать:
Код:
 itoa(X,buf,10);  // преобразуем X в строку и помещаем результат в buf
  Str1 = (string)buf; // копируем в Str1 текст buf

  for (int k=0; k<Str1.length()/2; k++) // идем до середины строки
   {
   // и меняем местами 1 и последний, 2-й и предпоследний.....элементы
    t = Str1[k];
    Str1[k] = Str1[Str1.length()-k-1];
    Str1[Str1.length()-k-1] = t;
   }
elenSV вне форума Ответить с цитированием
Старый 08.05.2009, 22:50   #8
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
какие директивы надо для этого подключать:
Код:
#include <string>
#include <stdlib.h>
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 10.05.2009, 16:11   #9
elenSV
Пользователь
 
Регистрация: 25.04.2009
Сообщений: 35
По умолчанию

а если делать с модулями
компилятор сильно ругается - его не устраивает запись maina и в ф-и preobr косяки находит
помогите кто чем может
Код:
//main.cpp
#include <iostream>
using namespace std;
#include "myVector.h"
int main ()
{    vec MyVector;    
    MyVector.resize( colvo() );        
    vvod(MyVector);            
    preobr(MyVector);        
    outputResult(MyVector);        
return 0;    
}
//myVectoor.h
# ifndef myVector_h
# define myVector_h
#include <vector>                
typedef std::vector<int> vec;    
int colvo();                    
void vvod (vec &MyVector, int size);        
int preobr (vec &MyVector, int size);    
void outputResult (vec &MyVector,int size);    
# endif

//progr.cpp
#include <iostream>
using namespace std;
#include "myVector.h"
#include <string> 
#include <cstdlib>
int colvo ()
{    int size;
    cout<<"Введите количество элементов массива"<<endl;
    cin>>size;
    return size;
}
void (vec &MyVector, int size)
{    cout << "Введите элементы массива" << endl;
    for (int i=0; i<size; ++i)
        cin >> MyVector[i];
    return;
}
int preobr (vec &MyVector, int size)
{
int X;
std::string Str1, Str2;

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

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

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

  X = atoi(Str2.c_str());
  }
}
void outputResult (vec &MyVector, int size)
{    cout<<"Новый массив:"<<endl;
    for (int i=size-1; i>=0; --i)
        cout<<MyVector[i]<<endl;    
    return;
}

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

}
elenSV вне форума Ответить с цитированием
Старый 10.05.2009, 16:31   #10
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
компилятор сильно ругается - его не устраивает запись maina и в ф-и preobr косяки находит
Еще бы не ругался! Вы сначала посмотрите на ошибки, которые вам компилятор говорит.
Например:
Код:
void (vec &MyVector, int size)
{    cout << "Введите элементы массива" << endl;
    for (int i=0; i<size; ++i)
        cin >> MyVector[i];
    return;
}
Это что за функция такая, без названия?
Код:
 vvod(MyVector);            
    preobr(MyVector);
А здесь почему один аргумент, когда должно быть два?

Компилятор вам указывает на ошибки. Так что не пренебрегайте этим.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
поменять элементы каждого числа массива слева направо elenSV Общие вопросы C/C++ 1 15.06.2009 21:10
Ввести двумерный массив и поменять в нём местами элементы Ku6ep Помощь студентам 3 23.12.2008 18:25
переписать из массива в линейный двунаправленный список чётные элементы массива Black_Ak24 Помощь студентам 12 08.01.2008 00:44
Найти числа,которые читаются слева-направо и справа-налево одинаково(например, 1001). Паскаль NikLik Помощь студентам 8 22.11.2007 23:00