Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

Ответ
 
Опции темы
Старый 31.01.2017, 21:13   #1
наталья776
Пользователь
 
Регистрация: 31.01.2017
Сообщений: 12
Репутация: 10
По умолчанию как передать функцию. Си

Код:

#include <locale.h>
#include <stdio.h>
#include <malloc.h>
#include <conio.h>
#include <process.h>
 
int maxElementsinMassive (int*a, int*b, int n, int m)
{
    int max=*a, nmax=0;
    int max1=*b, mmax=0;
 
    return max, max1, nmax, mmax;
}
 
int main()
{
    int *a, *b, n, m;
    setlocale(LC_CTYPE,"Russian");
    system("cls");
    printf("Введите размер массивов:\n");
    scanf("%d", &n);
    a = (int*) malloc(n*sizeof(int));
    b = (int*) malloc(n*sizeof(int));
    for(int i=0; i<n; i++) // Ввод элементов массива a
    {
        printf("a[%d] = ", i);
        scanf("%d", (a+i));
    }
    for(int i=0; i<n; i++) // Ввод элементов массива b
    {
        printf("b[%d] = ", i);
        scanf("%d", (b+i));
    }
 
    maxElementsinMassive(a, b, n, m);
    free(a);
    free(b);
    getchar();
    getchar();
    return 0;
}


Последний раз редактировалось Вадим Мошев; 31.01.2017 в 21:58.
наталья776 вне форума   Ответить с цитированием
Старый 31.01.2017, 21:34   #2
p51x
Профессионал
 
Регистрация: 15.02.2010
Сообщений: 11,707
Репутация: 1932

icq: 216409213
По умолчанию

Куда ее передавать?
__________________
Запомните раз и навсегда: помочь != "решите за меня"!
p51x вне форума   Ответить с цитированием
Старый 31.01.2017, 22:01   #3
Вадим Мошев
гигаМодератор :)
Заслуженный модератор
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Адрес: Адрес: Адрес: Адрес: Адрес: Адрес: Адрес: Адрес: Адрес:
Сообщений: 7,510
Репутация: 3678
По умолчанию

Насколько я знаю, функция передаётся в подпрограмму в виде адреса имени этой функции.
То есть,
Код:

int myFun(int x, int &f) { return f(x) };

Вадим Мошев на форуме   Ответить с цитированием
Старый 31.01.2017, 22:08   #4
наталья776
Пользователь
 
Регистрация: 31.01.2017
Сообщений: 12
Репутация: 10
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Куда ее передавать?
maxelement передать в main
наталья776 вне форума   Ответить с цитированием
Старый 31.01.2017, 22:15   #5
ura_111
Профессионал
 
Регистрация: 14.05.2016
Сообщений: 1,793
Репутация: 354
По умолчанию

1) У тебя "m" объявлен, но непонятно чему равен.
2) нельзя возвращать 2 и более значения с функции (только одно: return 0; )
3) Как я понял задание, тебе надо было так (обрати внимание на ссылки "int &n_max" и "int &м_max"):

Код:

#include <locale.h>
#include <stdio.h>
#include <malloc.h>
#include <conio.h>
#include <process.h>

int maxElementsinMassive(int*a, int*b, int n, int m, int &n_max, int &m_max)
{
	int max;

	n_max=0;
	max = a[0];
	for (int i = 0; i < n; i++) 
	{
		if (max < a[i])
		{
			max = a[i];
			n_max = i;
		}
	}
	m_max = 0;
	max = b[0];
	for (int i = 0; i < m; i++)
	{
		if (max < b[i])
		{
			max = b[i];
			m_max = i;
		}
	}
	return 0;
}

int main()
{
	int *a, *b, n, m;
	setlocale(LC_CTYPE, "Russian");
	system("cls");

	printf("Введите размер массивов A: ");
	scanf("%d", &n);
	printf("Введите размер массивов B: ");
	scanf("%d", &m);
	printf("\n");

	a = (int*)malloc(n*sizeof(int));
	b = (int*)malloc(m*sizeof(int));

	for (int i = 0; i < n; i++) // Ввод элементов массива a
	{
		printf("a[%d] = ", i + 1);
		scanf("%d", (a + i));
	}
	printf("\n");
	for (int i = 0; i < m; i++) // Ввод элементов массива b
	{
		printf("b[%d] = ", i + 1);
		scanf("%d", (b + i));
	}
	printf("\n");

	int n_max;
	int m_max;
	if (maxElementsinMassive(a, b, n, m, n_max, m_max) == 0)
	{
		printf("max  А[%d]= %d\n", n_max + 1, a[n_max]);
		printf("max  В[%d]= %d\n", m_max + 1, b[m_max]);
	}
	else
		printf("Ошибка в maxElementsinMassive");
	
	free(a);
	free(b);
	getchar();
	getchar();
	return 0;
}


Последний раз редактировалось ura_111; 31.01.2017 в 22:18.
ura_111 вне форума   Ответить с цитированием
Старый 31.01.2017, 22:22   #6
Alex11223
Модератор
Заслуженный модератор
 
Регистрация: 12.01.2011
Сообщений: 16,467
Репутация: 3242

icq: 512-765
skype: alexp.frl
По умолчанию

Цитата:
Сообщение от Вадим Мошев Посмотреть сообщение
адреса имени
адреса чего?


Параметр должен быть в таком виде:
Код:

void (*f)(int)

(для функции void ...(int) )

а передавать да, просто
Код:

myFunc(someFunc);

Alex11223 вне форума   Ответить с цитированием
Старый 31.01.2017, 22:27   #7
Вадим Мошев
гигаМодератор :)
Заслуженный модератор
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Адрес: Адрес: Адрес: Адрес: Адрес: Адрес: Адрес: Адрес: Адрес:
Сообщений: 7,510
Репутация: 3678
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
адреса чего?
Имел в виду, что в списке формальных параметров указывается имя передаваемой функции, а перед ним ставится знак амперсанда, что говорит о том, что мы передаём ссылку (она же адрес?) на эту функцию. Но всё это уже неважно, так как я написал ерунду. Запамятовал, да и C/C++ я очень плохо знаю.
Вадим Мошев на форуме   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Язык C]: Как передать массив в функцию? NaZah Помощь студентам 2 19.12.2016 19:34
Как в функцию передать часть диапазона? Stem79 Microsoft Office Excel 4 06.02.2013 18:40
Как передать Динамический массив в функцию? RainCat Помощь студентам 4 13.04.2011 11:25
Как передать указатель на функцию в функцию WIN32APIist Общие вопросы C/C++ 1 27.01.2011 11:35
Как передать объект в функцию? BadProgrammer Общие вопросы C/C++ 4 06.11.2010 12:39


03:23.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru