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

Проблема с массивами - C++

Восстановить пароль Регистрация
 
Витька
0 / 0 / 0
Регистрация: 10.10.2010
Сообщений: 82
24.12.2010, 12:22     Проблема с массивами #1
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
90
91
92
93
#include <iostream>
#include <cstdlib>
#include <ctime>
#include<fstream>
using namespace std;
ofstream fl;
 
 
void f1 (const int *s, const int *rmin, const int *rmax, int *p)
{
fl.open("Rezylt.txt");
           if(!fl)
             {
                  cout << "Nevozmozhno otkryt' fail"<< endl;
                  exit(1);
             }
int i, j;
 
        srand(time(NULL));
        cout<<"Massiv:"<<endl;
        fl<<"Massiv:"<<endl;
        for(i = 0; i < (*s); ++i)
        {
                for(j = 0; j < (*s); ++j)
                {
   ((*p) + i*(*s) + j) = rand()%((*rmax)-(*rmin)+1) + (*rmin);
                }
        }
 
        for(i = 0; i < (*s); ++i)
        {
                for(j = 0; j < (*s); ++j)
                {
   cout<<((*p) + i*(*s) + j)<<'\t';
   fl<<((*p) + i*(*s) + j)<<" ";
                }
                cout<<endl;
                fl<<endl;
        }
 cout<<'\n';
}
 
 
void f2 (const int *s, int *p)
{
int sum1=0;
        for(int i = 0; i < (*s); i++)
        {
                for(int j = 0; j < (*s); j++)
                {
         if (i==j) sum1=sum1+((*p) + i*(*s) + j);
                }
         }
         cout<<"Summa elementov glavnoi diagonali=";
         cout<<sum1<<endl;
         fl<<"Summa elementov glavnoi diagonali="<<sum1<<endl;
         int sum2=0; 
         for(i = 0; i < (*s); i++)
        {
         for(int j = 0; j < (*s); j++)
                {
         if (i==(*s) -1 - j) sum2=sum2+((*p) + i*(*s) + j);
                }
         }
         cout<<"Summa elementov vtoroi diagonali=";
                cout<<sum2<<endl;
         fl<<"Summa elementov vtoroi diagonali="<<sum2<<endl;
         int sum;
         sum=sum1+sum2; 
        cout<<"Obshaya summa elementov=";
        cout<<sum<<endl;
        fl<<"Obshaya summa elementov="<<sum<<endl;
        fl.close();
 }
 
 
int main()
{       
        const int SIZE = 9;
        const int R_MIN = -10;
        const int R_MAX = 10;
        if(SIZE % 2 == 0) cout<<"razmer massiva dolzhen byt' nechetnym";
        else
        {
        int arr[SIZE];
 
f1 (&SIZE, &R_MIN, &R_MAX, &arr[0]); 
f2 (&SIZE, &arr[0]);        
      
        cin.get();
        return 0;
}
}
почему прога не работает?проверьте плиз. использую компилятор dev-c++ 4.9.9.2

Добавлено через 14 часов 46 минут
помогитеее
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
NNN777
299 / 157 / 19
Регистрация: 27.02.2010
Сообщений: 317
24.12.2010, 14:21     Проблема с массивами #2
1. При инициализации переменной в цикле, ее можно будет использовать только в этом цикле
C++
1
2
3
for(int i = 0; i < (*s); i++)
---------------//------------------
for(i = 0; i < (*s); i++) //здесь уже снова нужно объявлять переменную i
Поэтому лучше все переменные объявлять до их использования в цикле.
2. Что делает эта строчка
C++
1
((*p) + i*(*s) + j) = rand()%((*rmax)-(*rmin)+1) + (*rmin);
Присваевает одно выражение другому? Значение выражения должно записываться в переменную.
Витька
0 / 0 / 0
Регистрация: 10.10.2010
Сообщений: 82
24.12.2010, 19:35  [ТС]     Проблема с массивами #3
Цитата Сообщение от NNN777 Посмотреть сообщение
2. Что делает эта строчка
C++
1
((*p) + i*(*s) + j) = rand()%((*rmax)-(*rmin)+1) + (*rmin);
Присваевает одно выражение другому? Значение выражения должно записываться в переменную.
а как тогда это написать?
Витька
0 / 0 / 0
Регистрация: 10.10.2010
Сообщений: 82
24.12.2010, 19:45  [ТС]     Проблема с массивами #4
зачем если это из нее же и взято??
Витька
0 / 0 / 0
Регистрация: 10.10.2010
Сообщений: 82
24.12.2010, 20:34  [ТС]     Проблема с массивами #5
чего???
NNN777
299 / 157 / 19
Регистрация: 27.02.2010
Сообщений: 317
25.12.2010, 11:27     Проблема с массивами #6
Цитата Сообщение от Витька Посмотреть сообщение
а как тогда это написать?
А когда вы писали эту строчку, что вы хотели, чтобы она сделала?

Остальные ваши посты крайне не понятны.
Витька
0 / 0 / 0
Регистрация: 10.10.2010
Сообщений: 82
25.12.2010, 13:48  [ТС]     Проблема с массивами #7
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
#include <iostream>
#include <cstdlib>
#include <ctime>
#include<fstream>
using namespace std;
int main()
{       ofstream fl;
        const int SIZE = 3;
        const int R_MIN = -10;
        const int R_MAX = 10;
        if(SIZE % 2 == 0) cout<<"razmer massiva dolzhen byt' nechetnym";
        else
        {
        int arr[SIZE][SIZE];
        int i, j;
        fl.open("Rezylt.txt");
           if(!fl)
             {
                  cout << "Nevozmozhno otkryt' fail"<< endl;
                  exit(1);
             }
        srand(time(NULL));
        cout<<"Massiv:"<<endl;
        fl<<"Massiv:"<<endl;
        for(i = 0; i < SIZE; ++i)
        {
                for(j = 0; j < SIZE; ++j)
                {
                        arr[i][j] = rand()%(R_MAX-R_MIN+1) + R_MIN;
                }
        }
 
        for(i = 0; i < SIZE; ++i)
        {
                for(j = 0; j < SIZE; ++j)
                {
                        cout<<arr[i][j]<<'\t';
                        fl<<arr[i][j]<<" ";
                }
                cout<<endl;
                fl<<endl;
        }
        cout<<'\n';
        
      int sum1=0;
        for(int i = 0; i < SIZE; i++)
        {
                for(int j = 0; j < SIZE; j++)
                {
                       if (i==j) sum1=sum1+arr[i][j];
                }
         }
         cout<<"Summa elementov glavnoi diagonali=";
         cout<<sum1<<endl;
         fl<<"Summa elementov glavnoi diagonali="<<sum1<<endl;
         int sum2=0; 
         for(int i = 0; i < SIZE; i++)
        {
                for(int j = 0; j < SIZE; j++)
                {
                       if (i==SIZE -1 - j) sum2=sum2+arr[i][j];
                }
         }
         cout<<"Summa elementov vtoroi diagonali=";
         cout<<sum2<<endl;
         fl<<"Summa elementov vtoroi diagonali="<<sum2<<endl;
         int sum;
         sum=sum1+sum2; 
        cout<<"Obshaya summa elementov=";
        cout<<sum<<endl;
        fl<<"Obshaya summa elementov="<<sum<<endl;
        fl.close();
        }
        cin.get();
        return 0;
}
вообщем я эту прогу попытался переделать через функции
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.12.2010, 14:34     Проблема с массивами
Еще ссылки по теме:

C++ Задачи с массивами
Работа с массивами C++
Задачи с массивами C++

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

Или воспользуйтесь поиском по форуму:
Витька
0 / 0 / 0
Регистрация: 10.10.2010
Сообщений: 82
26.12.2010, 14:34  [ТС]     Проблема с массивами #8
помогите плиз как ее тогда написать через функции?
Yandex
Объявления
26.12.2010, 14:34     Проблема с массивами
Ответ Создать тему
Опции темы

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