0 / 0 / 0
Регистрация: 14.04.2021
Сообщений: 4
1

Массив: Разделить заданный массив на 3 массива

14.04.2021, 20:59. Показов 1730. Ответов 7

Author24 — интернет-сервис помощи студентам
здраствуйте, я прошу помочь мне с разбором массивов, мне надо создать массив с числом элементов вводимым с клавиатуры(это уже сделано) этот массив разделить на 3 массива, 2 массива должны быть равны между собой, а в третий так сказать остаток, через функции делать запрещено, использовать можно только три библиотеки: <iostream>,<iomanip>,<math.h>. дело в том что я просто не представляю как можно построить алгоритм, я понимаю что вопрос не стоит времени, но если не сложно прошу объяснить как это сделать, я не прошу код, мне просто надо объяснить каким образом построить алгоритм.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.04.2021, 20:59
Ответы с готовыми решениями:

Заданный одномерный массив Yi и число Q. Образовать массив xj из элементов массива Yi, которые больше заданного числа Q
Заданный одномерный массив Y и число Q. Образовать массив x из элементов массива Y, которые больше...

Заданный одномерный массив Yi и число Q. Образовать массив xj из элементов массива Yi, которые больше заданного числа Q
Заданный одномерный массив Y и число Q. Образовать массив x из элементов массива Y, которые больше...

Имеется массив из 20 элементов. Найти минимум и максимум в каждой половине массива! подскажите как разделить массив
#include &lt;iostream&gt; #include &lt;cstdlib&gt; using namespace std; const int N = 20; int...

Сожмите заданный массив, выбросив каждый второй элемент массива. Вывести на экран заданный и новый массив
Сожмите заданный массив, выбросив каждый второй элемент массива. Вывести на экран заданный и новый...

7
1494 / 1209 / 821
Регистрация: 29.02.2016
Сообщений: 3,614
14.04.2021, 21:26 2
Neratick, не оч понятно, что вам не понятно)) Объявляете три массива и затем в циклах присваиваете им значения из исходного массива
1
0 / 0 / 0
Регистрация: 14.04.2021
Сообщений: 4
15.04.2021, 04:37  [ТС] 3
Вопрос в том, как мне разделить массив на три части так, чтобы в двух было одинаковое количество элементов, а в третьем остаток.
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
36590 / 20320 / 4218
Регистрация: 12.02.2012
Сообщений: 33,621
Записей в блоге: 13
15.04.2021, 06:57 4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
   int a[100]; // исходный массив
 
   int x1[40],x2[40],r[20]; // две части и остаток
 
   int i;
 
   for (i=0; i<40; ; i++) 
   {
        x1[i]=a[i];
        x2[i]=a[i+40];
   }
 
   for (i=80; i<100; i++) r[i-80]=a[i];
0
1494 / 1209 / 821
Регистрация: 29.02.2016
Сообщений: 3,614
15.04.2021, 09:12 5
Neratick, можно еще так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <algorithm>
using namespace std;
 
int main()
{
    int a[12] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
    int b[5], c[5], d[2];
    copy(a, a + 5, b);
    copy(a+5, a + 10, c);
    copy(a+10, a + 12, d);
 
    return 0;
}
0
0 / 0 / 0
Регистрация: 14.04.2021
Сообщений: 4
15.04.2021, 09:29  [ТС] 6
размер массива вводится с клавиатуры
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <iomanip>
using namespace std;
int main(){
setlocale(0,"");
int arr[100];
int n,i;
cout<<"введи размерность массива\n n=";cin>>n;
for(i=0;i<n;i++){//вот по такому принципу размерность массива выбирается пользователем
cout<<"введи элемент массива\n";cin>>arr[i];
}
for(i=0;i<n;i++){
cout<<arr[i]<<setw(3);
}
cout<<endl;
return 0;
}
а вот как примерно дальше, я даже понятия не имею, думал построить условие что если остаток от деления будет равен 0, то создавать 3 массива с размерностью n/3, но не знаю как мне сделать так чтобы было как в задании, 2 массива одинаковой размерности, а третий остаток от n, да впринципе можно сделать 3 как остаток по типу arr3[n%3], но как сделать остальные два?!
0
Модератор
Эксперт CЭксперт С++
5168 / 2891 / 1500
Регистрация: 14.12.2018
Сообщений: 5,228
Записей в блоге: 1
15.04.2021, 09:31 7
Цитата Сообщение от Neratick Посмотреть сообщение
2 массива должны быть равны между собой
Т.е. 2 массива должны быть одинаковы ? Или только их количество элементов одинаково ? Можно еще ли объяснить ?
0
0 / 0 / 0
Регистрация: 14.04.2021
Сообщений: 4
15.04.2021, 10:07  [ТС] 8
я понял как мне сделать это, но проблема в том что я кажется неправильно построил циклы, потому что во втором и третьем у меня выводит 0 и "космический мусор"
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
#include <iostream>
#include <iomanip>
 
using namespace std;
void printarray(int arr[],const int size){
 for(int i=0;i<size;i++){
     cout<<arr[i]<<setw(3);
 }  
 cout<<endl; 
}
 
int main()
{
 int arr[100];
 int n,i;
 cout<<"n=";cin>>n;
 
 for(i=0;i<n;i++){
     arr[i]=3*i-9;
 }
 printarray(arr,n);
int a=n%3;
int b,c,z;
z=n-a;
b=z/2;
 
 
int *arr1=new int[b];
int *arr2=new int[b];
int *arr3=new int[b+a];
 
for(i=0;i<b;i++){
    arr1[i]=arr[i];
}
printarray(arr1,b);
for(i=b-1;i<n;i++){
    arr2[i]=arr[i];
}
printarray(arr2,b);
for(i=b;i<n;i++){
    arr3[i]=arr[i];
}
printarray(arr3,n);
 
 return 0;
 
}
да, мне ещё запрещено использовать функции в унике, потому что мы это ещё не прошли, но каждый раз писать цикл для вывода на экран просто забирает время

Добавлено через 2 минуты
дело в том, что размер двух массивов должен быть равен, а третий так сказать остаток, так же мне нужно присвоить значения исходного массива ко значениям новых массивов.

Добавлено через 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
#include <iostream>
#include <iomanip>
 
using namespace std;
void printarray(int arr[],const int size){
 for(int i=0;i<size;i++){
     cout<<arr[i]<<setw(3);
 }  
 cout<<endl; 
}
 
int main()
{
 int arr[100];
 int n,i;
 cout<<"n=";cin>>n;
 
 for(i=0;i<n;i++){
     arr[i]=3*i-9;
 }
 printarray(arr,n);
int a=n%3;
int b,c,z;
z=n-a;
b=z/3;
c=b+a;
 
 
int *arr1=new int[b];
int *arr2=new int[b];
int *arr3=new int[c];
 
for(i=0;i<b;i++){
    arr1[i]=arr[i];
}
printarray(arr1,b);
for(i=0;i<n;i++){
    arr2[i]=arr[b+i];
}
printarray(arr2,b);
for(i=0;i<c;i++){
    arr3[i]=arr[n-i];
}
printarray(arr3,n);
 
 return 0;
 
}
0
15.04.2021, 10:07
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.04.2021, 10:07
Помогаю со студенческими работами здесь

Как правильно разделить заданный массив
Всем доброго времени суток. У меня такой вопрос. У меня есть массив: . Как сделать так, чтобы можно...

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

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

Массив: Разбить заданный массив на два массива: в 1-ый - четные индексы, а во 2-ой - нечетные.
помогите кому не сложно) есть одномерный массив 2*N. вывести его на экран. затем разбить на два...

Массив: Разделить каждый элемент заданного массива на 8 и вывести на экран измененный массив...
Ввести двухмерный массив, разделить каждый элемент на 8 На печать измененный массив

Заданный одномерный массив Yi и число Q. Образовать массив xj из элементов массива Yi, которые больше заданного числа Q
Заданный одномерный массив Y и число Q. Образовать массив x из элементов массива Y, которые больше...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru