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

массив - C++

Восстановить пароль Регистрация
 
Hardcore
4 / 4 / 0
Регистрация: 24.10.2010
Сообщений: 200
09.12.2010, 16:07     массив #1
помогите написть код суммы рандомного массива.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.12.2010, 16:07     массив
Посмотрите здесь:

Нужно записать массив в файл, а потом из этого файла считать этот же массив C++
Дан массив A[N]. заполнить массив В[N] элементами массива A[N], которые удовлетворяют двойному неравенству C++
C++ Найти ошибку. Записать 20 целых чисел в массив. Переписать отрицательные в массив А, а положительные в Б
Файлы и массив (сделать так, чтобы массив заполнялся значениями из этого же файла) C++
C++ Включить новый элемент в массив, упорядоченный по возрастанию, с сохранением упорядоченности. (рандомный массив)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MILAN
 Аватар для MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
09.12.2010, 16:14     массив #2
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
#include <iostream>
#include <ctime>
 
using namespace std;
 
int main()
{
    srand(static_cast<int>(time(NULL)));
    int *arr;
    int sum=0,size;
    cout<<"Enter sise of array: ";
    cin>>size;
    arr = new int[size];
    cout<<endl<<"Array: "<<endl;
    for(int i=0; i<size; i++)
    {
            arr[i]=rand()%5-2;
            cout<<arr[i]<<"  ";
            sum+=arr[i];
    }
     cout<<endl<<"Sum is "<<sum<<endl;  
   delete [] arr;
   system("pause");
   return 0;
}
Hardcore
4 / 4 / 0
Регистрация: 24.10.2010
Сообщений: 200
09.12.2010, 16:20  [ТС]     массив #3
MILAN,
прокомпилирвуй полная чужь выходит.
MILAN
 Аватар для MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
09.12.2010, 16:23     массив #4
Интересно

http://codepad.org/Wd2lLDM7
Hardcore
4 / 4 / 0
Регистрация: 24.10.2010
Сообщений: 200
09.12.2010, 16:35  [ТС]     массив #5
а двумерного массива?
MILAN
 Аватар для MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
09.12.2010, 16:58     массив #6
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
#include <iostream>
#include <ctime>
 
using namespace std;
 
int main()
{
        srand(static_cast<int>(time(NULL)));
        int **arr;
        int sum=0,M,N;
        cout<<"Enter M: ";
        cin>>M;
        cout<<"Enter N: ";
        cin>>N;
        arr = new int*[M];
        cout<<endl<<"Array: "<<endl;
        for(int i=0; i<M; i++)
        {
            arr[i]=new int[N];
            for(int j=0; j<N; j++)
            {
                    arr[i][j]=rand()%5-2;
                    cout<<arr[i][j]<<"  ";
                    sum+=arr[i][j];
            }
          cout<<endl;
        }
     cout<<endl<<"Sum is "<<sum<<endl;  
   for(int i=0; i<M; i++)
       delete arr[i];
         delete [] arr;
   system("pause");
   return 0;
}
Feytan
1 / 1 / 0
Регистрация: 09.12.2010
Сообщений: 93
10.12.2010, 12:59     массив #7
А как будет выглядеть код, если нужно вычислить сумму элементов матрицы, если матрица задается в виде двумерного массива? также?
MILAN
 Аватар для MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
10.12.2010, 15:56     массив #8
Feytan, двумерный массив ето и есть матрица!!!!
Feytan
1 / 1 / 0
Регистрация: 09.12.2010
Сообщений: 93
10.12.2010, 16:27     массив #9
А вот к примеру:
Для матрицы размером n x m вычислить сумму элементов матрицы, причем исходная матрица задается в виде двумерного массива случайным образом.
То я должен чуток изменить эту схему, и получить вот что:
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
#include "stdafx.h"
#include <iostream>
#include <ctime>
 
using namespace std;
 
int main()
{
        srand(static_cast<int>(time(NULL)));
        int **arr;
        int sum=0,N,M;
        cout<<"Enter N: ";
        cin>>N;
                cout<<"Enter M: ";
                cin>>M;
                arr = new int*[N];
        cout<<endl<<"Array: "<<endl;
        for(int i=0; i<N; i++)
        {
                        arr[i]=new int[M];
                        for(int j=0; j<M; j++)
                        {
                    arr[i][j]=rand()%5-2;
                    cout<<arr[i][j]<<"  ";
                    sum+=arr[i][j];
                        }
          cout<<endl;
                }
     cout<<endl<<"Sum is "<<sum<<endl;  
   for(int i=0; i<N; i++)
           delete arr[i];
             delete [] arr;
   system("pause");
   return 0;
}
Но тогда непонятно что означают слова: "в виде двумерного массива случайным образом", само понятие двумерного массива понятно, но что значит случайным образом, может просто числа располагаются в массиве случайным образом или что-то подобное? и влияет ли это на код программы?
MILAN
 Аватар для MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
10.12.2010, 16:29     массив #10
Я так понимаю, что матрица должна заполнятся случайными числами, тоисть с помощью функции rand!!!
Feytan
1 / 1 / 0
Регистрация: 09.12.2010
Сообщений: 93
10.12.2010, 16:57     массив #11
Значит как я понял код пограммы неизменяется.

И вот еще что, а что если к полученной программе, добавить условие:
Умножить на это чило(как я понимаю сумму элементов матрицы) элементы k-той строки. Значение k вводится.

То мы должны сперва использовать
C++
1
int temper [k];
или что-то другое
Но тогда нам следует ввести ее, используя
C++
1
2
cout<<"Enter k: ";
cin>>k;
Но в этом у меня полный завал, куда что ставить и в какой последовательности непонимаю?
MILAN
 Аватар для MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
10.12.2010, 22:40     массив #12
Feytan, если я вас правильно понял, то вот, проверяйте

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
#include <iostream>
#include <ctime>
 
using namespace std;
 
int main()
{
        srand(static_cast<int>(time(NULL)));
        int **arr;
        int sum=0,M,N,k;
        cout<<"Enter M: ";
        cin>>M;
                cout<<"Enter N: ";
                cin>>N;
                arr = new int*[M];
        cout<<endl<<"Array: "<<endl;
        for(int i=0; i<M; i++)
        {
              arr[i]=new int[N];
              for(int j=0; j<N; j++)
                {
                    arr[i][j]=rand()%5-2;
                    cout<<arr[i][j]<<"  ";
                    sum+=arr[i][j];
                }
          cout<<endl;
        }
     cout<<endl<<"Sum is "<<sum<<endl;  
     cout<<"Enter k: ";
     cin>>k;
     cout<<endl<<"New matrix: "<<endl;
     for(int i=0; i<M; i++)
     {
         for(int j=0; j<N; j++)
         {
             if(i==k-1)
             {
                 arr[i][j]*=sum;
             }
            cout<<arr[i][j]<<"  ";
         }
       cout<<endl;    
     }
     for(int i=0; i<M; i++)
           delete arr[i];
             delete [] arr;
   system("pause");
   return 0;
}
Feytan
1 / 1 / 0
Регистрация: 09.12.2010
Сообщений: 93
10.12.2010, 23:51     массив #13
Вопрос по программному коду:
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
#include <ctime>
 
using namespace std;
 
int main()
{
        srand(static_cast<int>(time(NULL)));
        int **arr;
        int sum=0,M,N,k;
        cout<<"Enter M: ";
        cin>>M;
Разве мы ищем сумму всех членов, я имею ввиду, начиная с 0,M,N,k
Мы же ищем сумму марицы, разве не правильнее будет записать:
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
#include <ctime>
 
using namespace std;
 
int main()
{
        srand(static_cast<int>(time(NULL)));
        int **arr, k = 0;
        int sum=0,M,N;
        cout<<"Enter M: ";
        cin>>M;
Насчет этого точно не знаю потому и спрашиваю?

И вот еще что, для чего нужно условие и о чем оно говорит
C++
1
2
3
4
 if(i==k-1)
{
arr[i][j]*=sum;
}
MILAN
 Аватар для MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
10.12.2010, 23:57     массив #14
Цитата Сообщение от Feytan Посмотреть сообщение
Разве мы ищем сумму всех членов, я имею ввиду, начиная с 0,M,N,k
Мы же ищем сумму марицы, разве не правильнее будет записать:
Ведь сума матрицы, ето и есть сума всех ее членов.

Цитата Сообщение от Feytan Посмотреть сообщение
И вот еще что, для чего нужно условие и о чем оно говорит
if(i==k-1)
{
arr[i][j]*=sum;
}
к - номер строки, елеметнты которой нужно умножыть на сумму. В цикле i - счетчик строк. Если счетчик (i) равняется номеру введеной строки, умножает каждый елемент строки на сумму матрицы!!!!
Feytan
1 / 1 / 0
Регистрация: 09.12.2010
Сообщений: 93
11.12.2010, 00:42     массив #15
А для чего вот это:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
        srand(static_cast<int>(time(NULL)));
        int **arr;
        int sum=0,M,N,k;
        cout<<"Enter M: ";
        cin>>M;
                cout<<"Enter N: ";
                cin>>N;
                arr = new int*[M];
        cout<<endl<<"Array: "<<endl;
        for(int i=0; i<M; i++)
        {
              arr[i]=new int[N];
              for(int j=0; j<N; j++)
                {
                    arr[i][j]=rand()%5-2;
Насколько я понял, для того чтобы каждый новый раз выдавались новые (случайные) значения для исходной матрицы, верно?
А тогда откуда он берет диапазон этих случайных цифр?
И что означает строчка:
C++
1
        int **arr;
Если я правильно понимаю, то это означает, что наша площадь является целым числом, а для чего нужны тогда эти две звездочки (**)?

C++
1
2
3
4
5
6
                    cout<<arr[i][j]<<"  ";
                    sum+=arr[i][j];
                }
          cout<<endl;
        }
     cout<<endl<<"Sum is "<<sum<<endl;
Поясните пожалуйста эту часть программы, насколько я понимаю это говорит о том что программа сначала создаст случайную матрицу и выведет ее на экран, после того как мы введем числа M и N, а затем программа будет суммировать все члены данной матрицы, после чего выдаст результат суммы элементов матрицы?
MILAN
 Аватар для MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
11.12.2010, 00:52     массив #16
Цитата Сообщение от Feytan Посмотреть сообщение
Насколько я понял, для того чтобы каждый новый раз выдавались новые (случайные) значения для исходной матрицы, верно?
Верно!!!!

Цитата Сообщение от Feytan Посмотреть сообщение
А тогда откуда он берет диапазон этих случайных цифр?
От -2 до 5 (rand()%5-2)

Цитата Сообщение от Feytan Посмотреть сообщение
int **arr;
Указатель на двумерный массив. Массив здесь создается динамически, для того чтобы можно задать матрице любой размер!!!



Цитата Сообщение от Feytan Посмотреть сообщение
насколько я понимаю это говорит о том что программа сначала создаст случайную матрицу и выведет ее на экран, после того как мы введем числа M и N, а затем программа будет суммировать все члены данной матрицы, после чего выдаст результат суммы элементов матрицы?
Правильно понимаете.
Feytan
1 / 1 / 0
Регистрация: 09.12.2010
Сообщений: 93
11.12.2010, 01:08     массив #17
А что это за endl и для чего они нужны
C++
1
cout<<endl<<"Sum is "<<sum<<endl;
Я понимаю, что cout означает вывести на экран то, что находится между " ", но для чего нужны эти endl никак непойму?

C++
1
2
3
4
5
6
7
#include <ctime>
 
using namespace std;
 
int main()
{
        srand(static_cast<int>(time(NULL)));
Для чего нужен этот ctime и для чего нужно srand(static_cast<int>(time(NULL))) - если я правильно понял srand показывает то, что здесь будет использоваться rand, то есть случайные значения, а время для чего тогда?
MILAN
 Аватар для MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
11.12.2010, 01:19     массив #18
Цитата Сообщение от Feytan Посмотреть сообщение
А что это за endl и для чего они нужны
Для перехода на новую строку.

Цитата Сообщение от Feytan Посмотреть сообщение
Для чего нужен этот ctime и для чего нужно srand(static_cast<int>(time(NULL))) - если я правильно понял srand показывает то, что здесь будет использоваться rand, то есть случайные значения, а время для чего тогда?
Фукция rand генерирует одни и те же случайные числа при многих запусках программы. Для того, чтобы сделать действительно случайные разные числа, используется функция srand. Функция srand получает системное время, и исходя из него генерирует случайные числа. Для получения системного времени используется библиотека ctime!!!
Feytan
1 / 1 / 0
Регистрация: 09.12.2010
Сообщений: 93
11.12.2010, 01:56     массив #19
C++
1
for(int i=0; i<M; i++)
Для чего нужен этот for? Насколько я понимаю, то что в скобочках, говорит о том, что челое число i начинается с 0 и заканчивается M, а для чего этот i++ и вообще для чего он нужен и что означает? Хотя я могу лишь предположить, что это служит для последующего увеличения строки, хотя хотелось бы узнать об этом по лучше?
C++
1
2
3
4
           delete arr[i];
             delete [] arr;
   system("pause");
   return 0;
Для чего нужны эти 4 строчки и о чем они?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.12.2010, 02:01     массив
Еще ссылки по теме:

C++ Задано массив строк произвольной длины. Отформатировать данный массив по ширине поля.
Создать третий массив, в котором собрать элементы массива A, которые не включаются в массив B C++
Записать все положительные элементы матрицы в массив arrP, а отрицательные - в массив arrN C++

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

Или воспользуйтесь поиском по форуму:
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
11.12.2010, 02:01     массив #20
Feytan, Читайте книжки. Это цикл. i - переменная цикла (счетчик так называемый). i++ - прибавление единицы к i каждую итерацию цикла до тех пор пока i не будет равен M-1
delete - очистка памяти после выделения
pause - дабы консоль не закрывалась
return 0 - возврат значения успешного выполнения программы в место вызова (ОС)
Yandex
Объявления
11.12.2010, 02:01     массив
Ответ Создать тему
Опции темы

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