Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Kirill Losev
3 / 3 / 0
Регистрация: 01.10.2011
Сообщений: 249
#1

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

01.12.2011, 18:37. Просмотров 311. Ответов 4
Метки нет (Все метки)

из файла забираю значения для элементов массива
но в цикле ведь 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;
    }
}

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

Не умею делать АЛГОРИТМИЧЕСКУЮ ЧАСТЬ кода С++ - C++
Помогите написать алг. часть:с (Буду весьма признателен) #include &quot;stdafx.h&quot; #include &lt;conio.h&gt; using namespace std; #include...

Есть ли возможность в char-массив часть данных ввести в буквах, а часть в цифрах? - C++
подскажите пожалуйста, есть ли возможность в char массив часть данных ввести в буквах, а часть в цифрах (или в любой другой массив вбить...

Получить определенные поля класса, работая с указателем на класс, как с указателем на массив - C++ Builder
Мне бы хотелось узнать в чем ошибка моего кода Вот мои наработки которые не работают где я пытаюсь получить текст из второго поля зная...

Алгоритм Дейкстры (часть кода есть) - C++
Здравствуйте! Нужно реализовать на С++ такую консольную программу: 1. Задается массив размерности n; 2. Найти максим. j такой, что a...

Создать макрос, работающий с автофильтрами (есть часть кода) - MS Excel
Задача состоит в том, чтобы из базы убрать те значение, где есть пустые ячейки в одной или нескольких нескольких колонках. Лист 1 -...

Программка вроде не сложная, но никак не могу разобраться с модулями... Часть кода есть - C++
Постановка задачи Определите массив, хранящий строки символов. Создайте массив слов, считываемых из файла. Повторяющиеся слова не...

4
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));
1
Kirill Losev
3 / 3 / 0
Регистрация: 01.10.2011
Сообщений: 249
01.12.2011, 19:06  [ТС] #3
ZaVyLoN, а как потом к этому массиву обращаться
и вообще вы не знаете где можно почитать подробную статью по этой теме?

Добавлено через 18 минут
ах, да. можно как-нибудь без динамики обойтись?
0
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);
1
Kirill Losev
3 / 3 / 0
Регистрация: 01.10.2011
Сообщений: 249
01.12.2011, 20:05  [ТС] #5
ZaVyLoN, спасибо. вот только я не совсем понял зачем мне заменять это в функции main, если там ошибок нет.
ошибка ведь в функции processing
0
01.12.2011, 20:05
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.12.2011, 20:05
Привет! Вот еще темы с ответами:

Скопировать часть массива в другой массив - ошибка в коде - C#
Не пойму,почему выдает ошибку ? В коде вроде все правильно. class Program { // static bool b; static int...

1C 8.x Табличная часть документа в общем модуле - 1С
Всем привет! Подскажите, пожалуйста, как в общий модуль запилить процедуру, в которой идет обращение к табличной части текущего документа?

Есть, код, половину написал сам, но до рабочего состояния довёл знакомый. Нужно разобрать часть кода. - Assembler
Есть, код, половину написал сам, но до рабочего состояния довёл знакомый. Нужно разобрать часть кода. .model small .data _str db...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru