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

While-цикл с условием. - C++

Восстановить пароль Регистрация
 
E92
-4 / 1 / 0
Регистрация: 01.04.2012
Сообщений: 41
14.04.2012, 20:50     While-цикл с условием. #1
Дано целое число N(>0). Если оно является степенью числа 3, то вывести TRUE, если не является-вывести FALSE.

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
#include <stdio.h>
#include <conio.h>
#include <locale.h>
#include <math.h>
 
int main()
{
    setlocale(0,"Russian");
    int N,i;
    i=1;
    printf("Введите целое число:\n");
    scanf("%d",&N);
    while((N!=0)&&i)
    {
        if(N%3!=0)
            i=0;
        N/=3;
    }
    if(i)
            printf("истинно('TRUE')\n");
        else 
            printf("ложно('FALSE')\n");
    getch();
    return 0;
}
Так надо было решать???
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
-=ЮрА=-
Заблокирован
Автор FAQ
14.04.2012, 20:55     While-цикл с условием. #2
Цитата Сообщение от E92 Посмотреть сообщение
Дано целое число N(>0). Если оно является степенью числа 3, то вывести TRUE, если не является-вывести FALSE.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
using namespace std;
 
int main()
{
    unsigned int N;
    unsigned int p;
    while(true)
    {
        cout<<"Enter N : ";cin>>N;
        cout<<"N is power of 3 : ";
        p = N % 3;
        while(1 < (N /= 3) && p == 0)
            p = N % 3;
        if(p)
            cout<<"FALSE\n";
        else
            cout<<"TRUE\n";
    }
    return 0;
}
Миниатюры
While-цикл с условием.  
E92
-4 / 1 / 0
Регистрация: 01.04.2012
Сообщений: 41
14.04.2012, 20:57  [ТС]     While-цикл с условием. #3
Спасибо.))) А нельзя это на СИ написать?)
-=ЮрА=-
Заблокирован
Автор FAQ
14.04.2012, 21:04     While-цикл с условием. #4
E92,
Цитата Сообщение от E92 Посмотреть сообщение
Спасибо.))) А нельзя это на СИ написать?)
- да не вопрос, обрати внимание я код поправил действительно однократная проверка N % 3 не даёт вопрос на то просто ли число кратно трём либо всё же єто степень, для точного ответа нужен пробор в цикле
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
while(1 < (N /= 3) && p == 0)
-=ЮрА=-
Заблокирован
Автор FAQ
14.04.2012, 21:05     While-цикл с условием. #5
Добавлено через 2 минуты
Ниже Си реализация, функционал тот же
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdio.h>
 
int main()
{
    unsigned int N;
    unsigned int p;
    while(1)
    {
        printf("Enter N : ");
        scanf("%d",&N);
        printf("N is power of 3 : ");
        p = N % 3;
        while(1 < (N /= 3) && p == 0)
            p = N % 3;
        if(p)
            printf("FALSE\n");
        else
            printf("TRUE\n");
    }
    return 0;
}
Миниатюры
While-цикл с условием.  
E92
-4 / 1 / 0
Регистрация: 01.04.2012
Сообщений: 41
14.04.2012, 21:05  [ТС]     While-цикл с условием. #6
Спасибо!!!!!))))
-=ЮрА=-
Заблокирован
Автор FAQ
14.04.2012, 21:09     While-цикл с условием. #7
И ещё один момент - этот цикл
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
while(true)
* * {
служит лишь для организации многократного ввода и к самому алгоритму отношения не имеет(я подумал что всё же проще вводить многократно, чем каждый раз смыкать на запуск приложение). Т.е если хотим лишь 1-кратную отработку, то код преобразуем в такой
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdio.h>
 
int main()
{
    unsigned int N;
    unsigned int p;
    printf("Enter N : ");
    scanf("%d",&N);
    printf("N is power of 3 : ");
    p = N % 3;
    while(1 < (N /= 3) && p == 0)
        p = N % 3;
    if(p)
        printf("FALSE\n");
    else
        printf("TRUE\n");
    getchar();
    printf("Enter any key to continue\n");
    getchar();
    return 0;
}
Отработка
Enter N : 81
N is power of 3 : TRUE
Enter any key to continue
E92
-4 / 1 / 0
Регистрация: 01.04.2012
Сообщений: 41
14.04.2012, 21:47  [ТС]     While-цикл с условием. #8
Спасибо большое!!!!) Вы очень помогли!!!!!))))

Добавлено через 35 минут
А вы не могли бы объяснить эту строчку: 1 < (N /= 3) && p == 0)
-=ЮрА=-
Заблокирован
Автор FAQ
14.04.2012, 22:35     While-цикл с условием. #9
Цитата Сообщение от E92 Посмотреть сообщение
1 < (N /= 3) && p == 0)
это два условия
1-е условие (N /= 3) - крутимся в цикле пока N больше единицы при этом мы ещё и делим N на 3 при каждой итерации. N /= 3 означает следующее N = N/3
2-е условие p == 0 мы будем крутиться в цикле также пока остаток от целочисленного деления N % 3 равен нулю.
При этом если число не степень 3-ки то из цикла выйдем ранее чем N/3 станет равным единице, если же N было степенью тройки то у нас всё время p == 0 и цикл окончим уже по условию
1 < (N /= 3)
В общем получается нам нужно контролировать как величину числа так и остаток от целочисденного деления, вот поэтому условий 2
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.04.2012, 07:32     While-цикл с условием.
Еще ссылки по теме:

дано целое число N>0 . используя один цикл (с пред- и пост- условием) найти сумму 1!+2!+.+n! C++
Программа на цикл с условием (написать программу для нахождения суммы тех членов ряда, модуль которых не менее ε) C++
C++ Вывод на экран двусвязного списка, цикл с условием

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

Или воспользуйтесь поиском по форуму:
E92
-4 / 1 / 0
Регистрация: 01.04.2012
Сообщений: 41
15.04.2012, 07:32  [ТС]     While-цикл с условием. #10
Спасибо!!! Теперь всё понятно!
Yandex
Объявления
15.04.2012, 07:32     While-цикл с условием.
Ответ Создать тему
Опции темы

Текущее время: 04:42. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru