Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
deepz
61 / 61 / 33
Регистрация: 04.10.2013
Сообщений: 250
#1

Проверьте пожалуйста, что не так? - C++

08.12.2013, 19:04. Просмотров 267. Ответов 3
Метки нет (Все метки)

условие задачи: написать и протестировать функцию, которая находит сумму всех цифр введенного целого числа, если оно является простым и произведение цифр в обратном случае.


Так вот когда я делаю функцию, почему-то не правильно определяется число (простое оно или нет)

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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include <stdio.h> 
#include <conio.h>
int fun(int n)
{int d=2, r, sum=0, pr=1;  // r - остаток от деления d-делитель
while (r!=0)
    {   
        r=n%d;
        if (r!=0)
        d++;
    }
        
                if (d == n)
                     {
                              printf("%d - Prostoe\n" ,n);
                        {
                         while (n)
                            {
                                sum=sum+n%10;
                                n=n/10;
                            }
                        }
                        printf("sum=%d", sum);
                    }
                else 
                     {
                        printf("%d - Ne prostoe\n" ,n);
                            {
                             while (n>0)
                                {
                                     pr*=n%10;
                                    n=n/10;
                                 }
                             }
    printf("pr=%d", pr);
 
                    }
 
}
int main()
{
int n;
puts("Bawe chislo");
scanf("%d", &n);
fun(n);
}
А если я делаю просто в main то все правильно работает. Почему так?
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
30
31
32
33
34
35
36
37
38
39
#include <stdio.h> 
#include <conio.h>
int main()
{
int d=2, n, r, sum=0, pr=1;  // r - остаток от деления d-делитель
puts("Bawe chislo");
scanf("%d", &n);
    while (r!=0)
    {   
        r=n%d;
        if (r!=0)
        d++;
    }
                if (d == n)
                     {
                              printf("%d - Prostoe\n" ,n);
                        {
                         while (n)
                            {
                                sum=sum+n%10;
                                n=n/10;
                            }
                        }
                        printf("sum=%d", sum);
                    }
                else 
                     {
                        printf("%d - Ne prostoe\n" ,n);
                            {
                             while (n>0)
                                {
                                     pr*=n%10;
                                    n=n/10;
                                 }
                             }
    printf("pr=%d", pr);
 
                    }
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.12.2013, 19:04     Проверьте пожалуйста, что не так?
Посмотрите здесь:

проверьте что не так - C++
Известно фамилии 12 человек, их семейное положение (женат / замужем) и наличие детей (есть / нет). Определить фамилии женатых, не имеющие...

проверьте что не так в коде? - C++
#include &lt;stdlib.h&gt; #include &lt;stdio.h&gt; #include &lt;time.h&gt; int main() { int i,j,n=9; int a; srand(time(NULL)); ...

Проверьте программу на ошибку, не могу понять что не так - C++
#include &lt;iostream.h&gt; main() { int a, i, j, t; for(i = 0; i &lt;=10; i++) for(j = 0; i &lt;=10; i++) {if j&lt;=i || j&gt;=(11-i) a=1; ...

Проверьте пожалуйста указатели , размерность ответа не влазит что изменить - C++
Содержание работы: 1. Разработать Си - программу содержащую 6 переменных одного типа и 2 указателя на любые эти переменные. ...

подскажите пожалуйста, что не так? - C++
Здравствуйте. У меня вопрос по поводу задачи: найти букву, чаще встречающуюся в тексте. Т.е. я ввожу массив из элементов,...

Подскажите пожалуйста что не так - C++
Вот выражение: e2/3+e3/4+e4/5+...+e9/10 Вроде компилится, консоль запускается, но выражение не высчитывает. Вот код: #include...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
08.12.2013, 19:11     Проверьте пожалуйста, что не так? #2
1) функция должна возвращать void.
2) r объявлена без инициализации, хотя тут же в цикле проверяется. Это "неопределенное поведение". Скорее всего из-за этого
deepz
61 / 61 / 33
Регистрация: 04.10.2013
Сообщений: 250
08.12.2013, 19:34  [ТС]     Проверьте пожалуйста, что не так? #3
Цитата Сообщение от nexen Посмотреть сообщение
1) функция должна возвращать void.
2) r объявлена без инициализации, хотя тут же в цикле проверяется. Это "неопределенное поведение". Скорее всего из-за этого
так, а что мне делать?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.12.2013, 19:35     Проверьте пожалуйста, что не так?
Еще ссылки по теме:

скажите пожалуйста что не так? - C++
пишет ошибку &quot;Необработанное исключение в &quot;0x0f3fde8f (msvcr100d.dll)&quot; в &quot;lab2.exe&quot;: 0xC0000005: Нарушение прав доступа при записи...

Подскажите пожалуйста, что не так - C++
Задание из книги. Вроде бы все делаю правильно, но в итоге программа не правильно считает. На скрине условие и сама формула, по которой...

Подскажите,пожалуйста ,что не так с кодом! - C++
Не могу понять,что с кодом.Если не сложно,то прокомментируйте пожалуйста #include &lt;stdio.h&gt; #include &lt;string.h&gt; #define ...

объясните, пожалуйста, что я делаю не так - C++
Ошибка LNK2005 &quot;bool __cdecl ForSortForBodyType(struct AutoCars &amp;,struct AutoCars &amp;)&quot; (?ForSortForBodyType@@YA_NAAUAutoCars@@0@Z) уже...


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

Или воспользуйтесь поиском по форуму:
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
08.12.2013, 19:35     Проверьте пожалуйста, что не так? #4
deepz, при инициализации r поставь сразу:
C++
1
int r = n%d;
Yandex
Объявления
08.12.2013, 19:35     Проверьте пожалуйста, что не так?
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru