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

Перекладывание массива в массив через функцию

11.10.2016, 15:53. Просмотров 194. Ответов 6
Метки нет (Все метки)

Помогите пожалуйста сделать перекладывание значений из одного в массива в другой с помощью функции на С++. Я делаю программу (по учебе) на сортировку одного массива разными способами. Перекладывание массива в функции int perekl (int *y, int n1, int *x, int n) работает не правильно - правую границу выдает странной (цифры не соответствуют) и контрольную сумму чисел программа считает не верно из-за этого . Массивы одинакового размера, я пробовала писать так (int *y, int n, int *x, int n), но на написание буквы n 2 раза программа ругается, что я два раз n написала. В итоге в теле программы я написала, что n1=n и в функции 2 массива с размерностью n и n1.

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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
#include <iostream>
#include <string.h>
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <ctype.h>
 
using namespace std;
 
int sluch(int *a, int n)
{
 int i;
 for (i=0; i<n; i++)
 {
 a[i]=rand()%101;
 }
 cout<<endl<<"massiv chisel zadannyh v sluchaynom poryadke"<<endl;
 for (i=0; i<n; i++)
 {
 cout<<"a["<<i<<"]="<<a[i]<<" ";
 
 }
 cout<<endl;
}
 
int vozr (int *b, int n)
{
    int i;
 for (i=0; i<n; i++)
 {
 b[i]=i;
 }
 cout<<endl<<"massiv chisel zadannyh po vozrastaniyu"<<endl;
 for (i=0; i<n; i++)
 {
 cout<<"b["<<i<<"]="<<b[i]<<" ";
 }
 cout<<endl;
}
 
int ubyv (int *c, int n)
{
    int i,j;
    j=0;
 for (i=n; i>0; i--)
 {
 c[j]=i;
 j++;
 }
 cout<<endl<<"massiv chisel zadannyh po ubyvaniyu"<<endl;
 for (i=0; i<n; i++)
 {
 cout<<"c["<<i<<"]="<<c[i]<<" ";
 }
 cout<<endl;
}
 
int perekl (int *y, int n1, int *x, int n)
{
int i;
 for(i = 0; i < n - 1; i++)
    {
        y[i]=x[i];
    }
 cout<<endl<<"perelozhennyi massiv"<<endl;
 for (i=0; i<n; i++)
 {
 cout<<"y["<<i<<"]="<<y[i]<<" ";
 }
 cout<<endl;
}
 
int kontr_s (int *d, int n)
{
    int i, s=0;
 
    for (i=0; i<n; i++)
    {
        s=s+d[i];
    }
    if (s!=0)
    {
    cout<<endl<<"kontrolnaya summa ravna s="<<s<<endl<<endl;;
    }
    return s;
}
 
int pryam_vyb (int *e, int n)
{
 int min, i, k, temp;
 for(i = 0; i < n - 1; i++)
    {
        min = i;
 
        for(k = i + 1; k < n; k++)
        {
            if(e[k] < e[min])
            {
                min = k;
            }
        }
 
        temp = e[i];
        e[i] = e[min];
        e[min] = temp;
    }
cout<<endl<<"Otsortirovannyi massiv metodom pryamogo vybora"<<endl;
for ( i = 0; i < n; i++)
cout<<"b["<<i<<"]="<<e[i]<<" ";
}
 
