Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Zero015
0 / 0 / 0
Регистрация: 22.04.2015
Сообщений: 10
#1

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

29.04.2015, 23:06. Просмотров 1188. Ответов 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
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Как вычесть из каждого элемента одномерного массива каждый элемент другого массива (C++):

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

Из каждого элемента массива, начиная со второго, вычесть все остальные элементы - C++
Дан массив, из каждого элемента, начиная со второго, нужно вычесть все остальные элементы. вот пример: 1 2 3 4 5 (2 - 3 - 4 - 5 -...

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

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

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

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

16
nmcf
6206 / 5517 / 1932
Регистрация: 14.04.2014
Сообщений: 23,155
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 / 7
Регистрация: 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 / 7
Регистрация: 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 / 7
Регистрация: 20.04.2015
Сообщений: 108
30.04.2015, 21:39 #8
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
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 / 7
Регистрация: 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 / 19
Регистрация: 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 / 7
Регистрация: 20.04.2015
Сообщений: 108
03.05.2015, 16:20 #15
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
при переделке вашей программы пропустил один цикл где условие 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
03.05.2015, 16:20
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.05.2015, 16:20
Привет! Вот еще темы с ответами:

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

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

Присвоить элементу одномерного массива значение другого элемента - C++
Доброе время суток! За ранее благодарен, тому кто откликнется!!! Задача, головоломка! А кому раз плюнуть!!!:) Начало сделал, а...

Уменьшить каждый элемент одномерного массива на его номер - C++
Надо уменьшить каждый элемент одномерного массива на его номер. Например элемент №2 *37* станет числом 37-2=35


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

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

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