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

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

Наш партнер Genesis Hackspace
  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.545
  2. flexoid
    Ответов:
    3
    Просмотров:
    2.466

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