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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.03.2010, 19:11   #1
KLOP
Пользователь
 
Регистрация: 20.11.2008
Сообщений: 39
По умолчанию C++ Указатели

Здраствуйте помогите пожалуйста,сделать вместо глобальных переменых указатели и передавать их функциям
Код:
#include <iostream.h>
#include <math.h>
#include <vcl.h>
void Obmen();
int M[10],P[10],temp;
void Gen();
void Vivod();
int main()
{
Gen();
Vivod();
Obmen();
Vivod();
cin>>temp;
        return 0;
}
void Obmen()
{
for(int i=0;i<10;i++)
 {
   temp=M[i];
   M[i]=P[i];
   P[i]=temp;
 }
}
void Gen()
{
for(int i=0;i<10;i++)
 {
  M[i]=random(50);
  P[i]=random(50);
 }
}
void Vivod()
{
cout<<"---------------------------\n";
for(int i=0;i<10;i++)
{
 if(M[i]<10)
   cout<<"M["<<i<<"]="<<M[i]<<"          "<<" P["<<i<<"]="<<P[i]<<'\n';
 else
   cout<<"M["<<i<<"]="<<M[i]<<"          "<<"P["<<i<<"]="<<P[i]<<'\n';
}
}
KLOP вне форума Ответить с цитированием
Старый 06.03.2010, 20:00   #2
KLOP
Пользователь
 
Регистрация: 20.11.2008
Сообщений: 39
По умолчанию

Вот что я сделал,но у меня массивы не меняються теперь значениями(
Код:
#include <iostream.h>
#include <math.h>
#include <vcl.h>
void Obmen(int *p1,int *p2,int *p3);
void Gen(int *p1,int *p2);
void Vivod(int *p1,int *p2);
int main()
{
int M[10],P[10],temp;
int *p1=M;
int *p2=P;
int *p3=&temp;
Gen(&M[0],&P[0]);
Vivod(&M[0],&P[0]);
Obmen(&M[0],&P[0],&temp);
Vivod(&M[0],&P[0]);
cin>>temp;
        return 0;
}
void Obmen(int *p1,int *p2,int *p3)
{
for(int i=-1;i<9;i++)
 {
   *p3=*p1;
   *p1=*p2;
   *p2=*p3;
 }
}
void Gen(int *p1,int *p2)
{
for(int i=0;i<10;i++)
 {
  *p1++=random(50);
  *p2++=random(50);
 }
}
void Vivod(int *p1,int *p2)
{
cout<<"---------------------------\n";
for(int i=0;i<10;i++)
{
 if(*p1<10)
   cout<<"M["<<i<<"]="<<*p1++<<"          "<<" P["<<i<<"]="<<*p2++<<'\n';
 else
   cout<<"M["<<i<<"]="<<*p1++<<"          "<<"P["<<i<<"]="<<*p2++<<'\n';
}
}
KLOP вне форума Ответить с цитированием
Старый 06.03.2010, 20:09   #3
Crusher
Пользователь
 
Регистрация: 13.12.2008
Сообщений: 27
По умолчанию

Код:
void Obmen(int *p1,int *p2,int *p3)
{
for(int i=-1;i<9;i++)
 {
   *p3=*p1;
   *p1=*p2;
   *p2=*p3;
     ++p1; ++p2;
 }
}
попробуй так.

Последний раз редактировалось Crusher; 06.03.2010 в 20:18.
Crusher вне форума Ответить с цитированием
Старый 06.03.2010, 20:13   #4
RUSt88
Участник клуба
 
Регистрация: 29.12.2009
Сообщений: 1,166
По умолчанию

зачем в функции 3 (!!!) указателя? там максимум надо 2 указателя на 2 разных массива, третья переменная temp должна быть локальной!
указатель на массив - это указатель на его первый элемент, знач инкрементом указателя мы перейдем к след элементу массива, но смотри, возможен выход за пределы массива, осторожнее с указателями
прогер C\C++\C#\Delphi
ася: [семь 3]-[97]-[1 шесть]
RUSt88 вне форума Ответить с цитированием
Старый 06.03.2010, 20:27   #5
KLOP
Пользователь
 
Регистрация: 20.11.2008
Сообщений: 39
По умолчанию

спасибо за помощь
KLOP вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Указатели С++ MarihuanaP Помощь студентам 1 09.02.2010 17:06
Указатели sid Помощь студентам 2 02.01.2010 23:23
[C] массивы, указатели, двойные указатели. Iggel Общие вопросы C/C++ 5 05.05.2009 12:39
Указатели!!!!!!!!!!!!!!! focus888 Паскаль, Turbo Pascal, PascalABC.NET 2 01.05.2009 09:13
указатели Armina Общие вопросы C/C++ 4 22.04.2009 20:05