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

Вывести новый массив состоящий из элементов начального массива в заданной зависимости - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.75
iga7013
1 / 1 / 0
Регистрация: 02.06.2013
Сообщений: 38
28.10.2013, 13:08     Вывести новый массив состоящий из элементов начального массива в заданной зависимости #1
1.Нужно ввести размерность начального одномерного массива c клавиатуры. Элементы заполняются с помощью rand();
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <time.h>
#include <iostream>
#include <iomanip>
void main()
{
int n;
    cin>>n;
    int *mass=new int[n];
    for (int i=0; n<i; i++)
        mass[n]=rand();
        for(int i=0;n<i;i++)
        cout<<setw(7)<<mass[n];
    delete [] mass;
    _getch();
}
Код неверный!


Для статического массива все хорошо: выводит 10 элементов рандомного значения
C++
1
2
3
4
5
int *mass=new int[10];
    for (int i=0; i<10; i++)
        mass[i]=rand();
    for(int i=0;i<10;i++)
        cout<<setw(7)<<mass[i];
А если как я указал выше в коде: только ввожу n и все, программа идет к _getch();

2.Потом необходимо вывести новый массив состоящий из элементов начального массива в такой зависимости: a1, a1+a2, a1+a2+a3, …,a1+a2+…+an
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.10.2013, 13:08     Вывести новый массив состоящий из элементов начального массива в заданной зависимости
Посмотрите здесь:

Получить новый массив, состоящий из неповторяющихся элементов исходного C++
C++ Сформировать новый массив, состоящий только из нечетных элементов больших 3 и меньших 14
C++ Заданы два массива. Сравнить соответствующие элементы массивов и вывести на экран массив, состоящий из совпавших элементов.
Создать новый одномерный массив, состоящий из отрицательных элементов данного массива 3х3 в заданной матрицы C++
C++ Получить новый массив, состоящий из сумм цифр элементов исходного массива
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
castaway
Эксперт С++
4848 / 2987 / 368
Регистрация: 10.11.2010
Сообщений: 11,028
Записей в блоге: 10
Завершенные тесты: 1
28.10.2013, 13:13     Вывести новый массив состоящий из элементов начального массива в заданной зависимости #2
У тебя в циклах и при индексации массива i с n перепутаны.
Виктор_Сен
 Аватар для Виктор_Сен
30 / 23 / 1
Регистрация: 01.08.2011
Сообщений: 176
28.10.2013, 13:14     Вывести новый массив состоящий из элементов начального массива в заданной зависимости #3
Сообщение было отмечено автором темы, экспертом или модератором как ответ
1.
Цитата Сообщение от iga7013 Посмотреть сообщение
for (int i=0; n<i; i++)
Наверно i<n

2.
C++
1
2
3
4
5
6
7
8
9
int* newMass=new int[n];
for (int i=0; i<n; i++)
{
    newMass[i]=0;
    for (int j=0; j<i+1; j++)
    {
        newMass[i]+=mass[j];
    }
}
iga7013
1 / 1 / 0
Регистрация: 02.06.2013
Сообщений: 38
28.10.2013, 13:16  [ТС]     Вывести новый массив состоящий из элементов начального массива в заданной зависимости #4
Цитата Сообщение от castaway Посмотреть сообщение
У тебя в циклах и при индексации массива i с n перепутаны.
Ой
Точно, жесть, не выспался, спасибо.
Alexxx7
97 / 33 / 5
Регистрация: 24.04.2012
Сообщений: 151
28.10.2013, 13:25     Вывести новый массив состоящий из элементов начального массива в заданной зависимости #5
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Для начала разберём что вы выложили
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <time.h>
#include <iostream>
#include <iomanip>
void main()
{
        int n;
    cin>>n;
    int *mass=new int[n];
    for (int i=0; n<i; i++)//условие проверки не правильно n<i 
        mass[n]=rand();//тут в несуществующую позицию вы пытаетесь вложить значение
        for(int i=0;n<i;i++)//аналогично предыдущему
        cout<<setw(7)<<mass[n];// вывод на экран не существующего элемента
    delete [] mass;
    _getch();
}
так что совет исправте сначала вышезамеченное, а потом подумайте может объявить новую переменную которая будет суммировать предыдущие элементы первого массива и и присваивайте по ходу итераций каждому элементу второго массива, или каждому элементу второго массива присваиваете сумму предыдущего элемента второго массива плюс текущий элемент первого.
И rand прочти предпоследний ответ, для понимания как генерировать случайные числа.
iga7013
1 / 1 / 0
Регистрация: 02.06.2013
Сообщений: 38
28.10.2013, 13:43  [ТС]     Вывести новый массив состоящий из элементов начального массива в заданной зависимости #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
#include <iostream>
#include <conio.h>
#include <locale.h>
#include <time.h>
#include <iomanip>
using namespace std;
void main()
{
    setlocale(0,"rus");
    srand(time(0));
    int n;
    cout<<"Введите размер массива:";
    cin>>n;
    int *mass=new int[n];
    for (int i=0; i<n; i++)
        mass[i]=rand();
    cout<<"Ваш исходный массив -";
    for(int i=0;i<n;i++)
        cout<<setw(7)<<mass[i];
    int* newMass=new int[n];
    for (int i=0; i<n; i++)
        {
            newMass[i]=0;
            for (int j=0; j<i+1; j++)
                 newMass[i]+=mass[j];
        }
    cout<<"\nВаш новый массив -";
    for(int i=0; i<n;i++)
    cout<<setw(7)<<newMass[i];
    delete[] mass;
    delete[] newMass;
    _getch();
}
Вот рабочий код уже.
Спасибо

Добавлено через 1 минуту
Цитата Сообщение от Виктор_Сен Посмотреть сообщение
2.
C++
1
2
3
4
5
6
7
8
9
int* newMass=new int[n];
for (int i=0; i<n; i++)
{
* * newMass[i]=0;
* * for (int j=0; j<i+1; j++)
* * {
* * * * newMass[i]+=mass[j];
* * }
}
строчка с обнулением итого члена нового массива можешь объяснить зачем??
Alexxx7
97 / 33 / 5
Регистрация: 24.04.2012
Сообщений: 151
28.10.2013, 13:46     Вывести новый массив состоящий из элементов начального массива в заданной зависимости #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
#include <iostream>
#include <conio.h>
#include <locale.h>
#include <time.h>
#include <iomanip>
using namespace std;
void main()
{
    setlocale(0,"rus");
    srand(time(0));
    int n;
    cout<<"Введите размер массива:";
    cin>>n;
    int *mass=new int[n];
    for (int i=0; i<n; i++)
        mass[i]=rand();
    cout<<"Ваш исходный массив -";
    for(int i=0;i<n;i++)
        cout<<setw(7)<<mass[i];
    cout<<endl;
    ////
     int *new_mass=new int[n];
     for (int i=0; i<n; i++){
         if(i == 0)
             new_mass[i] = mass[i];
         else
             new_mass[i] = new_mass[i-1] + mass[i];
     }
      cout<<"Ваш производный массив -";
    for(int i=0;i<n;i++)
        cout<<setw(7)<<new_mass[i];
    cout<<endl;
    delete[] mass;
    delete[] new_mass;
    _getch();
}
Добавлено через 1 минуту
Цитата Сообщение от iga7013 Посмотреть сообщение
строчка с обнулением итого члена нового массива можешь объяснить зачем??
думаю его не обнулять надо а просто присвоить значение нулевого элементы первого второму массиву
Виктор_Сен
 Аватар для Виктор_Сен
30 / 23 / 1
Регистрация: 01.08.2011
Сообщений: 176
28.10.2013, 13:55     Вывести новый массив состоящий из элементов начального массива в заданной зависимости #8
Цитата Сообщение от iga7013 Посмотреть сообщение
строчка с обнулением итого члена нового массива можешь объяснить зачем??
Для надёжности. При выделении памяти там может быть мусор и перед суммированием нужно его обнулить, иначе на выходе можно получить бессмысленный результат, если к мусору что-то прибавлять.

Добавлено через 2 минуты
Цитата Сообщение от Alexxx7 Посмотреть сообщение
думаю его не обнулять надо а просто присвоить значение нулевого элементы первого второму массиву
Можно и так, но тогда во внутреннем цикле нужно суммирование начинать с 1 а не с нуля, иначе нулевой элемент будет просуммирован 2 раза

Добавлено через 3 минуты
Цитата Сообщение от Alexxx7 Посмотреть сообщение
C++
1
2
3
4
5
6
7
int *new_mass=new int[n];
* * *for (int i=0; i<n; i++){
* * * * *if(i == 0)
* * * * * * *new_mass[i] = mass[i];
* * * * *else
* * * * * * *new_mass[i] = new_mass[i-1] + mass[i];
* * *}
Можно без if
C++
1
2
3
4
5
int *new_mass=new int[n];
new_mass[0] = mass[0];
* * *for (int i=1; i<n; i++){
* * * * * * *new_mass[i] = new_mass[i-1] + mass[i];
* * *}
iga7013
1 / 1 / 0
Регистрация: 02.06.2013
Сообщений: 38
28.10.2013, 14:04  [ТС]     Вывести новый массив состоящий из элементов начального массива в заданной зависимости #9
Цитата Сообщение от Alexxx7 Посмотреть сообщение
думаю его не обнулять надо а просто присвоить значение нулевого элементы первого второму массиву
Да, так как при суммировании элементов, первый элемент должен быть инициализирован до этого Понял чуть позже...

Уже ведь не нужно этого прописывать в С++, это актуально только для С# :
Цитата Сообщение от Alexxx7 Посмотреть сообщение
cout<<endl;
Alexxx7 Ваш вариант с решением второго задания более эстетичен! Спасибо

Добавлено через 7 минут
Цитата Сообщение от Виктор_Сен Посмотреть сообщение
Можно без if
Без if нельзя. При прохождении первый раз по циклу
Цитата Сообщение от Alexxx7 Посмотреть сообщение
for (int i=0; i<n; i++){
* * * * *if(i == 0)
* * * * * * *new_mass[i] = mass[i];
* * * * *else
* * * * * * *new_mass[i] = new_mass[i-1] + mass[i];
* * *}
сам цикл не сможет найти элемент [i-1]. Элемента под номером "-1" не существует во втором массиве.
Виктор_Сен
 Аватар для Виктор_Сен
30 / 23 / 1
Регистрация: 01.08.2011
Сообщений: 176
28.10.2013, 14:23     Вывести новый массив состоящий из элементов начального массива в заданной зависимости #10
Цитата Сообщение от iga7013 Посмотреть сообщение
сам цикл не сможет найти элемент [i-1]. Элемента под номером "-1" не существует во втором массиве.
У меня в коде суммирование начинается с 1.
Цитата Сообщение от Виктор_Сен Посмотреть сообщение
int *new_mass=new int[n];
new_mass[0] = mass[0];
* * *for (int i=1; i<n; i++){
* * * * * * *new_mass[i] = new_mass[i-1] + mass[i];
* * *}
А нулевой элемент заполняется не в теле цикла.
iga7013
1 / 1 / 0
Регистрация: 02.06.2013
Сообщений: 38
28.10.2013, 14:32  [ТС]     Вывести новый массив состоящий из элементов начального массива в заданной зависимости #11
Цитата Сообщение от Виктор_Сен Посмотреть сообщение
У меня в коде суммирование начинается с 1. А нулевой элемент заполняется не в теле цикла.
Ну в этом варианте уже да. Первый элемент вне цикла и потом без if можно писать.

Спасибо, помогли!
Alexxx7
97 / 33 / 5
Регистрация: 24.04.2012
Сообщений: 151
28.10.2013, 16:04     Вывести новый массив состоящий из элементов начального массива в заданной зависимости #12
Цитата Сообщение от iga7013 Посмотреть сообщение
cout<<endl;
надо или не надо решать вам, я для разделения его применил, и почему в С++ это не актуально я бы сказал вполне даже нормально
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.10.2013, 21:45     Вывести новый массив состоящий из элементов начального массива в заданной зависимости
Еще ссылки по теме:

C++ Функция должна возвращать новый массив, состоящий из отрицательных элементов исходного массива
Сформировать новый массив B, состоящий из элементов массива A, которые превышают X C++
Получить новый массив, состоящий из цифр элементов исходного массива, стоящих в старших разрядах C++

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

Или воспользуйтесь поиском по форуму:
iga7013
1 / 1 / 0
Регистрация: 02.06.2013
Сообщений: 38
28.10.2013, 21:45  [ТС]     Вывести новый массив состоящий из элементов начального массива в заданной зависимости #13
Цитата Сообщение от Alexxx7 Посмотреть сообщение
надо или не надо решать вам, я для разделения его применил, и почему в С++ это не актуально я бы сказал вполне даже нормально
Не знаю, просто я никогда не использую. Вот и сказал.
Yandex
Объявления
28.10.2013, 21:45     Вывести новый массив состоящий из элементов начального массива в заданной зависимости
Ответ Создать тему
Опции темы

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