30 / 30 / 21
Регистрация: 19.02.2011
Сообщений: 169
1

Допишите прогу

10.03.2011, 21:18. Показов 516. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Удалить из вещественного массива элементы, наименее отличающиеся от его среднего арифметического. Создать функции для вычисления среднего значения элементов массива и удаления элемента.

------------------------------------
Вот тут я начал писать

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
#include <stdio.h>
#include <malloc.h>
#include <conio.h>
 
float get_cpedn_aref(int *arr, int N)
{
clrscr();
int sum=0;
for(int i=0; i<N; ++i)
sum+=arr[i];
return sum / N;
}
 
int main()
{
int N = 0, *arr;
printf("Vvedite N: ");
scanf("%d", &N);
arr =(int *)malloc(N * sizeof(int));
printf("\nVvedite elements massiva: ");
for(int i=0; i<N; ++i)
{
printf("\n\t%d. -> ", i);
scanf("%d", &arr[i]);
}
printf("\nSrednee arefmeticheskoe: \n\t %f", get_cpedn_aref(arr, N));
return 0;
}


Теперь мне надо функцию для удаления прописать
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.03.2011, 21:18
Ответы с готовыми решениями:

Допишите программу
Здравствуйте! У меня большая просьба к вам дописать пару функций в программу. Дан код: ...

ДОПИШИТЕ КОД )
Всем форумчан с наступающим поздравляю; Дописывайте код. Может что прикольное получится )))) ...

Допишите код
ЗАДАЧА. Составить программу вычисления выражения с использованием функции пользователя. Отчет о...

Допишите программу
10 DIM C(100, 100) 12 OPEN &quot;MK.txt&quot; FOR OUTPUT AS #1 15 PRINT &quot;VVEDITE PORYADOK KVADRATA&quot; ...

3
Заблокирован
11.03.2011, 03:27 2
Алгоритм:
1) прогоняем весь массив, ищем минимум разницы, при этом запоминаем значение элемента, который обеспечивает этот минимум;
2) прогоняем массив еще раз и убираем все элементы, равные найденному.
0
291 / 151 / 34
Регистрация: 13.10.2009
Сообщений: 164
12.03.2011, 11:48 3
C++
1
2
3
4
5
6
7
8
9
void Del(float *arr,int i,int N)
{
while(i<N)
{
arr[i]=arr[i+1];
i++;
}
N--;
}
Здесь у вас уменьшится только локальное значение N, чтобы уменьшилось в теле программы замените на:
C++
1
void Del(float *arr,int i,int &N)
C++
1
2
3
for(i=0;i<N;i++)
if(arr[i]==sred)
Del(arr,i,N);
Здесь у вас удаляются элементы, которые равны средне-арифметическому, а нужно:
элементы, наименее отличающиеся от его среднего арифметического
Потому нужно немного изменить - найти минимальную разницу сначала, а потом удалять:
C++
1
2
3
4
5
6
float min=abs(arr[0]-sred);
for(i=0;i<N;i++)
  if(abs(arr[i]-sred)<min)min=abs(arr[i]-sred);//нашли минимальное растояние до абса
for(i=0;i<N;i++)
  if(abs(arr[i]-sred)==min)
    Del(arr,i--,N);//уменьшаем i,так как удалили iый элемент,а потому надо его проверить еще раз
Ну и в конце неплохо было бы память освободить, взятую под массив, но это уже сами
1
4634 / 2461 / 874
Регистрация: 29.11.2010
Сообщений: 5,413
12.03.2011, 12:05 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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
 
void PrintArray(int *array, int array_size) {
  int i;
  for (i = 0; i < array_size; ++i)
    printf("%4d", array[i]);
  printf("\n");
}
 
void RandomizeArray(int *array, int array_size) {
  int i;
  for (i = 0; i < array_size; ++i)
    array[i] = rand() % 5 + 1;
}
 
void DeleteItem(int *array, int *array_size, int position) {
  int i;
  for (i = position; i < *array_size - 1; ++i)
    array[i] = array[i + 1];
  --*array_size;
}
 
float Average(int *array, int array_size) {
  float result = 0;
  int i;
  for (i = 0; i < array_size; ++i)
    result += array[i];
  return result / array_size;
}
 
int ClosestToValue(int *array, int array_size, float value) {
  int min_value = array[0], i;
  float min_diff = fabs(value - array[0]);
  for (i = 1; i < array_size; ++i)
    if (fabs(value - array[i]) < min_diff) {
      min_diff = fabs(value - array[i]);
      min_value = array[i];
    }
  return min_value;
}
 
int main(int argc, char *argv[]) {
  srand(time(NULL));
  int array_size = 15 + rand() % 6;
  int *array = (int*)malloc(sizeof(int) * array_size);
 
  RandomizeArray(array, array_size);
  PrintArray(array, array_size);
 
  float average = Average(array, array_size);
  int number = ClosestToValue(array, array_size, average);
 
  printf("Average: %f, number to delete: %d.\n", average, number);
 
  int i = 0;
  while (i < array_size) {
    if (array[i] == number)
      DeleteItem(array, &array_size, i);
    else
      ++i;
  }
 
  PrintArray(array, array_size);
  free(array);
  return 0;
}
0
12.03.2011, 12:05
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.03.2011, 12:05
Помогаю со студенческими работами здесь

Допишите программу
Дан двумерный массив A удалите в нем строку содержащую максимальное по модулю число и внесите...

Допишите программу
Сформировать запись, имеющую следующую структуру type студент= record фамилия: string; номергр:...

Допишите программу на матрицу
Здравствуйте, сделайте пожалуйста так, чтобы программа еще раз вывела введеную матрицу, но при...

Пожалуйста допишите программу
Здесь два конструктора, нужно объявить класс main, если не сложно покажите как это будет отдельно...

Процедура и 2 аргумента допишите спасибо
В таблице создать два поля username nvarchar и userpassword nvarchar. Процедура ищет совпадения...

Написал прогу, создал Release конфигурацию. Какие оттуда файлы нужны, чтоб передать прогу заказчику
там их 6 штук вышло. понимаю для чего myapp.exe -собственно сам exe myapp.exe.xml - там...


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

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

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