Переведите с языка C++ на Си - C (СИ)

Узнай цену своей работы

Формулировка задачи:

В одномерном массиве, состоящем из n вещественных элементов,вычислить: - среднее арифметическое положительных элементов массива, разположенных на нечетных местах; - количество элементов массива,лежащих в диапозоне от A до B. Преобразовать массив таким образом, чтобы сначала располагались все элементы, отличающиеся от минимального не менее чем на 30%, а потом-все остальные.
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <memory.h>
#include <locale.h>
 
#define N 10
 
void swap(int& n1, int& n2);
 
int main()
{
    setlocale(LC_ALL,"Russian");
 
    int* X = new int[N];
    memset((void*)X, 0x00, sizeof(int) * N);
 
    for (int k = 0; k < N; k++)
     { printf("X[%d] = ",k); scanf("%d",&X[k]); }
 
    int count = 0;
    double nAvg = 0.0; 
    for (int i = 0; i < N; i++)
        if (X[i] > 0 && i % 2) { nAvg+=X[i]; count++; }
 
    nAvg /= count;
 
    printf("\nСреднее арифметическое nAvg = %4.2f\n\n",nAvg);
 
    int a = -1, b = a;
    printf("A = "); scanf("%d",&a);
    printf("B = "); scanf("%d",&b);
 
    printf("\n");
    
    int cnt = 0;
    for (int q = 0; q < N; q++)
        if (X[q] >= a && X[q] <= b)
         { printf("%d ",X[q]); cnt++; }
    printf("\n\n");
 
    printf("Количество элементов в диапазоне от %d до %d равно %d\n\n",a,b,cnt);
 
    int min_i = 0;
    for (int j = 0; j < N; j++)
        min_i = (X[j] < X[min_i]) ? j : min_i;
 
    int d = 0;
    double p = X[min_i] * 0.33;
    for (int t = 0; t < N; t++)
        if (abs(X[t] - X[min_i]) >= p)
            swap(X[d++],X[t]);
    
    for (int z1 = 0; z1 < N; z1++)
        printf("%d ",X[z1]);
    printf("\n\n");
 
    _getch();
}
 
void swap(int& n1, int& n2)
{ int _tn = n1; n1 = n2; n2 = _tn; }

Решение задачи: «Переведите с языка C++ на Си»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <memory.h>
 
 
#define N 10
 
void swap(int* n1, int* n2);
 
int main(void)
{
    int q = 0;
    int a = 0;
    int b = 0;
    int k = 0;
    int i = 0;
    int j = 0;
    int t = 0;
    int d = 0;
    int z1 = 0;
    int cnt = 0;
    int min_i = 0;
    int count = 0;
    double p = 0.0;
    double nAvg = 0.0;
    
    int* X = malloc(N * sizeof(int));
    memset((void*)X, 0x00, sizeof(int) * N);
 
    for (k = 0; k < N; k++)
    { 
       printf("X[%d] = ",k); scanf("%d",&X[k]); 
    }
 
    for (i = 0; i < N; i++)
    {
        if (X[i] > 0 && i % 2) 
        { 
           nAvg += X[i]; 
           count++; 
        }
    }
 
    nAvg /= count;
    printf("\nСреднее арифметическое nAvg = %4.2f\n\n",nAvg);
 
    printf("A = "); scanf("%d",&a);
    printf("B = "); scanf("%d",&b); 
    printf("\n");
    
    for (q = 0; q < N; q++)
    {
        if (X[q] >= a && X[q] <= b)
        { 
           printf("%d ",X[q]); 
           cnt++; 
        }
    }
    printf("\n\n");
 
    printf("Количество элементов в диапазоне от %d до %d равно %d\n\n",a,b,cnt);
 
    for (j = 0; j < N; j++)
    {
        min_i = (X[j] < X[min_i]) ? j : min_i;
    }
 
    p = X[min_i] * 0.33;
    for (t = 0; t < N; t++)
    {
        if (abs(X[t] - X[min_i]) >= p)
        {
            swap(&X[d++], &X[t]);
        }
    }
    
    for (z1 = 0; z1 < N; z1++)
    {
        printf("%d ",X[z1]);
    }
    printf("\n\n");
 
    free(X);
    return 0;
}
 
void swap(int* n1, int* n2)
{ int _tn = *n1; *n1 = *n2; *n2 = _tn; }

Объяснение кода листинга программы

  1. Объявлены переменные: q, a, b, k, i, j, t, d, z1, cnt, min_i, count, p, nAvg, X, N
  2. Выделена память под массив X, его размер равен N (10)
  3. Заполнение массива X с помощью scanf, значения не проверяются на корректность
  4. Инициализация переменных для хранения суммы и количества чисел в диапазоне
  5. Основной цикл программы, в котором происходит подсчет суммы чисел, которые больше нуля и четных
  6. Вычисление среднего арифметического nAvg
  7. Ввод значений a и b с помощью scanf
  8. Подсчет количества чисел в диапазоне от a до b
  9. Поиск индекса минимального элемента в массиве X
  10. Вычисление порогового значения p как 1/3 от минимального элемента
  11. Основной цикл программы для перестановки чисел, начиная с минимального, которые больше или равны p
  12. Вывод массива X на экран
  13. Освобождение памяти, выделенной под массив X
  14. Возврат 0 из функции main, что означает успешное выполнение программы

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 3.667 из 5
Похожие ответы