Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
0 / 0 / 1
Регистрация: 27.03.2008
Сообщений: 75

Помогите найти ошибки, пожалуйста

19.08.2008, 11:39. Показов 2035. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
почему код выдает ошибки?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <stdio.h>
#define N 20000
//алгоритм "решето Эвклида"
unsigned int a[N];
void main(){
   //заполним все ячейки числами по порядку: 0,1,2,3...
   for(int i=0; i<N; i++){
       a[i] = i;
   }
   //поскольку 1 не простое число, обнулим ячейку с этим числом
   a[1]=0;
   for(int s=2; s<N; s++){
       if(a[s]!=0){
       for(int j=s*2; j<N; j+=s){
           a[j]=0;
       }
       }
   }
   for(i=0; i<N; i++){
       if(a[i]!=0){
       printf("%d\n", a[i]);
       }
   }
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.08.2008, 11:39
Ответы с готовыми решениями:

Помогите мне пожалуйста найти ошибки в алгоритме
Здравствуйте, я новичок в сфере программирования, помогите мне пожалуйста найти ошибки в алгоритме: #include &lt;math.h&gt; #include...

Помогите, пожалуйста, исправить ошибки в коде
const int n=20; int b; int i,j,c; for (i=1;i&gt;n,i++) { c=a; for(j=i-1;j&gt;=0&amp;&amp;a&gt;c;j--) a=a; a=c; }

Помогите найти ошибки
Добрый день! Подскажите, в чем здесь ошибка? (прикрепляю скрин)

18
 Аватар для ABTOP
36 / 36 / 4
Регистрация: 09.06.2008
Сообщений: 324
19.08.2008, 11:52
А что у тебя за компилятор? потому что у меня всё нормально работает...
0
7 / 7 / 0
Регистрация: 07.08.2008
Сообщений: 22
19.08.2008, 11:53
Если пишешь на C то должен объявлять все локальные переменные в начале функции. В принципе все.
0
0 / 0 / 1
Регистрация: 27.03.2008
Сообщений: 75
19.08.2008, 11:58  [ТС]
ой, простите за беспокойство, это с компилятором что-то неладное творилось

Добавлено через 1 минуту 49 секунд
urkovsky, Спасибо, так оно и надо было сделать, но все равно 3 ошибки выдавало, компилятор глючил
0
2838 / 1647 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
19.08.2008, 12:59
Code
1
//алгоритм "решето Эвклида"
А не Эратосфена?
0
0 / 0 / 1
Регистрация: 27.03.2008
Сообщений: 75
19.08.2008, 14:46  [ТС]
и так и так называют

Добавлено через 11 минут 23 секунды
А подскажите, как полученные этим кодом:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <stdio.h>
#define N 256
//алгоритм "решето Эвклида"
 
int main(){
 
    unsigned int a[256];
    int i, s, j;
   //заполним все ячейки числами по порядку: 0,1,2,3...
   for( i=0; i<N; i++){
       a[i] = i;
   }
   //поскольку 1 не простое число, обнулим ячейку с этим числом
   a[1]=0;
   
   for (s=2; s<N; s++){
       if(a[s]!=0){
       for(j=s*2; j<N; j+=s){
           a[j]=0;
       }
       }
   }
   for(i=0; i<N; i++){
       if(a[i]!=0){
       printf("%d\n", a[i]);
       }
   }
 
}
простые числа - т.е. последовательость a[i], передать в цикл....

Пробую так дописать - фигня получается:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
   for(i=0; i<N; i++){
       if(a[i]!=0 && n % a[i]==0){
       return 0;
       }
       return 1;
   }
  
       
}
 
main() 
 
{
      int n=0;
        printf( "Enter any number -> \n");
        scanf("%u", &n);
        printf("%s\n",
            (
                delimost (n) ?
                "It is possibly a prime number" :
                "It is composite number"
            )
        );
    return 0;
 
}

а нужно, чтобы цикл брал все ненулевые a[i] по порядку и делил n на каждое из них, и если все остатки не равны нулю - то выводил бы - It is possibly a prime number
0
10 / 10 / 2
Регистрация: 18.08.2008
Сообщений: 127
19.08.2008, 20:53
Code
1
int n=0;
У тебя это число целое а должно быть с float . целые делятся без остатка.
машина отсекает.
0
0 / 0 / 0
Регистрация: 20.08.2008
Сообщений: 8
20.08.2008, 00:20
Ошибка тут
C++
1
2
3
4
5
6
7
 for (s=2; s<N; s++){
       if(a[s]!=0){
       for(j=s*2; j<N; j+=s){
           a[j]=0;
       }
       }
   }
у тебя тут явный выход за пределы масива
попробуй лучше так
C++
1
2
3
4
5
6
7
8
 for (s=2; s<N; s++){
       if(a[s]!=0){
       for(j=s*2; j<N;j=j){
           a[j]=0;
            j+=s;
       }
       }
   }
0
0 / 0 / 1
Регистрация: 27.03.2008
Сообщений: 75
20.08.2008, 12:04  [ТС]
qwone - с типом float
error C2296: '%' : illegal, left operand has type 'float'

Добавлено через 1 час 29 минут 6 секунд
Chaos_Optima - тоже не помогло...может здесь в логике ошибка? Помогите разобраться, пожалуйста!!!
0
0 / 0 / 0
Регистрация: 20.08.2008
Сообщений: 8
20.08.2008, 13:25
Вот такой код у меня работает без проблем
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
#define N 20
unsigned int a[N];
 
void main(){
    int i;
    for(i=0; i<N; i++,a[i]=i);
    a[1]=0;
    for(int s=2; s<N; s++)
        if(a[s]!=0)for(int j=s*2; j<N; j+=s,a[j]=0);
    for(i=0; i<N; i++)
        if(a[i]!=0)printf("%d\n", a[i]);
    scanf("%i",&i);
}
Добавлено через 6 минут 55 секунд

у тебя проблема в верхнем цыкле он на первом уже выходит из тела функции
0
0 / 0 / 1
Регистрация: 27.03.2008
Сообщений: 75
20.08.2008, 13:31  [ТС]
вот вопрос в том, как организовать цикл, чтобы он брал все ненулевые a[i] по порядку (т.е. все простые числа) и делил n на каждое из них, и если все остатки не равны нулю - то выводил бы - It is possibly a prime number, или, что то же самое - если хотя бы один остаток равен нулю - то It is composite number.

Я сделала так, правильно?:


C++
1
2
3
4
5
6
7
8
 for(i=0; i<N; i++){
 
        if(a[i]!=0 && a[i]!=n && n % a[i]==0)
        
        {
            //printf("%d\n", a[i]);
            return 0;
        }
0
0 / 0 / 0
Регистрация: 20.08.2008
Сообщений: 8
20.08.2008, 13:34
Вот полностью рабочий код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <stdio.h>
#define N 20
unsigned int a[N];
 
bool  delimost(int n)
{
    int i;
    for(i=0; i<N; i++)
        if(a[i]!=0)
            if((n % a[i])==0)
                return false;
    return true;
}
 
void main(){
    int i;
    for(i=0; i<N; i++,a[i]=i);
    a[1]=0;
    for(int s=2; s<N; s++)
        if(a[s]!=0)for(int j=s*2; j<N; j+=s,a[j]=0);
    for(i=0; i<N; i++)
        if(a[i]!=0)printf("%d\n", a[i]);
    printf( "Enter any number -> \n");
    scanf("%i", &i);
    printf("%s\n",delimost(i)?
                "It is possibly a prime number" :
                "It is composite number");
    scanf("%i", &i);
}
0
0 / 0 / 1
Регистрация: 27.03.2008
Сообщений: 75
20.08.2008, 14:21  [ТС]
Спасибо!!! А мой цикл неверен?
0
0 / 0 / 0
Регистрация: 20.08.2008
Сообщений: 8
20.08.2008, 14:28
да неверен дело в том что return выкидывает тебя из тела функции и по твоему коду видно что он тебя выкинет при первомже успешном выполнении функции такчто скорее всего функция тебе буде всегда возвращать 0 (я рассматриваю последний код который ты оставил)
0
0 / 0 / 1
Регистрация: 27.03.2008
Сообщений: 75
20.08.2008, 14:31  [ТС]
так если функция выполнилась успешно - т.е. остаток от деления равен нулю - так меня и должно выкинуть - ибо число уже явно составное...

P.S.: Я девушка
0
0 / 0 / 0
Регистрация: 20.08.2008
Сообщений: 8
20.08.2008, 14:37
Зая у тебя там лишнее условие a[i]!=n
0
0 / 0 / 1
Регистрация: 27.03.2008
Сообщений: 75
20.08.2008, 14:44  [ТС]
почему? ведь если я ввожу для проверки число 11 - а оно простое и на него будет происходить деление, которое даст остаток 0 - и ответ выдаст - составное, а это не так...
0
0 / 0 / 0
Регистрация: 20.08.2008
Сообщений: 8
20.08.2008, 14:51
А ну если проверять ещё на сами просты то да всё верно кстати у тебя помоему ошибка в алгоритме одно из чисел которое он мне выдаёт 4 а это не простое число
0
0 / 0 / 1
Регистрация: 27.03.2008
Сообщений: 75
20.08.2008, 16:08  [ТС]
Ясно, исправлю

Спасибо всем за помощь!
Тему можно закрыть
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
20.08.2008, 16:08
Помогаю со студенческими работами здесь

Помогите, пожалуйста найти ошибку
Uvx и Uvix считает правильно, а вот с t, какие-то проблемы))) вообще по нулям не понимаю почему. За ранее спасибо! Вот программа: ...

Помогите найти ошибки. С++. ООП
Собственно Задание: 1. В соответствии с вариантом заданий 1 создать класс, в котором определяются закрытые свойства и открытые методы...

Помогите найти ошибки.срочно
срочно потому что уже надо высылать прогу. Задача: записать прогу с функцией,которая решает уравнение второго степени.(количество и само...

Помогите найти ошибки в программе.
Не могу понять в чем тут ошибка. #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;locale&gt; #include &lt;clocale&gt; #include...

Помогите найти ошибки в программе
я пока новичок, написал программу а она не компилируется, подскажите где здесь есть ошибки (подозреваю что их очень много:)) ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
19
Закрытая тема Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru