Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Не могу правильно написать функцию  (Прочитано 5681 раз)
0 Пользователей и 2 Гостей смотрят эту тему.
mv-medved
Новенький

ua
Offline Offline

« : 16-02-2013 17:04 » new

Программка должна считать факториал произведения двух чисел.
Но выдает 2 ошибки - a и b - undeclared inditifier (строка 14)
Помогите определить ошибку!
Код:
#include <stdio.h>

#include <locale.h>

int main()
{
int x,i,k,p,a,b;

setlocale (LC_ALL,"RUS");
printf("Введите k и p: ");
scanf("%d%d", &a, &b);

int factor(int a, int b);
{
int c,fact;
c=a*b;
for(int i=1; i<=c; i++)
fact*=i;
return fact;
}
x=factor(a,b);
printf ("%d",x);

return 0;
}

Добавлено через 2 минуты и 10 секунд:
не тот код вставил, не пойму как изменить сообщение поэтому вот тот который таки не работает:
Код:
#include <stdio.h>
#include <locale.h>

int main()
{
int x,k,p;
setlocale (LC_ALL,"RUS");
printf("Введите k и p: ");
scanf("%d%d", &k, &p);

int factor(int a, int b);
{
int c,fact;
c=a*b;
for(int i=1; i<=c; i++)
fact*=i;
return fact;
}
x=factor(k,p);
printf ("%d",x);

return 0;
}
« Последнее редактирование: 16-02-2013 17:06 от mv-medved » Записан
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #1 : 16-02-2013 17:34 » 

mv-medved, нельзя описывать функции внутри других функций.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #2 : 16-02-2013 17:58 » 

Наследство паскаля, правда там этот вопрос тоже регулируется.
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #3 : 17-02-2013 09:10 » 

нельзя, но если сильно хочется, то можно



Код:
int main()
{
int x,k,p;
setlocale (LC_ALL,"RUS");
printf("Введите k и p: ");
scanf("%d%d", &k, &p);

struct fac
{
static int tor(int a, int b)
{
int c,fact;
c=a*b;
for(int i=1; i<=c; i++)
fact*=i;
return fact;
}
};

x=fac::tor(k,p);
printf ("%d",x);

return 0;
}
Записан

Dale
Блюзмен
Команда клуба

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #4 : 17-02-2013 18:33 » 

GCC C допускает описание локальных функций внутри других функций (наподобие упомянутого Pascal'я), но это расширение не соответствует стандарту, поэтому нужно применять его с осторожностью (хотя, конечно, весьма заманчиво).
Записан

Всего лишь неделя кодирования с последующей неделей отладки могут сэкономить целый час, потраченный на планирование программы. - Дж. Коплин.

Ходить по воде и разрабатывать программное обеспечение по спецификациям очень просто, когда и то, и другое заморожено. - Edward V. Berard

Любые проблемы в информатике решаются добавлением еще одного уровня косвенности – кроме, разумеется, проблемы переизбытка уровней косвенности. — Дэвид Уилер.
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines