Форум программистов, компьютерный форум CyberForum.ru

Сортировка одномерных массивов - C++

Восстановить пароль Регистрация
 
Alexanraaa
0 / 0 / 1
Регистрация: 02.10.2012
Сообщений: 17
25.12.2012, 19:40     Сортировка одномерных массивов #1
В C++.Подскажите, что не так? вроде все правильно, но работает она неправильно
Задание:Сформировать другой массив из элементов исходного массива, величины которых находятся в заданных пределах от А до В, и вставить в середину полученного массива среднее значение элементов этого массива.
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
#include <vcl.h>
#include <math.h>
#include <stdio.h>
#include <conio.h>
#include <iostream.h>
 
#pragma hdrstop
 
//---------------------------------------------------------------------------
 
#pragma argsused
 
void in_arr(int *x, int n );
int sr(int*, int);
int  array_del(int *x, int &n);
void vstavka_sr(int*x, int k);
int main()
 
{       int x[10];
        int n, sr_znach, k;
        printf("\t *** Rabota 11 ***\n");
        printf("Input N=");
        scanf("%d",&n);
        in_arr(x,n);
        sr_znach=sr(x,n);
        printf("\n sr_znach=%d\n", sr_znach);
        array_del(x, n);
        k = array_del(x, n);
        vstavka_sr(x, n);
        getch();
        return 0;
}
void  in_arr( int *x, int n )
{   printf("\n %d chisel massiva: ", n);
    for (int i = 0; i<n; i++)
        {
        x[i] = rand()%100;
        printf("%d ", x[i]);
        }
        printf("\n");
}
int sr(int x[10], int n)
{       int sr, sum, i;
        for (i = 0, sum = 0; i<n; i++) sum = sum + x[i];
        sr=sum/n;
        return sr;
}
int  array_del(int *x, int &n)
{       int i, j, k;
        int A, B;
        printf("\n Vvedite A and B:");
        scanf("%d%d", &A, &B);
        for (int i = 0, k=0; i<n; i++)
        {
        if (x[i]>=A && x[i]<=B)k++;
        {
        printf("\t%d", x[i]);
        }
        }
        return k;
}
void vstavka_sr(int*x, int k)
{       int i, sr, s;
 
        s=k/2;
        for(i=0;i<k;i++)
        {
        if(i==s)
        {
        x[++i]=sr; printf("\t%d ", x[i]);
        }
        }
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
mimicria
return (true);
 Аватар для mimicria
1956 / 1093 / 91
Регистрация: 19.04.2011
Сообщений: 2,344
25.12.2012, 19:55     Сортировка одномерных массивов #2
Цитата Сообщение от Alexanraaa Посмотреть сообщение
C++
1
array_del(x, n); k = array_del(x, n);
2 раза вызывается?

Добавлено через 2 минуты
Цитата Сообщение от Alexanraaa Посмотреть сообщение
int sr(int x[10], int n)
Есть уверенность, что 10 ?

Добавлено через 1 минуту
Цитата Сообщение от Alexanraaa Посмотреть сообщение
int array_del(int *x, int &n)
А передаётся указатель на n ?

Добавлено через 1 минуту
Цитата Сообщение от Alexanraaa Посмотреть сообщение
if (x[i]>=A && x[i]<=B)k++;
Смысл ускользает, где формирование нового массива?

Добавлено через 1 минуту
Ну и вставка вообще феерический бред, зачем в цикле перебирать, если мы и так знаем середину массива? Плюс к этому надо же не затереть элемент массива, а вставить
Alexanraaa
0 / 0 / 1
Регистрация: 02.10.2012
Сообщений: 17
25.12.2012, 20:06  [ТС]     Сортировка одномерных массивов #3
Я работала с исходным массивом, поэтому не формировала новый. А n<=10 при вводе в main.
C++
1
2
//array_del(x, n);
        k = array_del(x, n);
Добавлено через 8 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int  array_del(int *x, int &n)
{       int i, j, k;
        int A, B;
        printf("\n Vvedite A and B:");
        scanf("%d%d", &A, &B);
        for (int i = 0, k=0; i<n; i++)
        {
        if (x[i]>=A && x[i]<=B)k++;
        {
        printf("\t%d", x[i]);
        }
        }
        return k;
}
как в этой функции посчитать количество элементов в массиве с удаленными элементами?
mimicria
return (true);
 Аватар для mimicria
1956 / 1093 / 91
Регистрация: 19.04.2011
Сообщений: 2,344
25.12.2012, 21:02     Сортировка одномерных массивов #4
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>
 
using namespace std;
 
int main()
{
 srand(time(NULL));
 int n;
 cout << "N = ";
 cin >> n;
 int *mas = new int[n];
 for (short i=0; i<n; i++)
 {
  mas[i] = rand()%100;
  cout << mas[i] << " ";
 }
 cout << endl;
 int A, B;
 cout << "A, B = ";
 cin >> A >> B;
 int *mas2 = new int[n+1];
 int k=0, sr=0;
 for (short i=0; i<n; i++)
 {
  if (mas[i]>=A && mas[i]<=B)
  {
   mas2[k]=mas[i];
   sr+=mas2[k];
   cout << mas2[k] << " ";
   k++;
  }
 }
 cout << endl;
 sr/=k;
 n=k;
 while (n>=k/2)
 {
  mas2[n+1]=mas2[n];
  n--;
 }
 mas2[k/2]=sr;
 for (short i=0; i<k+1; i++)
  cout << mas2[i] << " ";
 cout << endl;
 delete mas;
 delete mas2;
 return 0;
}
Alexanraaa
0 / 0 / 1
Регистрация: 02.10.2012
Сообщений: 17
25.12.2012, 21:19  [ТС]     Сортировка одномерных массивов #5
Большое спасибо!!!
Yandex
Объявления
25.12.2012, 21:19     Сортировка одномерных массивов
Ответ Создать тему
Опции темы

Текущее время: 13:14. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru