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

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

Войти
Регистрация
Восстановить пароль
 
sambuka
0 / 0 / 0
Регистрация: 16.11.2008
Сообщений: 30
#1

циклы for, while - C++

17.10.2010, 16:10. Просмотров 534. Ответов 2
Метки нет (Все метки)

for: Среди всех n-значных чисел (n = 1,2,3,4) указать те, сумма цифр которых равна данному числу k.

while: Дано натуральное число n. Поменять порядок следования цифр в этом числе на обратный.
(только не по цифрам отдельно менять и выводить,а само число целиком)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.10.2010, 16:10     циклы for, while
Посмотрите здесь:

Циклы C++
C++ Циклы (for, while, do while)
Циклы C++
C++ Циклы
C++ циклы
C++ циклы
C++ Циклы do и while
C++ Циклы в Cи
Циклы C++
C++ Циклы
циклы C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
МаксимМВ
C/C++
90 / 90 / 5
Регистрация: 01.07.2010
Сообщений: 281
17.10.2010, 18:06     циклы for, while #2
Решение первой задачи (прочтите комментарии):
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
// for
#include <iostream>
#include <math.h> // для степени
 
int sumfig(int num) // определение суммы цифр
{
    int s;
    for (s=0;num>0;num/=10) // цикл, в котором num делится на 10
        s+=num%10; // прибавить остаток от деления на 10 (т.е очередную цифру) к сумме
    return s;
}
 
int main(int argc, char *argv[])
{
    int n,k,i;
    std::cout<<"n k ";
    std::cin>>n>>k;
    
    for (i=0;i<pow(10,n);i++) // основной цикл, перебираются число от 0 до 10^n-1
        if (sumfig(i)==k) // если сумма цифр равна k
            std::cout<<i<<" "; // то вывести это число
    
    system("pause");
    return 0;
}
Добавлено через 10 минут
Решение второй задачи:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// while
#include <iostream>
 
int main(int argc, char *argv[])
{
    int num,okn;
    std::cout<<"Enter number: ";
    std::cin>>num; // получаем число
    
    okn=0; // новое число, начальное значение 0
    while (num>0) // тут надо вдуматься и понять алгоритм
    {
        okn=okn*10+num%10; // % означает останок от деления
        num/=10;
    }
    
    std::cout<<okn<<std::endl;
    
    system("pause");
    return 0;
}
easybudda
Эксперт С++
9439 / 5462 / 925
Регистрация: 25.07.2009
Сообщений: 10,481
17.10.2010, 21:39     циклы for, while #3
принципиально без for без while
C
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
 
int sum_digits(int num) { return ( ! num ) ? 0 : num % 10 + sum_digits(num / 10); }
int power(int num) { return ( num /= 10 ) ? 10 * power(num) : 1; }
int reverse_number(int num){ return ( num / 10 ) ? num % 10 * power(num) + reverse_number(num / 10) : num; }
 
int main(void){
    int num;
    printf("Number: ");
    scanf("%d", &num);
    printf("Sum of digits: %d\nReverse number: %d\n", sum_digits(num), reverse_number(num));
    return 0;
}
Yandex
Объявления
17.10.2010, 21:39     циклы for, while
Ответ Создать тему
Опции темы

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