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

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

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

2 цикла в параметре - C++

28.11.2012, 23:37. Просмотров 238. Ответов 1
Метки нет (Все метки)

На промежутке [100, n] вывести все числа, составленные с цифр a,b,c. Или предложите свой код программы для выведения КОЛИЧЕСТВА этих чисел.

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
#include <iostream>
using namespace std;
#include <conio.h>
#include <math.h>
void main(){
int a,b,c,n,k=0,y=0,i,q,h=0,x=0;
char m;
cout<<"a:"; cin>>a;
cout<<"b:"; cin>>b;
cout<<"c:"; cin>>c;
cout<<"N:"; cin>>n;
for(i=100; i<=n; i++) {
x=i;
while (x/10>0) {
x=x/10;
k=k+1;}
y=i;
while (k!=0) {
q=y%10;
y=y/10;
k=k-1;
if (q!=a && q!=b && q!=c) goto m;
}
printf("\t %d", i);
m:;
}
getch();
}
Что здесь не так?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.11.2012, 23:37     2 цикла в параметре
Посмотрите здесь:

C++ Операторы цикла (while, do...while)
C++ Наследуемый класс в параметре шаблона
C++ Два цикла в параметре
.Написать функцию, которая будет возвращать значение y=ln(x)+x при входящем параметре x. Построить таблицу значений этой функции C++
C++ Двумерный массив в параметре класса
C++ Суммировать слагаемые при фиксированном параметре x
Ошибка в передаваемом параметре функции C++
Как использовать указатель на переменную во входящем параметре функции? C++
О memcopy, а именно об ее первом параметре void *dst C++
Соединение строк в параметре функции C++
C++ Указатель/ссылка в параметре функции
Оптимизация цикла for C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
polyaKIDze
63 / 63 / 12
Регистрация: 16.07.2012
Сообщений: 147
29.11.2012, 05:37     2 цикла в параметре #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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include <stdio.h>
#define MNOGO 100000
 
int main() {
    int x;
    printf ("Enter the right limit: ");
    scanf("%d", &x);
    int i;
    int a, b, c;
    printf ("Enter a, b & c: ");
    scanf ("%d%d%d", &a, &b, &c);
    int mass[MNOGO], len = 1;
    mass[0] = 0;
    int num = 0;
    for (i = 0; i < len; ++i) 
        if (mass[i] <= x) {
            if (mass[i] == 0) {
                if (a != 0) {
                    mass[len] = mass[i] * 10 + a;
                    ++len;
                }
                if (b != 0) {
                    mass[len] = mass[i] * 10 + b;
                    ++len;
                }
                if (c != 0) {
                    mass[len] = mass[i] * 10 + c;
                    ++len;
                }
            }
            else {
                mass[len] = mass[i] * 10 + a;
                mass[len + 1] = mass[i] * 10 + b;
                mass[len + 2] = mass[i] * 10 + c;
                len += 3;
            }
            if (mass[i] >= 100) {
                printf ("%d ", mass[i]);
                ++num;
            }
        }
    printf ("\nTotal: %d numbers.\n", num);
 
 
    return 0;
}
Вот решение в лоб. Оно не учитывает, что цифры a, b, c могут совпадать. Но это можно легко учесть.

Не по теме:

Жду рекурсивного решения от easybudda



Добавлено через 10 минут
И, вероятно, у вас просто не работает goto. фуфуфу использовать это. Вы же не быдлокодер, правда?
Если приглядеться, то даже просматривается логика. Но присматриваться не хочется, т.к. ощущения будто вы писали это пяткой. Попробуйте использовать break, вместо goto в общем. И еще надо k периодически обнулять.

Добавлено через 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
#include <iostream>
#include <math.h>
using namespace std;
void main(){
int a,b,c,n,k=0,y=0,i,q,h=0,x=0;
cout<<"a:"; cin>>a;
cout<<"b:"; cin>>b;
cout<<"c:"; cin>>c;
cout<<"N:"; cin>>n;
int par;
for(i=100; i<=n; i++) {
x=i;
k = 0;
while (x>0) {
x=x/10;
k=k+1;}
y=i;
while (k!=0) {
q=y%10;
y=y/10;
k=k-1;
par = 0;
if (q!=a && q!=b && q!=c) { par = 1; break;}
}
if (par == 0) {cout <<i; cout <<" ";}
}
cin >>i;
}
Yandex
Объявления
29.11.2012, 05:37     2 цикла в параметре
Ответ Создать тему
Опции темы

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