Как описать прототип функции - C (СИ)
Формулировка задачи:
Помогите разобраться с прототипами, есть следующий код: и в нем есть несколько одинаковых кусков
собственно вопрос, как пишется этот прототип? чтобы хоть немного сократить этот код.
ЗЫ: Всех мужиков с праздником))
#include <vcl.h>
#pragma hdrstop
#pragma argsused
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
int main(int argc, char* argv[])
{
int a, i, b, c;
/* a - колличество элементов массивов
b - переменная выхода из бесконечного цикла программы
i - количество повторов цикла при заполнении массива
c - для ввода элементов массива
*/
char err[250]; /*переменная для считывание ошибочно введенных данных*/
do /*начало цикла повторения программы*/
{
clrscr(); /*очищаем экран консоли*/
printf("Vvedite kol-vo elementov massiva=>"); /*просим ввести количество элементов массива*/
while (!scanf("%d",&a)) /*условие цикла проверки на правильность введенного значения,
пока не считается целое число делать*/
{
scanf("%s",err); /*считывать в переменную err как символы*/
printf("error\n"); /*выводить на экран сообщение об ошибке*/
}
int *mass=(int*)malloc(a*sizeof(int)); /*выделяем память под массив а-элементов*/
do /*начало цикла проверки введенного значения
делать:*/
{
printf("\n\nZapolnit avtom?\n\n1-DA\n2-NET\n>"); /*спрашиваем способ заполнения массива*/
if (!scanf("%d",&e)) /*если не можем считать ка целое число
делать*/
{
scanf("%s",err); /*считывать в переменную err как символы*/
printf("error\n"); /*выводить на экран сообщение об ошибке*/
}
}
while((e!=1)&(e!=2)); /*условие выхода из цикла, т.е. введено правильное значение*/
if (e==2) /*если пользователь выбрал заполнение массива вручную (е=2)
делаем:*/
{
/*--------------------цикл ручного ввода значений элементов массива--------------------------*/
for (i=0; i<a; i++) /*условие повтора цикла*/
{
printf("Vvedite element massiva #"); /*выводим на экран запрос на ввод элемента массива*/
printf("%d",i+1); /*дописываем меняющийся номер элемента массива*/
printf("=>"); /*выводим для удобства отображения*/
if (!scanf("%d",&c)) /*если не можем считать как целое число
делать:*/
{
scanf("%s",err); /*считывать в переменную err как символы*/
printf("error\n"); /*выводить на экран сообщение об ошибке*/
i--; /*инкрементируем счетчик, чтобы ввод продолжался с места неправильно введенной переменной*/
}
else /*иначе*/
mass[i]=c; /*заносим введенное значение в массив*/
}
/*-------------------------конец цикла ручного ввода значений--------------------------------------*/
}
else /*иначе (если пользователь выбрал автоматическое заполнение(е=1))*/
/*-----------------цикл заполнения массива произвольными значениями------------------------------*/
for (i=0; i<a; i++) /*условие повтора цикла*/
{
mass[i]=rand()%100; /*заносим в массив рандомное значение*/
}
/*--------------------конец цикла автоматического ввода значений----------------------------------*/
printf("\nIshodnii massiv "); /*выводим на экран сообщение о выводе исходного массива*/
/*----------------начало цикла вывода на экран исходного массива----------------------------------*/
for (i=0; i<a; i++) /*условие повтора цикла*/
{
c=mass[i]; /*присваиваем переменной с значение элемента массива*/
printf("%d", c); /*выводим на экран переменную с*/
printf(" "); /*печатаем пробел, чтобы разделить элементы при выводе*/
}
/*-------------------------конец цикла вывода исходного массива-----------------------------------*/
printf("\n\nMassiv v obratnom poryadke "); /*выводим сообщение о выводи обратного массива*/
/*----------------------цикл вывода массива в обратном порядке-----------------------------------*/
for (i=a-1; i>=0; i--) /*условие цикла*/
{
c=mass[i]; /*присваиваем переменной значение элемента массива*/
printf("%d", c); /*печатаем на экран переменную с*/
printf(" "); /*печатаем пробел чтобы разделить элементы при выводе*/
}
/*----------------------конец цикла вывода обратного массива--------------------------------------*/
free(mass); /*освобождаем память из под массива*/
b=0; /*обнуляем переменную b*/
do /*начало цикла проверки введенной переменной
делать:*/
{
printf("\n\nSnachala?\n\n1-DA\n2-NET\n>"); /*спрашиваем будем ли повторять*/
if (!scanf("%d",&b)) /*если не можем считать как число
делать:*/
{
scanf("%s",err); /*считать в переменную err как символы*/
printf("error\n"); /*вывести сообщение об ошибке*/
}
}
while((b!=1)&(b!=2)); /*условие выхода из цикла, т.е. если введено правильное значение*/
}
while(b!=2); /*условие выхода из цикла, т.е. если b не 2, то повторяем программу*/
printf("\nProgrammu podgotovi\nstuden gruppi 429"); /*вывод на экран*/
printf("\n\nNajmite enter dlya vihoda"); /*вывод на экран*/
getch (); /*ждем нажатия ентера*/
return 0; /*возвращаем 0*/
} if (!scanf("%d",&b)) /*если не можем считать как число
делать:*/
{
scanf("%s",err); /*считать в переменную err как символы*/
printf("error\n"); /*вывести сообщение об ошибке*/
}Решение задачи: «Как описать прототип функции»
textual
Листинг программы
void func(int);
void func(int a)
{
printf("value = %d\n", a);
}
...
func(1);
Объяснение кода листинга программы
- Объявлена функция func(int)
- В функции func(int) происходит вывод значения переменной a с помощью функции printf
- Значение переменной a получается из аргумента функции func(int)
- Аргумент функции func(int) имеет тип int и передается в функцию func(int) без имени
- Функция func(int) принимает только один аргумент типа int
- Значение переменной a выводится на экран с помощью функции printf
- Значение переменной a представлено в виде строки с помощью формата %d
- Выполняется вызов функции func(int) с аргументом 1
- Значение аргумента 1 передается в функцию func(int)
- В функции func(int) происходит вывод значения переменной a
- Значение переменной a равно 1
- Значение переменной a выводится на экран
- Результатом выполнения функции func(int) является вызов функции printf
- Значение переменной a представлено в виде строки
- Значение переменной a выводится на экран
- Значение переменной a равно 1
- Значение переменной a представлено в виде строки
- Значение переменной a выводится на экран
- Значение переменной a равно 1
- Значение переменной a представлено в виде строки
- Значение переменной a выводится на экран