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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.11.2008, 04:55   #1
Xeon332
Скоро сессия...
Форумчанин
 
Регистрация: 03.01.2008
Сообщений: 224
По умолчанию C++ под DOS. Функции

Подскажите как правильно работать с функциями в Си, плиз!
Задание:

Используя операторы циклов, организовать необходимый поиск и вычисления. Дано натуральное число n. Вычислить 1! + 2! + … + n!.

Код:
#include<stdio.h>
unsigned char  i,n;
long s;

fact (unsigned char J, long p=1);
  p=1;
  for j:=1 to x do
    p:=p*j;
    fact=p;

{
  clrscr();
  puts("Vvedite chislo");
  scanf("%u",n);
    s=0;
    for i:=1 to n do
      s=s+fact(i);
    printf("Rezultat=%u",s);
getch();
}
по аналогии с Pascal не сработалл... хотя синтаксис вроде правильный.
Xeon332 вне форума Ответить с цитированием
Старый 21.11.2008, 06:08   #2
Ivan_32
somewhere else
Участник клуба
 
Аватар для Ivan_32
 
Регистрация: 17.07.2008
Сообщений: 1,409
По умолчанию

Код:
#include "stdio.h"
int fact(int number)
{
  int temp=1;
  for(int i=number;i>0;i--)
  {
     temp=i*temp
  }
  return temp
}

int main()
{
  clrscr();
  int n,result;
  prinft("Enter number");
  scanf("%i",n);
  for(int i=0;i<n;i++)
  {
    result+=fact(i);
  }
}
Как бы это поделикатней выразится...код у тебя неправильный "немного".
Есть множество хороших книг по С, самая лучшая из них это "Язык программирования С" за авторством Б.Кернигана и Д.Ритчи.
"Тяжело в учении, легко в бою" - А.В. Суворов

Последний раз редактировалось Ivan_32; 21.11.2008 в 06:18.
Ivan_32 вне форума Ответить с цитированием
Старый 21.11.2008, 11:13   #3
StarWorm
Форумчанин
 
Регистрация: 17.11.2008
Сообщений: 233
Счастье

А с рекурсией пойдет, или нельзя???
StarWorm вне форума Ответить с цитированием
Старый 21.11.2008, 12:33   #4
Ламер_001
Ну и что? :)
Форумчанин
 
Регистрация: 20.10.2008
Сообщений: 129
По умолчанию

какая рекурсия? помилуйте, один цикл всего то)))

Код:
#include <stdio.h>
#include <conio.h>

int main()
{
 int p, i, n, s;
 scanf("%d", &n);
 p = 1;
 s = 0;
 for(i = 1; i <= n; i++)
 {
  p *= i;
  s += p;
 }
 printf("%d", s);
 getch();
 return 0;
}
Учиться, учиться и еще раз учиться
Ламер_001 вне форума Ответить с цитированием
Старый 21.11.2008, 13:01   #5
StarWorm
Форумчанин
 
Регистрация: 17.11.2008
Сообщений: 233
Вопрос

Хех... Это ты хорошо придумал!!! Но если чуток условие поменять, то твой алгоритм потерпит крах!!!
StarWorm вне форума Ответить с цитированием
Старый 21.11.2008, 14:02   #6
Ламер_001
Ну и что? :)
Форумчанин
 
Регистрация: 20.10.2008
Сообщений: 129
По умолчанию

и когда же он не сработает?
Учиться, учиться и еще раз учиться
Ламер_001 вне форума Ответить с цитированием
Старый 21.11.2008, 14:43   #7
StarWorm
Форумчанин
 
Регистрация: 17.11.2008
Сообщений: 233
Подмигивание

Цитата:
Сообщение от Ламер_001 Посмотреть сообщение
и когда же он не сработает?
Ну например: 1!+3!+5!+...+n!
Конечно ты скажешь
Код:
 for(i = 1; i <= n; i++)
 {
  p *= i;
  if(i%2!=0)
  {
    s += p;
  }
 }


Но я тебе просто пример привел ))
StarWorm вне форума Ответить с цитированием
Старый 21.11.2008, 15:19   #8
Ламер_001
Ну и что? :)
Форумчанин
 
Регистрация: 20.10.2008
Сообщений: 129
По умолчанию

ну да можно конечно извращаться очень долго с условием но заковырка тут еще в том какое максимальное n влезет в int. ведь факториал растет очень быстро, поэтому автору бы лучше поинтересоваться сначала у препода и соответственно подобрать тип.
Учиться, учиться и еще раз учиться
Ламер_001 вне форума Ответить с цитированием
Старый 21.11.2008, 16:25   #9
Xeon332
Скоро сессия...
Форумчанин
 
Регистрация: 03.01.2008
Сообщений: 224
По умолчанию

а в какой тогда тип влезет n!? целочисленный long?
Xeon332 вне форума Ответить с цитированием
Старый 21.11.2008, 19:09   #10
Ламер_001
Ну и что? :)
Форумчанин
 
Регистрация: 20.10.2008
Сообщений: 129
По умолчанию

ну может лонг, а может и unsigned __int64 не хватит)) зависит от степени извращения ума преподавателя
Учиться, учиться и еще раз учиться
Ламер_001 вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с графикой на ассемблере под DOS AsmBeginer Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 31 11.12.2015 23:19
borland C++под DOS Xeon332 Помощь студентам 9 20.09.2008 20:50
DOS. .*bat файлы. их функции Xeon332 Помощь студентам 2 08.05.2008 14:46
Проблемы с русским шрифтом в TurboC++ 3.0 под DOS Project Общие вопросы C/C++ 1 27.03.2008 17:41