Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
Zero015
0 / 0 / 0
Регистрация: 22.04.2015
Сообщений: 10
#1

Как вычесть из каждого элемента одномерного массива каждый элемент другого массива

29.04.2015, 23:06. Просмотров 1255. Ответов 16
Метки нет (Все метки)

Есть два одинаковых динамически заданных одномерных массива, число их элементов задается пользователем. из каждого элемента первого массива нужно по очереди вычесть каждый элемент второго массива и загнать это все в двумерный массив, который, получается, той же размерности, что и одномерные. Одномерные массивы я задал, а как дальше, не пойму
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
#include <iostream>
#include <stdlib.h>
#include <math.h>
#include <stdio.h>
 
using namespace std;
 
int main()
{
int n;
cout << "Enter size of massive" << " ";
cin >> n;
float *phase = new float [n];
for (int i=1; i<=n; i++)
{
    cout << "Enter phase [" << i << "]:" << " ";
    cin >> *(phase+i);
    cout << *(phase+i) << endl << endl;
 
}
for (int i=1; i<=n; i++)
{
    cout << *(phase+i);
}
cout << endl << endl;
 
 
 
float *phase2 = new float [n];
for (int i=1; i<=n; i++)
{
    *(phase2+i) = *(phase+i);
}
for (int i=1; i<=n; i++)
{
    cout << *(phase2+i);
}

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.04.2015, 23:06
Ответы с готовыми решениями:

Как вычесть определенный элемент массива из другого массива?
#include &lt;iostream&gt; #include &lt;math.h&gt; #include &lt;iomanip&gt; #include &lt;stdio.h&gt;...

В массиве вычислить среднее арифметическое и вычесть его из каждого элемента массива.
Файлы. Работа с одномерными массивами Постановка задачи 1 Прочитать из...

Из каждого элемента массива, начиная со второго, вычесть все остальные элементы
Дан массив, из каждого элемента, начиная со второго, нужно вычесть все...

Заменить каждый неположительный элемент массива Х абсолютной величиной элемента массива Y с тем же индексом
Добрый день. Нужно решить задачку: Заменить каждый неположительный элемент...

Когда элемент одного массива больше элемента другого массива, то тот элемент что больше расскладывается на меньшие элементы
ребят не могу подобрать алгоритм ,такой что когда елемент одного массива больше...

16
nmcf
6259 / 5571 / 2531
Регистрация: 14.04.2014
Сообщений: 23,461
30.04.2015, 08:39 #2
Все циклы должны быть от нуля.
C++
1
2
3
4
5
6
float **phase3 = new float *[n];
for (int i=0; i<n; i++)
{
    phase3[i] = new float[n];
    for (int j=0; j<n; j++) phase3[i][j] = phase1[i] - phase2[j];
}
1
Zero015
0 / 0 / 0
Регистрация: 22.04.2015
Сообщений: 10
30.04.2015, 18:09  [ТС] #3
То есть все циклы от нуля и все i строго меньше n?
0
Iridiscent
18 / 18 / 10
Регистрация: 20.04.2015
Сообщений: 108
30.04.2015, 18:16 #4
Цитата Сообщение от Zero015 Посмотреть сообщение
из каждого элемента первого массива нужно по очереди вычесть каждый элемент второго массива
тоесть из каждого элемента первого массива нужно вычесть сумму всех элементов второго?
0
Zero015
0 / 0 / 0
Регистрация: 22.04.2015
Сообщений: 10
30.04.2015, 18:39  [ТС] #5
А еще она ругается, если в массиве нечетное число элементов. Если я задаю массив с семью элементами, например, он ругается и выключает программу

Добавлено через 4 минуты
Ну, если у нас есть массив 12345 и второй такой же массив 12345, то мне нужно вот что:
1-1; 1-2; 1-3; 1-4; 1-5
2-1; 2-2; 2-3; 2-4; 2-5

и так далее

Добавлено через 5 минут
Цитата Сообщение от Iridiscent Посмотреть сообщение
тоесть из каждого элемента первого массива нужно вычесть сумму всех элементов второго?
и так далее
Цитата Сообщение от Iridiscent Посмотреть сообщение
тоесть из каждого элемента первого массива нужно вычесть сумму всех элементов второго?
Ну, если у нас есть массив 12345 и второй такой же массив 12345, то мне нужно вот что:
1-1; 1-2; 1-3; 1-4; 1-5
2-1; 2-2; 2-3; 2-4; 2-5

и так далее
0
Iridiscent
18 / 18 / 10
Регистрация: 20.04.2015
Сообщений: 108
30.04.2015, 18:43 #6
ну дак посчитай сумму элементов 2го массива и отнимай
C++
1
2
3
4
5
summ=сумма всех элементов 2го массива
for(int i=0;i<n;i++)
{
*(phase3+i)=(*(phase1+i))-summ; //добавление в 3тий массив с таким же размером
}
Добавлено через 1 минуту
Цитата Сообщение от Zero015 Посмотреть сообщение
То есть все циклы от нуля и все i строго меньше n?
да, и вылетает потому что отсчет массивов начинается с 0 например в массиве p[2] находится 2 элемента p[0] и p[1]
0
Zero015
0 / 0 / 0
Регистрация: 22.04.2015
Сообщений: 10
30.04.2015, 20:07  [ТС] #7
Цитата Сообщение от Iridiscent Посмотреть сообщение
ну дак посчитай сумму элементов 2го массива и отнимай
а зачем мне отнимать? Я вообще почему за это сел: у меня есть 12 значений, начальные фазы разных радиоэлементов, и мне нужно посчитать разность фаз для каждого элемента, т.е. получить таблицу 12х12

Добавлено через 1 минуту
Цитата Сообщение от Iridiscent Посмотреть сообщение
да, и вылетает потому что отсчет массивов начинается с 0 например в массиве p[2] находится 2 элемента p[0] и p[1]
а как мне сделать, чтобы не вылетало, хочется унифицировать же для разного числа элементов
0
Iridiscent
18 / 18 / 10
Регистрация: 20.04.2015
Сообщений: 108
30.04.2015, 21:39 #8
Лучший ответ Сообщение было отмечено Zero015 как решение

Решение

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
#include <iostream>
#include <cstring>
#include <cstdio>
#include <cstdlib>
#include <conio.h>
#include <ctime>
#include <iomanip>
#include <stdlib.h>
#include <sstream>
#include <cmath>
 
 
using namespace std;
 
int main()
{
int n;
cout << "Enter size of massive" << " ";
cin >> n;
float *phase = new float [n];
for (int i=0; i<n; i++)
{
    cout << "Enter phase [" << i << "]:" << " ";
    cin >> *(phase+i);
    cout << *(phase+i) << endl << endl;
 
}
for (int i=0; i<n; i++)
{
    cout << *(phase+i);
}
cout << endl << endl;
 
 
 
float *phase2 = new float [n];
for (int i=0; i<=n; i++)
{
    *(phase2+i) = *(phase+i);
}
for (int i=0; i<n; i++)
{
    cout << *(phase2+i);
}
cout<<endl;
int x1,y=0;
float *result = new float [n*n];
 
    for(int x=0;x<n;x++,y++)
{
  for(x1=0;x1<n;x1++)
  {
 
  result[x1+(y*n)]= phase[x] -phase2[x1];
 
 
  }
 
}
 
 
for (int y=0;y<n;y++)
    for(int x=0;x<n;x++)
    {
 
 cout<<setw(3)<<*(result+x+(n*y))<<' ';
 if(x==n-1)cout<<endl;
    }
}
Как вычесть из каждого элемента одномерного массива каждый элемент другого массива
1
Zero015
0 / 0 / 0
Регистрация: 22.04.2015
Сообщений: 10
01.05.2015, 01:45  [ТС] #9
премного благодарен, @Iridiscent
0
Zero015
0 / 0 / 0
Регистрация: 22.04.2015
Сообщений: 10
02.05.2015, 13:59  [ТС] #10
Iridiscent, Не работает с дробными числами. У меня значения от -1.455 до 1.062, вводится все хорошо, потом вылетает
0
Iridiscent
18 / 18 / 10
Регистрация: 20.04.2015
Сообщений: 108
02.05.2015, 21:20 #11
Zero015,у меня все работает, какие значения вводите?попробуйте убрать из 66 строки setw(3)
Как вычесть из каждого элемента одномерного массива каждый элемент другого массива
0
Zero015
0 / 0 / 0
Регистрация: 22.04.2015
Сообщений: 10
03.05.2015, 12:25  [ТС] #12
Цитата Сообщение от Iridiscent Посмотреть сообщение
Zero015,у меня все работает, какие значения вводите?попробуйте убрать из 66 строки setw(3)
Без setw работает, но, опять же, не работает, если ввожу четную размерность массива. Если в строке Enter size of massive писать 3; 5; 7; 9...., то работает, если четные - вылетаетна стадии расчета
Как вычесть из каждого элемента одномерного массива каждый элемент другого массива
0
Krock21rus
74 / 74 / 27
Регистрация: 18.11.2013
Сообщений: 373
Завершенные тесты: 2
03.05.2015, 12:27 #13
поторопился с ответом, но всё же скажу, что можно не использовать двумерный массив, а сразу выводить, если задача такая
0
Zero015
0 / 0 / 0
Регистрация: 22.04.2015
Сообщений: 10
03.05.2015, 12:47  [ТС] #14
Массив все-таки желательно выдать, потому что элементов будет не меньше 100, и их надо заносить в таблицу, сортировать их из обычного результата не очень удобно
0
Iridiscent
18 / 18 / 10
Регистрация: 20.04.2015
Сообщений: 108
03.05.2015, 16:20 #15
Лучший ответ Сообщение было отмечено Zero015 как решение

Решение

при переделке вашей программы пропустил один цикл где условие i<=n изза этого программа выходила за пределы массива
Кликните здесь для просмотра всего текста
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
#include <iostream>
#include <cstring>
#include <cstdio>
#include <cstdlib>
#include <conio.h>
#include <ctime>
#include <iomanip>
#include <stdlib.h>
#include <sstream>
#include <cmath>
 
 
using namespace std;
 
int main()
{
int n;
cout << "Enter size of massive" << " ";
cin >> n;
float *phase = new float [n];
for (int i=0; i<n; i++)
{
    cout << "Enter phase [" << i << "]:" << " ";
    cin >> *(phase+i);
    cout << *(phase+i) << endl << endl;
 
}
for (int i=0; i<n; i++)
{
    cout << *(phase+i);
}
cout << endl << endl;
 
 
 
float *phase2 = new float [n];
for (int i=0; i<n; i++)
{
    *(phase2+i) = *(phase+i);
}
for (int i=0; i<n; i++)
{
    cout << *(phase2+i);
}
cout<<endl;
int x1,y=0;
float *result = new float [n*n];
 
    for(int x=0;x<n;x++,y++)
{
  for(x1=0;x1<n;x1++)
  {
 
  result[x1+(y*n)]= phase[x] -phase2[x1];
 
 
  }
 
}
cout<<" \n \n";
 
for (int y=0;y<n;y++)
    for(int x=0;x<n;x++)
    {
 
 cout<<*(result+x+(n*y))<<' ';
 if(x==n-1)cout<<endl;
    }
}
1
Zero015
0 / 0 / 0
Регистрация: 22.04.2015
Сообщений: 10
03.05.2015, 20:09  [ТС] #16
Цитата Сообщение от Iridiscent Посмотреть сообщение
при переделке вашей программы пропустил один цикл где условие i<=n изза этого программа выходила за пределы массива
Спасибо! А где был пропущен цикл?
0
Iridiscent
18 / 18 / 10
Регистрация: 20.04.2015
Сообщений: 108
03.05.2015, 22:51 #17
for (int i=0; i<=n; i++) условие надо было сменить на i<n
1
03.05.2015, 22:51
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.05.2015, 22:51

Вставить после каждого нечетного элемента массива максимальный простой элемент этого же массива
В целочисленный массив X(n) после каждого нечетного элемента вставить...

После каждого нечетного элемента массива вставить максимальный простой элемент этого же массива
ЗАДАЧА 1. В целочисленный массив X(n) после каждого нечетного элемента...

Записать два элемента одного массива, как один элемент другого
Здравствуйте) есть такое задание: нужно составить таблицу...


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

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

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