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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.12.2009, 20:06   #1
серг
Форумчанин
 
Регистрация: 02.11.2009
Сообщений: 179
Восклицание обращение к элементам двумерного массива на С++

к каждому элементу нужно обращаться через указатель со *

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<clocale>

int main ()
{
setlocale(LC_ALL, "Russian");
int i,j;
int mas[10][6];
int* masp[10];
for (i=0;i<=9;i++) {
masp[i] = mas[i]; // а должно быть *masp[i]=&mas[i]
}
int *Mas[j]=&masp;
for (j=0;j<=5;j++)
*(Mas+j)=rand()%200-100 ;
{ printf("\n");
for (j=0;j<=5;j++)
printf(" %d",*(Mas+j));
}
for (j=0;j<=5;j++)
{
if (*(Mas+j)<0)
*(Mas+j)=-*(Mas+j);
else
*(Mas+j)=*(Mas+j);
}
printf("\n \n \n \n");
{printf(" \n");
for (j=0;j<=5;j++)
printf(" %d",*(Mas+j));}
getch();
}

программа должна просто заменять отрицательные элементы на положительные
но никак не пому че делать со строкой на которой коммент потому что без * она работает а нужно обязательно со *
серг вне форума Ответить с цитированием
Старый 05.12.2009, 20:07   #2
серг
Форумчанин
 
Регистрация: 02.11.2009
Сообщений: 179
По умолчанию

таким образом обращение производится только через указатель
серг вне форума Ответить с цитированием
Старый 05.12.2009, 20:20   #3
серг
Форумчанин
 
Регистрация: 02.11.2009
Сообщений: 179
По умолчанию

да и вообще если честно прга кривоватая чет никак не додумаюсь как получше написать
серг вне форума Ответить с цитированием
Старый 05.12.2009, 20:26   #4
NiCola999
Не
Участник клуба
 
Регистрация: 29.10.2009
Сообщений: 1,456
По умолчанию

*a - это разыменование указателя( его значение)
a - его адресс

*(a+i) эквивалент a[i]

программа написана настолько неопрятно, что читать не хочется =)
всмысле загони код в тег CODE

с каким массивом тебе надо работать(отриц на полож мменять) однмерным или двумерным ?

Последний раз редактировалось NiCola999; 05.12.2009 в 20:29.
NiCola999 вне форума Ответить с цитированием
Старый 05.12.2009, 20:31   #5
серг
Форумчанин
 
Регистрация: 02.11.2009
Сообщений: 179
По умолчанию

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<clocale>

int main ()
{
setlocale(LC_ALL, "Russian");
int i,j;
int mas[10][6];
int* masp[10];
for (i=0;i<=9;i++) {
masp[i] = mas[i]; // а должно быть *masp[i]=&mas[i]
}
int *Mas[j]=&masp;
for (j=0;j<=5;j++)
*(Mas+j)=rand()%200-100 ;
{ printf("\n");
for (j=0;j<=5;j++)
printf(" %d",*(Mas+j));
}
for (j=0;j<=5;j++)
{
if (*(Mas+j)<0)
*(Mas+j)=-*(Mas+j);
else
*(Mas+j)=*(Mas+j);
}
printf("\n \n \n \n");
{printf(" \n");
for (j=0;j<=5;j++)
printf(" %d",*(Mas+j));}
getch();
}
серг вне форума Ответить с цитированием
Старый 05.12.2009, 20:34   #6
серг
Форумчанин
 
Регистрация: 02.11.2009
Сообщений: 179
По умолчанию

массив двумерный и для него создается массив указателей

Последний раз редактировалось серг; 05.12.2009 в 20:42. Причина: один и тот же текст
серг вне форума Ответить с цитированием
Старый 05.12.2009, 20:35   #7
серг
Форумчанин
 
Регистрация: 02.11.2009
Сообщений: 179
По умолчанию

ошибка в написании

Последний раз редактировалось серг; 05.12.2009 в 20:41. Причина: один и тот же текст
серг вне форума Ответить с цитированием
Старый 05.12.2009, 20:35   #8
NiCola999
Не
Участник клуба
 
Регистрация: 29.10.2009
Сообщений: 1,456
По умолчанию

выдели код и нажми # на панели
NiCola999 вне форума Ответить с цитированием
Старый 05.12.2009, 20:36   #9
серг
Форумчанин
 
Регистрация: 02.11.2009
Сообщений: 179
По умолчанию

Код:



#include<stdio.h> 
#include<conio.h> 
#include<stdlib.h>
#include<clocale>

int main ()
{ 
setlocale(LC_ALL, "Russian");
int i,j;
int mas[10][6];
int* masp[10];
for (i=0;i<=9;i++) {
masp[i] = mas[i]; // а должно быть *masp[i]=&mas[i]
}
int *Mas[j]=&masp;
for (j=0;j<=5;j++)
*(Mas+j)=rand()%200-100 ;
{ printf("\n");
for (j=0;j<=5;j++) 
printf(" %d",*(Mas+j));
}
for (j=0;j<=5;j++)
{
if (*(Mas+j)<0)
*(Mas+j)=-*(Mas+j);
else 
*(Mas+j)=*(Mas+j);
}
printf("\n \n \n \n");
{printf(" \n");
for (j=0;j<=5;j++) 
printf(" %d",*(Mas+j));}
getch();
}
серг вне форума Ответить с цитированием
Старый 05.12.2009, 20:37   #10
серг
Форумчанин
 
Регистрация: 02.11.2009
Сообщений: 179
По умолчанию

загнал таки прост тупанул сначала
серг вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обращение к элементам массива через указатель в С++ серг Помощь студентам 1 24.11.2009 01:30
обращение к элементам двумерного массива через указатели в С ++ серг Помощь студентам 0 23.11.2009 22:43