Сделать задачу с использованием функции - C++ - C (СИ)

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

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

Есть готовая программа(Сам делал, поэтому если там что-то через одно место то но удивляйтесь). Нужно переделать ее с использованием функции. Функций должно быть несколько, поэтому поставлю коменты, где они должны быть.
#include<stdio.h>
#include<conio.h>
#include<iostream.h>
#include<math.h>
int main()
{
 clrscr();
 const n=10;
 int mas[n]={1,4,1,-34,3,1,45,-32,44,10},mass[n];
 int sum=0,sum_nep=0,f,l,i,j,buf;
 
 //Функция на поиск сумы непарных элементов массива.
 printf("pochatkovuy masuv: ");
 for(i=0;i<n;i++)
    {
     if (mas[i]%2) {sum_nep+=mas[i];}
     printf(" %i ",mas[i]);
    }
 
//Функция на поиск суммы между первым и последним отрицательным числом.
 for(f=0;f<n;f++)
    {if(mas[f]<0){break;}}
 for(l=n-1;l>f;l--)
    {if(mas[l]<0){break;}}
 for(i=f+1;i<l;i++)
    {sum+=mas[i];}
    printf("\nzminenuy masuv:    ");
 
//Функция сортировки и замены некоторых элементов на 0
 for(i=0;i<n;i++)
    {if(abs(mas[i])>1) {mas[i]=0;}}
 for(j=0;j<n;j++){
    for(i=0;i<n-1;i++){
     if(mas[i]<mas[i+1]){
        buf=mas[i];
        mas[i]=mas[i+1];
        mas[i+1]=buf;
     }
    }
 }
 
//Вывод полученной информации происходит внутри соответствующей функции
//Вывод начального и конечного массива также должен быть внутри функции
for(i=0;i<n;i++){
     printf(" %i ",mas[i]);}
 printf("\nSuma mig 1i ostanim videmnum =%i",sum);
 printf("\nSuma neparnux =%i",sum_nep);
 getch();
 return 0;
}

Решение задачи: «Сделать задачу с использованием функции - C++»

textual
Листинг программы
#include <stdio.h>
#include <math.h>
 
//прототипы  функций
int neParFunc(int [],int n);
int funcSum(int [],int n);
void funcZam(int [], int n);
void result(int [], int, int, int);
 
int main()
{
    int const n=10;
    int mas[n]={1,4,1,-34,3,1,45,-32,44,10};
    int sum=0,sum_nep=0,i;
    
    printf("Начальный массив: \n");
    
    for (i =0; i<10; i++)
        printf("%2d ", mas[i]);
    
    //Функция на поиск сумы непарных элементов массива.
    sum_nep=neParFunc(mas, n);
    
    ////Функция на поиск и суму первого и отрицательного числа
    sum=funcSum(mas, n);
    
    //Функция сортировки и замены некоторых элементов на 0
    //как я понял меняются елементы которые больше 0 по модулю и затем массив сортируется но тогда почти все заменяется на ноль если что обьясни задание - исправлю
    funcZam(mas, n);
    
    result(mas, sum_nep, sum, n);
    
    printf("\n\n");
    return 0;
}
 
//функция для поиска и суммирования непрных чисел
int neParFunc(int mas[],int n)
{
    int s=0;
    
    printf("\nНепарные числа в массиве: \n");
    
    for(int i=0; i<n; i++)
       if(mas[i]%2!=0) //проверка на непарность
       {
           s+=mas[i];
           printf("%2d ", mas[i]);
       }
    
    
    printf("\n");
    
    return s;//возврат значение в соответствующею пременную
}
 
//сделал два цикла на случай если будет введеть другой массив и отрицательных чисел будет не два
int funcSum(int mas[],int n)
{
    int s=0;
    
    //поиск первого отрицательно числа
    for (int i=0; i<n; i++)
        if (mas[i]<0)
        {
            s+=mas[i];
            printf("\nПервое отрицательное число: %d", s);
            break;
        }
    
    //поиск второго отрицательного числа с конца массива
    for (int i=n; i>=0; --i)
    {
        if (mas[i]<0)
        {
            s+=mas[i];
            printf("\nВторое отрицательное число: %d", mas[i]);
            break;
        }
    }
    
    return s;//возврат значение
}
 
void funcZam(int mas[],int n)
{
    void sort(int mas[], int n);//прототип функции внутри функции
    
    for (int i=0; i<n; i++)
        if (abs(mas[i])>1)
            mas[i]=0;
    
    sort(mas, n);//вызов функции соортировки
}
 
//вывод результатов
void result(int mas[],int sum_nep,int sum,int n)
{
    printf("\nСума непарных элементов массива: %d", sum_nep);
    printf("\nСума отрицательных элементов массива: %d", sum);
    
    printf("\nМассив после подстановки 0: ");//вывод масива
        for (int i=0; i<n; i++)
            printf("%2d ", mas[i]);
}
 
//сортировка массива после подставки нулей
void sort(int mas[], int n)
{
    int buf=0;
    
    for(int j=0;j<n;j++)
    {
        for(int i=0;i<n-1;i++)
        {
            if(mas[i] < mas[i+1])
            {
                buf=mas[i];
                mas[i]=mas[i+1];
                mas[i+1]=buf;
            }
        }
    }
}

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

  1. Объявлены прототипы функций: neParFunc, funcSum, funcZam, result.
  2. В функции main объявлен массив mas размером 10 и инициализирован значениями 1, 4, 1, -34, 3, 1, 45, -32, 44, 10.
  3. В функции main вычислены и выведены начальные значения суммы непарных элементов sum_nep, суммы отрицательных элементов sum, а также значения n.
  4. В функции main вычислены и выведены непарные числа массива mas.
  5. В функции main вычислены и выведены первое и второе отрицательные числа массива mas.
  6. В функции main выполнена функция funcZam, которая заменяет элементы массива mas равные по модулю больше 1 на 0, а затем сортирует массив.
  7. В функции main выполнена функция result, которая выводит значения суммы непарных элементов sum_nep, суммы отрицательных элементов sum, а также выводит отсортированный массив mas.
  8. В функции main выполнена функция sort, которая сортирует массив mas по возрастанию.
  9. В функции main выполнена функция sort для сортировки массива mas.
  10. В функции main выполнена функция result, которая выводит отсортированный массив mas.

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

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