Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.05.2020, 21:42   #1
Alexalex777
Пользователь
 
Регистрация: 02.04.2020
Сообщений: 97
По умолчанию Типы функций

У меня вопрос по теории путаюсь в типах функций и в основном пишу программы без функций.
Есть 4 типа функций конкретного описания с примерами не нахожу.Вопрос о структуре как работают как вызываются и обьявляются функции которые не принимают результат но возвращают.
Бывает 4 типа функций:
1.Функция, которая не принимает и не возвращает
2.Функция, которая принимает и не возвращает
3.Функция не принимает, но возвращает
4.Функция принимает и возвращает

1.Функция, которая не принимает и не возвращает

1.Void fun (void); // объявление
2.name fun(); //вызов функции
3.void fun(void);
{ } //тело функции

Код:
#include <stdio.h>
     void f1(void);//вызов функции 1
     void f2(void);//вызов функции 2
   int main(void)// программа
       {
    	f1();
	    f2();
	  return 0;
       }
        void f1(void)//функция 1
		     {
       printf("\n Alex");
              }
		void f2(void)//функция 2
		     {
			printf("\n Sm");
			printf("\n");
		      }
2. Функция, которая принимает и не возвращает

1.Void fun (int a); // объявление void ничего не возвращает принимает переменную int a
2.fun (int a); //вызов функции
3.void fun (int a); // функция
{ } //тело функции

2 Программа принимает и выводит символ 5 раз.
Написать функцию, которая принимает символ и печатает его 5 раз.

Код:
#include <stdio.h>
     void sim(char);//вызов функции 
    int main(void)// программа
       {
		   char ch;
		   printf ("\n Enter symbol");
		   scanf("%c",&ch);
    	   sim (ch);
	  return 0;
       }
	void sim(char ch)//функция
	{
		int i;
		for (i = 0; i < 5; i++)
			printf("%c", ch);
	}
3.Функция не принимает, но возвращает -функция без параметров <-тут непонятно и примера нет

1.Int fun (); //вызов функции-
2.Int fun();//объявление функции
3.Int fun();//функция возвращает значение через return
{ return a+b; }//тело функции

3
Код:
#include <stdio.h>
//void f(void);//вызов функции 
      int main(void)//  программа
      {
		//int a,b;
		//int f();
	return f();
      }
      int f(void)//функция
         {
	int a=10,b=35;
	return a + b;
           }
4.Функция принимает и возвращает

1.Int fun (int, int); //объявление функции
2.fun (a, b); //вызов функции
3.int fun ( int a, int b); // функция int возврат переменной – () принимает 2 числа
{ return a+b } //тело функции

4 Программа принимает 4 пары чисел и печатает после каждой пары среднеарифметическое, написать функцию, которая принимает 2 целых числа и возвращает их среднеарифметическое.
Код:
#include <stdio.h>
   double f(int,int);//объявление функции
      int main(void)//  программа
      {
		  int i, num1, num2;
		double avg;
		  for (i = 0; i <= 4; i++)
		  {
			  printf("Enter two number");
			  scanf("%d%d",&num1,&num2);
			  avg = f(num1, num2);//вызов функции
			  printf("\n Avg=%f", avg);
		  }
      }
      double f(int a,int b)//функция
         {
		return ((a + b)/2.0);
           }
Alexalex777 вне форума Ответить с цитированием
Старый 16.05.2020, 21:53   #2
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

Цитата:
Сообщение от Alexalex777 Посмотреть сообщение
У меня вопрос по теории путаюсь в типах функций
Так в чем вопрос?
waleri вне форума Ответить с цитированием
Старый 16.05.2020, 22:10   #3
Alexalex777
Пользователь
 
Регистрация: 02.04.2020
Сообщений: 97
По умолчанию

Цитата:
Вопрос о структуре как работают как вызываются и обьявляются функции которые не принимают результат но возвращают.

3.Функция не принимает, но возвращает -функция без параметров <-тут непонятно и примера нет

1.Int fun (); //вызов функции-
2.Int fun();//объявление функции
3.Int fun();//функция возвращает значение через return
{ return a+b; }//тело функции
не рабочая функция данного типа
Код:
#include <stdio.h>
     void sim(char);//вызов функции 
    int main(void)// программа
       {
		   char ch;
		   printf ("\n Enter symbol");
		   scanf("%c",&ch);
    	   sim (ch);
	  return 0;
       }
	void sim(char ch)//функция
	{
		int i;
		for (i = 0; i < 5; i++)
			printf("%c", ch);
	}
Alexalex777 вне форума Ответить с цитированием
Старый 16.05.2020, 22:22   #4
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,285
По умолчанию

Ну искусственный пример всегда можно придумать. Например, функция возвращает какое-то содержимое интернет-страницы при вызове. При этом адрес страницы фиксирован, так что передавать его нет смысла, а содержимое меняется со временем. Или более простой пример: функция rand. Она не принимает никаких параметров, но возвращает значение.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 16.05.2020, 22:58   #5
Alexalex777
Пользователь
 
Регистрация: 02.04.2020
Сообщений: 97
По умолчанию

BDA собственно и хотел понять как сделать функцию которая возвращает значение и не принимает. Так же можно функцию и с массивом сделать , который вызывается в программе а в функции остается неизменным ???

Структура этого типа функций такая ?

1.Int fun (); //вызов функции-
2.Int fun();//объявление функции
3.Int fun();//функция возвращает значение через return
{ return a+b; }//тело функции

retun думаю не всегда должен быть ?

BDA можешь написать несколько простеньких примеров таких функций целиком с программой и с массивом?
Alexalex777 вне форума Ответить с цитированием
Старый 17.05.2020, 05:16   #6
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,285
По умолчанию

Кстати говоря, main часто и оказывается такой функций (не принимает параметров, но возвращает значение).
Пример с массивом:
Код:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int* f(void)
{
    const int a[] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
    int *p = (int *) malloc(sizeof(a));
    memcpy(p, a, sizeof(a));
    return p;
}

int main()
{
    int *p = f();
    for (int i = 0; i < 9; ++i)
        printf("%d ", p[i]);
    free(p);
    return 0;
}
Структура такая:
1. fun(); // вызов функции
2. int fun(); // объявление (прототип) функции
3. int fun() { return a+b; } // определение функции

return должен быть всегда для функций, которые возвращают значение.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 17.05.2020, 09:09   #7
Алексей1153
фрилансер
Форумчанин
 
Регистрация: 11.10.2019
Сообщений: 947
По умолчанию

Цитата:
Сообщение от Alexalex777 Посмотреть сообщение
1.Функция, которая не принимает и не возвращает
2.Функция, которая принимает и не возвращает
3.Функция не принимает, но возвращает
4.Функция принимает и возвращает

1.Функция, которая не принимает и не возвращает
это всё один и тот же тип функции:
TYPE func(TYPES_LIST)
{
}

TYPE может быть void - тогда функция ничего не возвращает
TYPES_LIST может быть void - тогда функция без аргументов.

Я бы лучше поделил функции на
1) глобальные (дружественные - в этот же список)
2) статические
3) виртуальные
Алексей1153 вне форума Ответить с цитированием
Старый 18.05.2020, 03:17   #8
Alexalex777
Пользователь
 
Регистрация: 02.04.2020
Сообщений: 97
По умолчанию

BDA спасибо ! можешь еще написать попроще программу которая передает простые числа не в массиве?Желательно без указателей и malloc. В процессе просто еще не освоил их.
неудачная попытка
Код:
#include <stdio.h>
//void f(void);//вызов функции 
      int main(void)//  программа
      {
		//int a,b;
		//int f();
	return f();
      }
      int f(void)//функция
         {
	int a=10,b=35;
	return a + b;
           }

Последний раз редактировалось Alexalex777; 18.05.2020 в 03:19.
Alexalex777 вне форума Ответить с цитированием
Старый 18.05.2020, 03:17   #9
Alexalex777
Пользователь
 
Регистрация: 02.04.2020
Сообщений: 97
По умолчанию

Алексей1153 спасибо!
Alexalex777 вне форума Ответить с цитированием
Старый 18.05.2020, 04:15   #10
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,285
По умолчанию

Так?
Код:
#include <stdio.h>

int f(void);

int main(void)
{
    printf("%d\n", f());
    return 0;
}

int f(void)
{
    int a = 10, b = 35;
    return a + b;
}
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Решить задачу с использованием функций. Ввод-вывод значений массивов осуществить с помощью функций. Владимир20178 Помощь студентам 2 29.06.2017 05:05
Типы значений и ссылочные типы вопросы по примеру Doverie C# (си шарп) 3 28.04.2017 22:04
типы функций маГГ85 JavaScript, Ajax 2 20.02.2012 14:03
Типы аргументов при перегрузке функций Arkuz Общие вопросы C/C++ 4 24.02.2009 01:16