Форум программистов, компьютерный форум CyberForum.ru

есть часть кода с указателем на массив. в общем, объяснять не умею. в коде вы уж точно поймете - C++

Восстановить пароль Регистрация
 
Kirill Losev
3 / 3 / 0
Регистрация: 01.10.2011
Сообщений: 249
01.12.2011, 18:37     есть часть кода с указателем на массив. в общем, объяснять не умею. в коде вы уж точно поймете #1
из файла забираю значения для элементов массива
но в цикле ведь i,j, а тут, если пытаюсь сделать что-то вроде *(*(Array+i)+j), то компилятор ругается так

// cpp:31: error: invalid type argument of ‘unary *’

вот часть кода

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
  ifstream is("/media/wind/forlabs/for9.txt");
   for(int i=0;i<size;i++)
    for(int j=0;j<size;j++)
   {
     is>>*Array;
   }
  is.close();
  
  cout<<"Вот элементы вашего массива: "<<endl;
  for(i=0;i<size;i++)
    {
    for(int j=0;j<size;j++)
     cout<<*Array<<" "; cout<<endl;
    }
вот весь код

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
#include <iostream>
#include <iomanip>
#include <fstream>
using namespace std;
 
void input(int *n)
{
  setlocale(LC_ALL,"RUS");
  cout<<"Введите размер массива n,принадлежащего интервалу (1;50)."<<endl<<endl<<"n = ";
  do
  { 
   cin>>*n;
   if ((1<*n)&&(*n<50)) break;
   else cout<<"Ваш размер массива не входит в указанный интервал."<<endl<<"Введите другой размер массива!"<<endl<<"Новый размер массива n = "; 
  }
  while(1);
}
 
void processing(int* allsum, int* Array)
{
  int size;
  int sb1=0,skn=0,sbn=0,sk1=0,i,j;
  
  cout<<"Обработка полученных данных"<<endl;
 
  input(&size);
  ifstream is("/media/wind/forlabs/for9.txt");
   for(int i=0;i<size;i++)
    for(int j=0;j<size;j++)
   {
     is>>*Array;
   }
  is.close();
  
  cout<<"Вот элементы вашего массива: "<<endl;
  for(i=0;i<size;i++)
    {
    for(int j=0;j<size;j++)
     cout<<*Array<<" "; cout<<endl;
    }
  for(j=0;j<size;j++)
    {   
     i=0;
     sk1+=*Array;
    }
  for(i=1;i<size;i++)
    {
     j=0;
     sb1+=*Array;
    }
  for(j=1;j<(size-1);j++)
    {
     i=(size-1);
     skn+=*Array;
    }
  for(i=1;i<size;i++)
    {
     j=(size-1);
     sbn+=*Array;
    }
    *allsum=sb1+skn+sbn+sk1;
}
 
int main()
{ 
  const unsigned max=49;
  int razmer,A[max][max];
  int skANDsb;
  setlocale(LC_ALL,"RUS");
  cout<<"Программа для вычисления суммы элементов массива."<<endl<<"Версия с функциями."
      <<endl<<"Создана Лосевым Кириллом(студент группы 1301) :P!"<<endl<<endl;
  input(&razmer);
  
  if(razmer%2==0)
    {
    cout<<"Ваш размер "<<razmer<<" имеет четное значение";
    processing(&skANDsb,&A[razmer][razmer]);
    if(razmer==2) cout<<endl<<"Сумма необходимых элементов массива = "<<skANDsb<<endl;
    else          cout<<endl<<"Сумма необходимых элементов массива = "<<skANDsb+A[1][1]+A[1][razmer-1]+A[razmer-1][1]+A[razmer-1][razmer-1]<<endl;
    }
  
  else
    {
    cout<<"Ваш размер "<<razmer<<" имеет нечетное значение";
    processing(&skANDsb,&A[razmer][razmer]);
    if(razmer==3) cout<<endl<<"Сумма необходимых элементов массива = "<<skANDsb+(A[1][1])<<endl;
    else          cout<<endl<<"Сумма необходимых элементов массива = "<<skANDsb+(A[1][1])+(A[1][razmer-1])+(A[razmer-1][1])+(A[razmer-1][razmer-1])<<endl;
    }
}

заранее всем,пришедшим на выручку, спасибо от всего сердца
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.12.2011, 18:37     есть часть кода с указателем на массив. в общем, объяснять не умею. в коде вы уж точно поймете
Посмотрите здесь:

C++ Программка вроде не сложная, но никак не могу разобраться с модулями... Часть кода есть
Как передать массив в массив с указателем C++
C++ Какая из этих переменных становится указателем при выполнении следующего фрагмента кода
Рекурсия с указателем на массив C++
C++ Алгоритм Дейкстры (часть кода есть)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ZaVyLoN
 Аватар для ZaVyLoN
83 / 83 / 6
Регистрация: 26.10.2009
Сообщений: 269
01.12.2011, 18:41     есть часть кода с указателем на массив. в общем, объяснять не умею. в коде вы уж точно поймете #2
Цитата Сообщение от Kirill Losev Посмотреть сообщение
int razmer,A[max][max];
замени на
C
1
2
3
int **A = (int**) malloc (max * sizeof(int));
for (int i = 0; i < max; i++) 
    *(A + i) = (int*) malloc (max * sizeof(int));
Kirill Losev
3 / 3 / 0
Регистрация: 01.10.2011
Сообщений: 249
01.12.2011, 19:06  [ТС]     есть часть кода с указателем на массив. в общем, объяснять не умею. в коде вы уж точно поймете #3
ZaVyLoN, а как потом к этому массиву обращаться
и вообще вы не знаете где можно почитать подробную статью по этой теме?

Добавлено через 18 минут
ах, да. можно как-нибудь без динамики обойтись?
ZaVyLoN
 Аватар для ZaVyLoN
83 / 83 / 6
Регистрация: 26.10.2009
Сообщений: 269
01.12.2011, 19:46     есть часть кода с указателем на массив. в общем, объяснять не умею. в коде вы уж точно поймете #4
Обращаться вот так.
Цитата Сообщение от Kirill Losev Посмотреть сообщение
*(*(A+i)+j)
или так
C
1
A[i][j]
Добавлено через 2 минуты
Освобождать память не забывайте.
C
1
2
3
for(int i = 0; i < max; i++)
    free(A[i]);
free(A);
Kirill Losev
3 / 3 / 0
Регистрация: 01.10.2011
Сообщений: 249
01.12.2011, 20:05  [ТС]     есть часть кода с указателем на массив. в общем, объяснять не умею. в коде вы уж точно поймете #5
ZaVyLoN, спасибо. вот только я не совсем понял зачем мне заменять это в функции main, если там ошибок нет.
ошибка ведь в функции processing
Yandex
Объявления
01.12.2011, 20:05     есть часть кода с указателем на массив. в общем, объяснять не умею. в коде вы уж точно поймете
Ответ Создать тему
Опции темы

Текущее время: 00:58. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru