С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.94/18: Рейтинг темы: голосов - 18, средняя оценка - 4.94
1 / 1 / 0
Регистрация: 02.06.2013
Сообщений: 38

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

28.10.2013, 13:08. Показов 3787. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
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
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
28.10.2013, 13:08
Ответы с готовыми решениями:

Сформировать новый массив, состоящий из элементов исходного массива, начинающихся с заданной цифры Z
Здравствуйте, написал программу, но никак правильное условие не могу написать, подскажите, как это сделать? Задание: Есть...

Сформировать новый массив, состоящий из элементов исходного массива, начинающихся с заданной цифры Z
Дан массив целых положительных чисел. Сформировать новый массив, состоящий из элементов исходного массива, начинающихся с заданной цифры...

Вывести новый массив, состоящий из положительных элементов массива
Здравствуйте. Помогите запрограммировать задачу Создают одномерные статические массивы, и вывести на печать новый массив, состоящий из...

12
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
28.10.2013, 13:13
У тебя в циклах и при индексации массива i с n перепутаны.
0
 Аватар для Виктор_Сен
36 / 29 / 2
Регистрация: 01.08.2011
Сообщений: 176
28.10.2013, 13:14
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

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];
    }
}
0
1 / 1 / 0
Регистрация: 02.06.2013
Сообщений: 38
28.10.2013, 13:16  [ТС]
Цитата Сообщение от castaway Посмотреть сообщение
У тебя в циклах и при индексации массива i с n перепутаны.
Ой
Точно, жесть, не выспался, спасибо.
0
98 / 34 / 10
Регистрация: 24.04.2012
Сообщений: 151
28.10.2013, 13:25
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Для начала разберём что вы выложили
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 прочти предпоследний ответ, для понимания как генерировать случайные числа.
0
1 / 1 / 0
Регистрация: 02.06.2013
Сообщений: 38
28.10.2013, 13:43  [ТС]
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];
* * }
}
строчка с обнулением итого члена нового массива можешь объяснить зачем??
0
98 / 34 / 10
Регистрация: 24.04.2012
Сообщений: 151
28.10.2013, 13:46
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

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 Посмотреть сообщение
строчка с обнулением итого члена нового массива можешь объяснить зачем??
думаю его не обнулять надо а просто присвоить значение нулевого элементы первого второму массиву
0
 Аватар для Виктор_Сен
36 / 29 / 2
Регистрация: 01.08.2011
Сообщений: 176
28.10.2013, 13:55
Цитата Сообщение от 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];
* * *}
0
1 / 1 / 0
Регистрация: 02.06.2013
Сообщений: 38
28.10.2013, 14:04  [ТС]
Цитата Сообщение от 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" не существует во втором массиве.
0
 Аватар для Виктор_Сен
36 / 29 / 2
Регистрация: 01.08.2011
Сообщений: 176
28.10.2013, 14:23
Цитата Сообщение от 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];
* * *}
А нулевой элемент заполняется не в теле цикла.
0
1 / 1 / 0
Регистрация: 02.06.2013
Сообщений: 38
28.10.2013, 14:32  [ТС]
Цитата Сообщение от Виктор_Сен Посмотреть сообщение
У меня в коде суммирование начинается с 1. А нулевой элемент заполняется не в теле цикла.
Ну в этом варианте уже да. Первый элемент вне цикла и потом без if можно писать.

Спасибо, помогли!
0
98 / 34 / 10
Регистрация: 24.04.2012
Сообщений: 151
28.10.2013, 16:04
Цитата Сообщение от iga7013 Посмотреть сообщение
cout<<endl;
надо или не надо решать вам, я для разделения его применил, и почему в С++ это не актуально я бы сказал вполне даже нормально
0
1 / 1 / 0
Регистрация: 02.06.2013
Сообщений: 38
28.10.2013, 21:45  [ТС]
Цитата Сообщение от Alexxx7 Посмотреть сообщение
надо или не надо решать вам, я для разделения его применил, и почему в С++ это не актуально я бы сказал вполне даже нормально
Не знаю, просто я никогда не использую. Вот и сказал.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
28.10.2013, 21:45
Помогаю со студенческими работами здесь

Создать новый одномерный массив, состоящий из отрицательных элементов данного массива 3х3 в заданной матрицы
Создать новый одномерный массив, состоящий из отрицательных элементов данного массива 3х3 в заданной матрицы. Пожалуйста,...

Создать и вывести новый массив, состоящий из положительных элементов массива Y
Создать и вывести новый массив, состоящий из положительных элементов массива Y;

Вывести на экран новый массив, состоящий из элементов прежнего массива, больших 10
Массив заполнен случайными числами. Вывести на экран новый массив, состоящий из элементов прежнего массива, больших 10. Вот что получилось:...

Создать и вывести на печать новый массив, состоящий из положительных элементов массива
1.Создать и вывести на печать новый массив, состоящий из положительных элементов массива 2 2.Определить индексы минимального элемента...

Создать новый массив, состоящий из отрицательных элементов заданной матрицы
Дан двумерный массив: 0,5 -4 3 8 -2,1 1 -0,5 7 0 -3 2 -1 Создать новый одномерный массив, состоящий из отрицательных элементов в...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru