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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.12.2008, 14:21   #1
Xeon332
Скоро сессия...
Форумчанин
 
Регистрация: 03.01.2008
Сообщений: 224
По умолчанию Функция fact в С++ for DOS 3.1

Задание воообщем такое:
Дано натуральное число n. Вычислить 1! + 2! + … + n!.

а код:
Код:
#include<stdio.h>
#include<conio.h>
void fact(unsigned char j, long p, unsigned char x)
{
clrscr();
p=1;
for (j=1) to x
 p=p*j;
 fact=p;
}
void main(void)
{
n,i:unsigned char, s:long;
clrscr();
puts("Vvedite chislo");
scanf("%u",&n);
s=0;
for i=1 to n
 s=s+fact(i);
 printf("Factorial=%O",s);
getch();
}
делал всё по образцам.. но прога не компилируется... ошибки непонятны.
(parametr 'x,j,p' is never used; undefined simbol 'n,i,s' )/ Они ж вроде как инициализированы... помогите исправить ошибки...
Xeon332 вне форума Ответить с цитированием
Старый 12.12.2008, 08:40   #2
Ламер_001
Ну и что? :)
Форумчанин
 
Регистрация: 20.10.2008
Сообщений: 129
По умолчанию

паскалист?
1) объявление не верное для си
2) передаешь в функцию 1 параметр когда ей необходимо 3.

вот в общем. сравнивай и делай выводы
Код:
#include<stdio.h>
#include<conio.h>

long fact(unsigned char j)
{
 long p = 1, i;
 for (i = 1; i <= j; i++)
  p = p*j;
 return p;
};

void main(void)
{
 unsigned char n, i;
 long s;
 clrscr();
 puts("Vvedite chislo:");
 scanf("%u",&n);
 s=0;
 for (i=1; i <= n; i++)
  s = s + fact(i);
 printf("Factorial = %d\n",s);
 getch();
}
Учиться, учиться и еще раз учиться

Последний раз редактировалось Ламер_001; 12.12.2008 в 08:44.
Ламер_001 вне форума Ответить с цитированием
Старый 12.12.2008, 08:48   #3
ROD
Linux C++ Qt ARM
Старожил
 
Аватар для ROD
 
Регистрация: 30.11.2008
Сообщений: 3,030
По умолчанию

Ты передаеш функции
Код:
 s=s+fact(i);
А что она от тебя ждет?
Код:
void fact(unsigned char j, long p, unsigned char x)
тоесть она получила только переменную i, ожидаемый тип которой unsigned char.

Кроме того, в С++ конструкция
Код:
for (j=1) to x
 p=p*j;
 fact=p;
}
будет выполняться вечно. или (скоре всего так и поступит) выдаст ошику по поводу непонятной инструкции "to x" (это не бэйсик)и не правильного написания содержимого скобочек (правильно как у меня в подписе, это бесконечный цикл).
Структура цикла for

for(начальное значение параметра; условие выполнения цикла; изменение параметра)
{инструкции}

Например:
for(i =0; i<10; i++)
{cout<<i<<endl;}

Данный цикл задает переменной i значение 0. Он будет повторяться до тех пор, пока i меньше 10, и после каждого выполнения цикла он будет приплюсовывать к i единицу.

( i++ равносильно i=i+1; аналогично i-- равносильно i=i-1;
а так же
i*=n равносильно i=i*n
i/=n равносильно i=i/n
i+=n равносильно i=i+n
i-=n равносильно i=i-n)

И еще, вроде бы нельзя задавать перменные так:
Код:
n,i:unsigned char, s:long;
Это задается так
Код:
unsigned char n,i;
long s;
моэжно сразу же задать им значения
Код:
unsigned char n,i;
long s=55;
и еще char это символьный масив. т.е. ему надо задать длинну ( n[100]
если тебе надо задать в масив элементы разом, то это делается так:
n[100]={1, 12, 442, 123, ... } если масив числовой
n[100]={"bukafki"} если массив символьный
Дилетант широкого профиля.

"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс
ROD вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Прерывания DOS odi_noki Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 26 14.11.2008 13:51
ms dos Dimmy Помощь студентам 2 19.10.2008 09:12
одна функция потока, а другая функция - член класса запускающего этот поток Дмитрий_Ч Общие вопросы C/C++ 2 27.09.2007 08:50