самостоятельно разбираюсь в с++, вот, не могу найти, в чем ошибка..

Тема в разделе "Общие вопросы по С и С++", создана пользователем checkmate, 10 авг 2010.

  1. checkmate

    checkmate Гость

    Составить функцию, определяющую, является ли ее целый аргумент простым числом. Использовать эту функцию для подсчета количества простых чисел в последовательности из десяти целых чисел, вводимых с клавиатуры


    Код (C++):
    #include <iostream.h>
    int chislo(int );
    void main()
    {

    int n=0, a, i, b;

    for(i=0; i<10; i++)
    {
    cout<<"\nVvedite celoe chislo: ";
    cin>>a;

    b=chislo(a);
    if (b=1)
    { n++; }

    }

    cout<<"\nProstix chisel "<<n;


    }

    int chislo(int x)
    {
    int f, k, p=0;

    for(k=x-1; k>1;)
    {
    f=x%k;
    if(f=0)
    {
    p++;
    }
    else
    {
    k--;
    }
    }
    if(p=0)
    {
    return 0;
    }
    else
    {
    return 1;
    }
    }
    З.Ы.: еще один вопрос - какая функция не дает закрываться компилятору при выполнении программы? Просто только начинаю осваиваться =)
     
  2. bini1988

    bini1988 Гость

    Не буду разбираться в алгоритме (при желании можно найти готовое решение), скажу лишь что = - оператор присвоения, == - проверка на равенство, а так вродь верно, чтобы завершить прогамму по нажатию клавиши вставь в конец текста вызов функции getchar();
     
  3. morfius

    morfius Гость

    Алгоритм корректный но не оптимальный (про ошибки в операторах if уже было сказано выше).
    по моему такой вариант алгоритма:
    Код (C++):
    bool is_simple(unsigned x)
    {
    if (x == 2 || x == 3)
    return true;

    for (unsigned i = 2; i <= (x /2 + 1); i++)
    {
    if (x % i ==0)
    return false;
    }
    return true;
    }
    проще читается и несколько эффективнее.
     
  4. checkmate

    checkmate Гость

    bini1988, morfius,

    Огромное спасибо за ответ на вопрос)))) Учту на будущее замечания) :facepalm:

    З.Ы.: Работаю с одним сайтом, вот и пока дальше функций не дошел, ток за массивы сел, так что пока программы максимально громоздкие =*(
     
  5. goldenCode

    goldenCode Гость

    скажите, а это будет работать под линуксом? я собираю с помощью gcc он выдает ошибки: 'bool' : undeclared identifier
    помогите разобраться
     
  6. Гость

    Можно попробовать мой вариант функции
    Код (C++):
    int prv(int n)
    {
    int d,s;
    s=false;
    for (d=2; (d<=n/2)&&(!(s)); d++)
    if (n%d==0)
    s=true;
    if (s)
    return 0;
    else return 1;
    }
    перед всем кодом поставить
    Код (C++):
    #define true 1
    #define false 0
    Не уверен что правильно работает, я тоже начинающий. На нескольких числах проверил. Код сам написал.

    ** теперь уверен. Только об единичке сами позаботьтесь, функция её считает простым числом. Для вызова напишите prv(<число или переменная типа int>). Функция возвращает 0 если число простон и 1, если составное. Пример использования:
    Код (C++):
    if (prv(7)) printf("Число простое");
    Должно вывести "Число простое", а если написать
    Код (C++):
    iif (prv(6)) printf("Число простое");
    То ничего не выведется.
    Пример фрагмента кода, который с помощью этой функции вычисляет простые числа от 1 до 200:
    int i;
    Код (C++):
    for (i=2; i<=200; i++)
    if (prv(i)) printf("%d ",i);
    printf("\n");
     
  7. etc

    etc Гость

    Попробовать конечно можно, но не нужно, вредно и опасно.
     
  8. Гость

    я поппробовал, работает. Тут ничего опасного нет, мы же не с системными файлами работаем. Я изложил функцию, которую максимально гибко можно использовать в программе.
     
  9. Гость

    эх, думал первым подскажу, а тут уж успели
     
Загрузка...
Похожие Темы - самостоятельно разбираюсь с++
  1. Mikle77
    Ответов:
    16
    Просмотров:
    4.440
  2. flexoid
    Ответов:
    3
    Просмотров:
    2.430

Поделиться этой страницей