Сделать задачу с использованием функции - 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;
}
}
}
}
Объяснение кода листинга программы
- Объявлены прототипы функций:
neParFunc,funcSum,funcZam,result. - В функции
mainобъявлен массивmasразмером 10 и инициализирован значениями 1, 4, 1, -34, 3, 1, 45, -32, 44, 10. - В функции
mainвычислены и выведены начальные значения суммы непарных элементовsum_nep, суммы отрицательных элементовsum, а также значенияn. - В функции
mainвычислены и выведены непарные числа массиваmas. - В функции
mainвычислены и выведены первое и второе отрицательные числа массиваmas. - В функции
mainвыполнена функцияfuncZam, которая заменяет элементы массиваmasравные по модулю больше 1 на 0, а затем сортирует массив. - В функции
mainвыполнена функцияresult, которая выводит значения суммы непарных элементовsum_nep, суммы отрицательных элементовsum, а также выводит отсортированный массивmas. - В функции
mainвыполнена функцияsort, которая сортирует массивmasпо возрастанию. - В функции
mainвыполнена функцияsortдля сортировки массиваmas. - В функции
mainвыполнена функцияresult, которая выводит отсортированный массивmas.