int main()
{
int z, n, i = 0;
char str[80];
cout<<"Eto programma sortirovki massiva razlichnymi sposobami"<<endl<<endl<<"elementy massiva budut zadavatsya programmoy"<<endl<<endl;
cout<<endl<<"vvedite kolichestvo elementov v massive"<<endl<<"vvesti mozhno tolko polozhitelnoe chislo  ";
 while ( ( z = _getch()) != 13 ) /* 13  - keys ENTER */
    {
        if ( isdigit( z )  )
        {
            str[i++] = (char) z;
            _putch( z );
        }
    }
    str[i] = '\0';
 
    n = atoi( str );
 
    printf( "\nn = %d\n", n );
    int n1=n;
    int a[n];
    int a1[n1];
    int b[n];
    int c[n];
 
    sluch (a,n);
    perekl (a,n,a1,n1);
    kontr_s (a1,n1);
    pryam_vyb (a1,n1);
    kontr_s (a1,n1);
 
    vozr (b,n);
    kontr_s (b,n);
    pryam_vyb (b,n);
    kontr_s (b,n);
 
    ubyv (c,n);
    kontr_s (c,n);
    pryam_vyb (c,n);
    kontr_s (c,n);
 
    cout<<endl<<endl;
    system("PAUSE");
    return 0;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.10.2016, 15:53
Ответы с готовыми решениями:

Выделение памяти для массива через функцию и использование этого массива
Я определяю свою структуру, создаю динамический массив, где будут храниться элементы этой...

Простой список в виде массива.Как работать с элементами списка-массива через единую функцию
Добрый день!Подсобите,как реализовать Простой список,но не через шаблоны или создание указателей,а...

Нужно написать функцию которая будет увеличевать каждый элеммент массива на 10% (Ввод массива через клаву)
#include &lt;iostream&gt; #define n 7 using namespace std ; int funct(int q) { funct=q*10% ; } int...

Массив через функцию
Всем привет!!!Помогите пожалуйста решить задачку!!! Дан массив. Найти номера всех элементов с...

массив через функцию
дан массив, нужно его сделать через функцию #include &quot;stdafx.h&quot; #include &lt;iostream&gt; using...

6
Croessmah
++Ͻ
14776 / 8452 / 1605
Регистрация: 27.09.2012
Сообщений: 20,800
Записей в блоге: 2
Завершенные тесты: 1
11.10.2016, 16:09 2
В общем случае, для оформления кода,
выделите код и нажмите на кнопку соответствующего языка (см. изображение)
0
zss
Модератор
Эксперт С++
7462 / 6838 / 4317
Регистрация: 18.12.2011
Сообщений: 18,090
Завершенные тесты: 1
11.10.2016, 16:15 3
Цитата Сообщение от Катрин-Катрин Посмотреть сообщение
for(i = 0; i < n - 1; i++)
А что, последний n-1 элемент переписывать не надо?

Добавлено через 2 минуты
C++
1
2
3
4
5
6
7
8
9
10
11
12
void perekl (int *y, int *x, int n)
{
   for(int i = 0; i < n; i++)
        y[i]=x[i];
}
void out_perekl (int *y, int n)
{
    cout<<endl<<"perelozhennyi massiv"<<endl;
    for (i=0; i<n; i++)
       cout<<"y["<<i<<"]="<<y[i]<<" ";
    cout<<endl;
}
0
alexmg
1 / 1 / 2
Регистрация: 14.03.2016
Сообщений: 6
11.10.2016, 16:37 4
В функции "pereckl" ошибка. Вы присваиваете значения не инициализированного массива, инициализированному. Поменяйте массивы местами:
C++
1
2
3
4
for(i = 0; i < n ; i++)
    {
        x[i]=y[i];
    }
0
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
7089 / 3392 / 460
Регистрация: 04.12.2011
Сообщений: 9,438
Записей в блоге: 5
11.10.2016, 20:35 5
Цитата Сообщение от Катрин-Катрин Посмотреть сообщение
но на написание буквы n 2 раза программа ругается,
Передайте 2 указателя и одну длину. Зачем дважды передавать одно и то же число?
ps массивы неконстантной длины это нестандартная фича и этому учиться с самого начала не стоило бы.
0
Катрин-Катрин
0 / 0 / 0
Регистрация: 16.06.2016
Сообщений: 10
11.10.2016, 21:50  [ТС] 6
Я пробовала 2 указателя и одну длину, тогда программа ругается, что массив не определен
0
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
7089 / 3392 / 460
Регистрация: 04.12.2011
Сообщений: 9,438
Записей в блоге: 5
11.10.2016, 22:16 7
Цитата Сообщение от Катрин-Катрин Посмотреть сообщение
Я пробовала 2 указателя и одну длину, тогда программа ругается, что массив не определен
Вы на неё наговариваете, имхо. Покажите, что пробовали и как и на что ругается. А попутно подумайте о том, чтобы не передавать два одинаковых числа.
0
11.10.2016, 22:16
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.10.2016, 22:16

Динамический массив через функцию
int num_char(char *ch) { int i = -1; do { i++; } while(*(ch+i) != '\0'); cout &lt;&lt;...

массив через функцию для начинашек
Задан массив целых чисел. Вывести на экран массив, составленный из элементов, не равных...

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


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

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

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