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

Написать функцию: обнулить все элементы, которые больше среднего арифметического элементов исходного массива

23.10.2016, 17:05. Показов 2742. Ответов 24
Метки нет (Все метки)

Написать функцию, которая в массиве вещественных чисел обнуляет все элементы, которые больше среднего арифметического значения элементов исходного массива.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.10.2016, 17:05
Ответы с готовыми решениями:

Дан массив, состоящий из N элементов.Обнулить все элементы, большие среднего арифметического всех элементов массива
Дан массив, состоящий из N элементов. Обнулить все элементы, большие среднего арифметического всех...

Уничтожить все элементы больше среднего арифметического элементов массива
1. Уничтожить все элементы больше среднего арифметического элементов массива. 2. Сдвинуть...

Вывести на экран элементы массива, которые больше среднего арифметического всех его элементов
Ребят помогите пожалуйста решить два массива, а то мне трудно они даються=) 1)Дан массив А из N...

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

24
3 / 3 / 10
Регистрация: 22.10.2016
Сообщений: 32
23.10.2016, 22:33 2
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

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
#include <stdio.h> 
 
int i;
 
void null(float *,int);
 
void main() {
    int n;
    printf("Kolvo elementov massiva - ");
    scanf("%d",&n);
    float a[n];
    for (i=0;i<n;i++)
    {
        printf("a[%d]= ",i+1);
        scanf("%f",&a[i]);
    } 
    null(a,n);
    for (i=0;i<n;i++)
        printf("%.2f ",a[i]);
    getch();
}
 
void null(float a[],int n) {
    float s;
    for(i=0;i<n;i++)
        s+=a[n];
    s=s/n;
    for(i=0;i<n;i++)
        if (a[i]>s) 
            a[i]=0;
}
0
0 / 0 / 1
Регистрация: 13.09.2016
Сообщений: 154
28.10.2016, 15:22  [ТС] 3
PAMAH HAPKAMAH, спасибо огромное.
Если вам не трудно можете дать небольшой комментарий по поводу написания программы.
0
1786 / 1036 / 445
Регистрация: 12.05.2016
Сообщений: 2,550
28.10.2016, 16:24 4
Цитата Сообщение от PAMAH HAPKAMAH Посмотреть сообщение
C
1
2
scanf("%d",&n); 
float a[n];
PAMAH HAPKAMAH, вижу такую запись не первый раз, давно так можно делать в си?
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
11710 / 7217 / 1710
Регистрация: 25.07.2009
Сообщений: 13,218
28.10.2016, 16:32 5
Цитата Сообщение от shvyrevvg Посмотреть сообщение
давно так можно делать в си?
Не поверите, аж с 1999 года с выходом стандарта ANSI C 99. Другое дело - не все компиляторы его поддерживают (мелкомягкому cl к примеру стандарты - не указ)...
1
0 / 0 / 1
Регистрация: 13.09.2016
Сообщений: 154
28.10.2016, 16:53  [ТС] 6
PAMAH HAPKAMAH, программа не работает...
0
1786 / 1036 / 445
Регистрация: 12.05.2016
Сообщений: 2,550
28.10.2016, 16:59 7
Цитата Сообщение от Кристина 1998 Посмотреть сообщение
PAMAH HAPKAMAH, программа не работает...
А пишет что?

Добавлено через 2 минуты
Я бы еще s проиницилизировал нулем в функции.
0
0 / 0 / 1
Регистрация: 13.09.2016
Сообщений: 154
28.10.2016, 17:03  [ТС] 8
shvyrevvg,scanf This function or variable may be unsafe
идентификатор getch не определен,
getch идентификатор не найден
невозможно выделить память для массива постоянного ненулевого размера
0
1786 / 1036 / 445
Регистрация: 12.05.2016
Сообщений: 2,550
28.10.2016, 17:08 9
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Кристина 1998,
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
#include <stdio.h> 
#include <windows.h> 
 
 
void null(float *,int);
 
int main(void) {
    int n;
    printf("Kolvo elementov massiva - ");
    scanf("%d",&n);
    float a[n];
    for (int i=0;i<n;i++)
    {
        printf("a[%d]= ",i+1);
        scanf("%f",&a[i]);
    } 
    null(a, n);
    for (int i=0;i<n;i++)
        printf("%.2f ",a[i]);
    system("pause");
    return 0;
}
 
void null(float *a, int n) {
    float s = 0;
    for(int i=0;i<n;i++)
        s+=a[i];
    s=s/n;
    for(int i=0;i<n;i++)
        if (a[i]>s) 
            a[i]=0;
}
0
0 / 0 / 1
Регистрация: 13.09.2016
Сообщений: 154
28.10.2016, 17:19  [ТС] 10
shvyrevvg, мне нельзя использовать дополнительные библиотеки....

Добавлено через 1 минуту
shvyrevvg, так и осталось scanf This function or variable may be unsafe
0
1786 / 1036 / 445
Регистрация: 12.05.2016
Сообщений: 2,550
28.10.2016, 17:21 11
Цитата Сообщение от Кристина 1998 Посмотреть сообщение
shvyrevvg, мне нельзя использовать дополнительные библиотеки....
Хорошо, какие вам можно использовать? conio.h можно? тогда вместо system("pause") верните getch().

Добавлено через 23 секунды
Цитата Сообщение от Кристина 1998 Посмотреть сообщение
shvyrevvg, так и осталось scanf This function or variable may be unsafe
scanf_s(..)

Добавлено через 1 минуту
Цитата Сообщение от shvyrevvg Посмотреть сообщение
system("pause") верните getch(
Это нужно чтобы окно сразу после выполнения программы не закрылось и Вы могли увидеть результат.
0
0 / 0 / 1
Регистрация: 13.09.2016
Сообщений: 154
28.10.2016, 17:35  [ТС] 12
shvyrevvg, только include<stdio.h>

Добавлено через 19 секунд
shvyrevvg, scanf_s тоже не помогает...
0
1786 / 1036 / 445
Регистрация: 12.05.2016
Сообщений: 2,550
28.10.2016, 17:44 13
Цитата Сообщение от Кристина 1998 Посмотреть сообщение
shvyrevvg, scanf_s тоже не помогает...
и printf() на printf_s() тоже заменить нужно.

Добавлено через 4 минуты
Кристина 1998, visual studio?
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
#include <stdio.h> 
#include <windows.h> 
 
 
void null(float *, int);
 
int main(void) {
    int n;
    printf("Kolvo elementov massiva - ");
    scanf_s("%d", &n);
    float a[n];
    for (int i = 0; i<n; i++)
    {
        printf_s("a[%d]= ", i + 1);
        scanf_s("%f", &a[i]);
    }
    null(a, n);
    for (int i = 0; i<n; i++)
        printf_s("%.2f ", a[i]);
    system("pause");
    return 0;
}
 
void null(float *a, int n) {
    float s = 0;
    for (int i = 0; i<n; i++)
        s += a[i];
    s = s / n;
    for (int i = 0; i<n; i++)
        if (a[i]>s)
            a[i] = 0;
}
Добавлено через 1 минуту

Не по теме:

Мде.... Вы мне одногрупницу напомнили.

0
0 / 0 / 1
Регистрация: 13.09.2016
Сообщений: 154
28.10.2016, 18:39  [ТС] 14
shvyrevvg, да Visual Studio

Добавлено через 2 минуты
shvyrevvg,
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
#include <stdio.h>
 
int main(void)
{
    double mass[30]; //массив вещественных чисел
    int i; //счетчик
    double total,totalavg=0;
 
    printf("Please enter elements.\n");
    for (i=0;i<30;i++)
    {
        printf("Please enter %d element: ",i);
        scanf("%lf",&mass[i]); //заполняем массив с клавиатуры
    }
 
    for (i=0;i<30;i++) //считаем сумму всех элементов
    {
        total+=mass[i];
    }
    printf("Average = %.2f\n",(total/30)); //выводим среднее арифметическое (сумма на число элементов)
 
    for (i=0;i<30;i++) //суммируем элементы, большие среднего арифметического.
    {
        if (mass[i] > (total/30)) totalavg+=mass[i];
    }
 
    printf("Result = %.2f\n",totalavg);
    return 0;
}
А можно ли исправить эту программу под мою?
0
1786 / 1036 / 445
Регистрация: 12.05.2016
Сообщений: 2,550
28.10.2016, 18:44 15
Цитата Сообщение от Кристина 1998 Посмотреть сообщение
А можно ли исправить эту программу под мою?
Вы её пробовали компилировать? Вам уже дали рабочую версию. Без system("pause") и getch() Окно появляется на доли секунды и исчезает
0
0 / 0 / 1
Регистрация: 13.09.2016
Сообщений: 154
28.10.2016, 19:04  [ТС] 16
shvyrevvg, ладно -не стоит разбирать эту программу
Спасибо!
0
131 / 131 / 157
Регистрация: 11.04.2015
Сообщений: 343
28.10.2016, 20:13 17
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
#include <stdio.h> 
#include <time.h>
#include <Windows.h>
#define ARRAY_SIZE      10
#define LOWER_BORDER   -100
#define HIGHER_BORDER   100
 
 
int main()
{
    srand(time(NULL));
    int *a, i;
    double sum = 0, arithmeticAverage = 0;
    BOOL start_flag = FALSE;
    a = malloc(ARRAY_SIZE * sizeof(int));
    printf("The given array:\n");
    for (i = 0; i < ARRAY_SIZE; i++) {
        a[i] = (rand() % (HIGHER_BORDER - LOWER_BORDER + 1)) + LOWER_BORDER;
        printf("%3d ", a[i]);
        sum += a[i];
    }
    arithmeticAverage = sum / ARRAY_SIZE;
    printf("\nThe arithmetic average is: %.0f:\n", arithmeticAverage);
    printf("Array after the transformation:\n");
    for (i = 0; i < ARRAY_SIZE; i++) {
        if (a[i] > arithmeticAverage)
            a[i] = 0;
        printf("%3d ", a[i]);
    }
    printf("\n");
    
    system("pause");
    return 0;
}
1
0 / 0 / 1
Регистрация: 13.09.2016
Сообщений: 154
28.10.2016, 20:27  [ТС] 18
andreyka93, а использую только include <stdio,h>-это можно сделать?
0
131 / 131 / 157
Регистрация: 11.04.2015
Сообщений: 343
28.10.2016, 20:33 19
#include <time.h> библиотека используется для генератора случайных чисел, мне лень забивать массив вручную
#include <Windows.h> библиотека используется для команды system("pause"); чтобы после выполнения консоль не закрывалась
1
0 / 0 / 1
Регистрация: 13.09.2016
Сообщений: 154
28.10.2016, 20:34  [ТС] 20
andreyka93, мне нельзя использовать все эти библиотеки
Спасибо большое!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.10.2016, 20:34
Помогаю со студенческими работами здесь

Массив: все элементы, больше среднего арифметического элементов массива, заменить на 0
Ээй,помогите пожалуйста):flirt: заполнить двумерный массив NxN случайными числами из...

Переписать во второй массив те элементы первого, которые больше среднего арифметического всех элементов массива
1. Заполнить одномерный массив из N элементов (N - задано константой, N&lt;=100) случайными...

Удалить все четные элементы, имеющие значение больше среднего арифметического всех элементов массива
Удалить все четные элементы, имеющие значение больше среднего арифметического всех элементов...

Заменить все элементы массива, которые меньше среднего арифметического значения всех элементов
Помогите, пожалуйста, правильно написать программу. Я написал код, но он не запускается. ...


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

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

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