Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   вопрос СИонистам :) (http://forum.oszone.net/showthread.php?t=29814)

modem 17-04-2004 23:26 205915

Только вот начал изучать язык Си в универе  и вот у меня лабораторная работа одна не получается, вот задание:
Натуральные числа A1,А2, ... , Аn вводятся с клавиатуры. Признак конца ввода - нажатие комбинации клавиш ctrl+z.
Определить количество членов Ак последовательности А1 ... Аn, удовлетворяющие условию 2к < Ак < к! (факториал) , вот я, кое что написал, только вот при компиляции кучу ошибок выдаёт.
Цитата:

#include <stdio.h>
#include <math.h>
main()
{
      int n;        /* кол-во чисел */
      int a;        /* очередное число */
      int k;        /* порядковый номер числа в последовательности */
      printf("\n введите числовую последователность \n");
      while(scanf("%d",&a)!=-1)
      {for (k=1; k<=n; k++)
       {abs(a) > 2^k;
        abs(a) < к*fakt(к-1);
        }
      }
      printf("количество чисел=%d\n",n)

    }
    int fakt(int к)  
        {
        return ( (к==1) ? 1 : к*fakt(к-1)  );
        }
хелп новичку.............. зарание благодарен. :)

bilytur 18-04-2004 03:47 205916

Код:

#include <stdio.h>
main()
{
 *int n = 0; * */* кол-во чисел */
 *int a; * * * */* очередное число */
 *int k = 0; * */* порядковый номер числа в последовательности */
 *int f = 1; * */* Факториал считаем на ходу так быстрее */

 *printf("\n введите числовую последователность \n");
 *while(scanf("%d",&a)!=EOF)
 *{
 * * *f *= ++k;
 * * *if((a > 2*k) && (a < f))
 * * *{
 * * * * *n++;
 * * *}
 *}

 *printf("Всего чисел удовлетворяющие условию - %d\n", n);
}

У тебя путаница. В условиях ты пишешь:
Цитата:

удовлетворяющие условию 2к < Ак < к!
А в проге
Цитата:

abs(a) > 2^k;
Если запись 2^k имелось ввиду степень то вместо 2*k пиши (2<<k)


[s]Исправлено: bilytur, 4:16 18-04-2004[/s]

bgg0408 18-04-2004 13:29 205917

Цитата:

main()
ТАК НЕ пишут!
Пишем так:
Цитата:

void main(void)
или
Цитата:

int main (void)
Это была первая ошибка.
Вторая: Вы используете функцию int fakt(int к) до ее определения в файле. Выход:
написать  
Цитата:

int fakt(int к);
за строчку ДО main'а

Добавлено:

Кстати,
Цитата:

abs(a) > 2^k;
лишено смысла. Если хотите сделать программу, делающую то что нужно, используйте if


Время: 18:56.

Время: 18:56.
© OSzone.net 2001-