Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 21, средняя оценка - 4.81
dolmatova22
17 / 0 / 1
Регистрация: 13.03.2010
Сообщений: 30
#1

Написать программу вывода трехзначных чисел Цукермана - C++

13.03.2010, 17:33. Просмотров 3140. Ответов 25
Метки нет (Все метки)

Числа Цукермана — такие натуральные числа, которые делятся на произведение своих цифр.

Например:
число 212 делится нацело на 2*1*2,
числа 1-9 делятся на само себя,
число 24 делится нацело на 2*4.

Написать программу вывода трехзначных чисел Цукермана. Числа выводить столбиками, по 5 в строке.

Помогите пожалуйста..?
Язык Си.

http://ru.wikipedia.org/wiki/Числа_Цукермана
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.03.2010, 17:33
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Написать программу вывода трехзначных чисел Цукермана (C++):

Формирование массива трехзначных чисел с помощью датчика случайных чисел и вывода его на экран - C++
Создать две функции для работы с массивом: • формирование массива трехзначных чисел с помощью датчика случайных чисел и вывода его на...

Написать программу для вывода на экран чисел Фибоначчи, меньших заданного числа Q - C++
Написать программу для вывода на экран чисел Фибоначчи (1,1,2,3,5,8 ... xn = xn-1 + xn-2), меньших заданного числа Q. Помогите кому не...

Написать программу, которая должна включать функции для: - вывода шапки таблицы; - вывода данных одной строки - C++
Написать программу, которая должна включать функции для: - вывода шапки таблицы; - вывода данных одной строки таблицы; - ввода и...

Напишите программу нахождения всех трехзначных простых чисел - C++
Найти все трехзначные простые числа

Составить программу поиска трехзначных целых чисел, делящихся нацело на 9 - C++
Помогите написать программу с++ при помощи цикла while. Очень надо, всем печенек :3

Написать программу, которая получает два трехзначных числа, меняет у них местами средние цифры и выводит результат в консоль - C++
#include <iostream> using namespace std; void main() { int num = 0; int num2 = 0; cout << "Enter xxx number"; cin >>...

25
Vorona
Peace 2 all shining faces
669 / 531 / 45
Регистрация: 05.03.2010
Сообщений: 1,283
13.03.2010, 18:01 #2
на ноль делить нельзя, например 101, 102 и т.д., их не записывать значит?
1
kravam
быдлокодер
1701 / 888 / 45
Регистрация: 04.06.2008
Сообщений: 5,498
13.03.2010, 18:43 #3
Размялся. Тестируй.
C++
1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
int main(){
 int j=0; 
 for (int i= 100; i< 1000;) {
  (!(i%(i++%10+i%100/10+i%1000/100)))? (printf ("%d ", i-1, j++)):(1);
  (!(j%5)&&j)?printf ("\n", j=0):(1);
 }
 getchar ();      
 return 0;
}
1
Vorona
Peace 2 all shining faces
669 / 531 / 45
Регистрация: 05.03.2010
Сообщений: 1,283
13.03.2010, 20:12 #4
вот моя версия, правда со строками чуть начудил вначале, но результаты верны)
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
#include<iostream.h>
#include<conio.h>
#include<stdlib.h>
 
int main()
{
    clrscr();
 
    long long i, j, cyk[300], num[3], count=0, k=0;
    char str[3], str1[3];
 
    for(i = 100; i < 1000; i++){
        for(j = 0; j  < 3; j++){
            itoa(i, str1, 10);
            str[0] = str1[j];
            num[j] = atoi(str);
        }
 
        for(j = 0; j < 3; j++)
            if(num[j] != 0 && i % num[j] == 0)
                k++;
 
        if(k == 3){
            cyk[count] = i;
            count++;
        }
        k = 0;
    }
 
    for(i = 0; i < count; i++)
        cout<<cyk[i]<<' ';
 
    getch();
    return 0;
}
Добавлено через 15 минут
забыл про столбики, если правильно понял, то замени 30 и 31 строки
C
1
2
for(i = 0; i < count; i++)
                cout<<cyk[i]<<' ';
на
C
1
2
3
4
5
    for(i = 1; i < count; i++){
        cout<<cyk[i]<<' ';
            if(i % 5 == 0)
                cout<<endl;
        }
1
dolmatova22
17 / 0 / 1
Регистрация: 13.03.2010
Сообщений: 30
13.03.2010, 22:24  [ТС] #5
kravam

Программа выдает ошибки..
Простите мне мое незнание,
Можно ли узнать, здесь переменная i в качестве элемента массива?
А j - количество столбцов? Но почему j=0? В описывании переменных...
! - логическое НЕ?
? - условная операция?, так?

И : (1) - что означает?

Добавлено через 1 минуту
Vorona

Простите, я видимо, совсем неопытый пользователь. Код очень сложен, не могу понять, что к чему...Во всяком случае - Благодарю Вас!
Спасибо Вам...
0
Day
1158 / 963 / 57
Регистрация: 29.10.2009
Сообщений: 1,385
13.03.2010, 22:53 #6
Попробуем попроще.
Только есть вопрос.
Число должно делиться на ПРОИЗВЕДЕНИЕ своих цифр или только на КАЖДУЮ из них?
Числа с 0 отбрасываем.
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
  int cc[3];  // Здесь будут цифры
  m = 0;  // Это чтоб было 5 штук на строчке
  for(i=111; i<1000; i++) {
     ii = i;
     for(j=0; j<3; j++) {
        c[j] = ii % 10;
        if (cc[j]==0) break;
     }
     if (j==3) {  // Все цифры ненулевые
        k=1;    // Это для ПРОИЗВЕДЕНИЯ
        for (j=0; j<3; j++) k*= c[j];
        if ((i%k)==0) { 
          printf("%4d", i);
          m++;
          if ((m%5)==0) printf("\n");
        }
           // А это для КАЖДОГО
         for(j=0; j<3; j++) if (i%c[j]) break;
         if (j==3) { // Все разделилось
          printf("%4d", i);
          m++;
          if ((m%5)==0) printf("\n");
        }
     }
  }
1
dolmatova22
17 / 0 / 1
Регистрация: 13.03.2010
Сообщений: 30
13.03.2010, 23:10  [ТС] #7
Число должно делиться на произведение своих цифр, все же..
0
Day
1158 / 963 / 57
Регистрация: 29.10.2009
Сообщений: 1,385
13.03.2010, 23:19 #8
Тогда строчки 18-23 просто выкидываете.
И еще, прошу прощения, описочка вышла.
После строчки 8: ii /= 10;
0
dolmatova22
17 / 0 / 1
Регистрация: 13.03.2010
Сообщений: 30
13.03.2010, 23:24  [ТС] #9
То есть Здесь m - количество элементов в строчке..

А ii = i - ?
0
Day
1158 / 963 / 57
Регистрация: 29.10.2009
Сообщений: 1,385
13.03.2010, 23:53 #10
dolmatova22,
А ii = i - ?
Это так. ii - временная переменная, она изменяется (ii /= 10)
Она нужна только чтоб цифры посчитать и цикловую переменную i не испортить
Описки возможны, я не проверял, просто идею подкинул
1
Vorona
Peace 2 all shining faces
669 / 531 / 45
Регистрация: 05.03.2010
Сообщений: 1,283
14.03.2010, 01:19 #11
dolmatova22, на самом деле код несложный совсем, разве что строки 14, 15, 16 могут показаться непонятными, но там я просто перевожу целое число в строку, т.е. массив символов и в цикле разбираю каждый символ числа, как элемент массива и снова перевожу в число, это первое, что пришло на ум, т.к. с делениями на 10 с первой попытки не вышло, ну и т.д. могу объяснить, если будет необходимость)
1
CyBOSSeR
Эксперт С++
2304 / 1674 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
14.03.2010, 02:47 #12
dolmatova22,
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>
 
// Возвращает произведение цифр числа n
int DigitProduct(int n)
{
  int result = 1;
 
  while (n) {
    result *= n % 10;
    n /= 10;
  }
 
  return result;
}
 
int main()
{
  int i;
  int count  = 0;
  int product;
 
  for (i = 100; i < 1000; ++i) {
    product = DigitProduct(i);
 
    if (product == 0)
      continue;
    
    if (i % product == 0) {
      printf("%d ", i);
 
      count++;
 
      if (count % 5 == 0)
        printf("\n");
    }
  }
  
  return 0;
}
1
kravam
быдлокодер
1701 / 888 / 45
Регистрация: 04.06.2008
Сообщений: 5,498
14.03.2010, 04:24 #13
АВтор, слушай. Ты, впредь всё-таки, будь внимательнее. Определение чисел Цукермана ты дал верное, но вот объяснил неправильно. Уверен, что ты уже сам понял, что, число 212, к примеру, является числом Цукермана не потому, что делится на 2, 1 и 2, а на 2*1*2

...Я напутал. Я выдал код, находящий числа, которые нацело делятся на СУММУ, а не на ПРОИЗВЕДЕНИЕ своих цифр.
Может, кому пригодится

Вот правильный код
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>
 
int main(){
 int j=0; 
 int proizv;
 for (int i= 100; i< 1000;) {
  ((proizv=((i%10)*(i%100/10)*(i%1000/100)))&&(!(i%proizv)))? (printf ("%d ", i++, j++)):(i++);
  (!(j%5)&&j)?printf ("\n", j=0):(1);
 }
 getchar ();      
 return 0;
}
1
dolmatova22
17 / 0 / 1
Регистрация: 13.03.2010
Сообщений: 30
14.03.2010, 11:48  [ТС] #14
Благодарю Вас

Добавлено через 14 минут
kravam

здесь переменная i в качестве элемента массива
Тогда, вероятно, надо ее прописать как int A[i] ?

Добавлено через 1 минуту
CyBOSSeR

Использую getch();
но программа не задерживается..
но мельком видно, что выдает правильные результаты
Как быть?
0
kravam
быдлокодер
1701 / 888 / 45
Регистрация: 04.06.2008
Сообщений: 5,498
14.03.2010, 12:00 #15
Цитата Сообщение от dolmatova22 Посмотреть сообщение
Благодарю Вас

Добавлено через 14 минут
kravam

здесь переменная i в качестве элемента массива
Тогда, вероятно, надо ее прописать как int A[i] ?

Добавлено через 1 минуту
Нет необходимости ничё изменять. Вывод проги кажись полностью соответствует заданию.
i это просто переменая типа int одно временно являющаяся счётчиком цикла.
В этом цикле я перебираю все числа от 100 до 1000 и как только нахожу нужное, вывожу i на экран.

Добавлено через 1 минуту
Зачем вообще массив? К чему массив? В задании не сказано "массив" да и без массива проще. А задействовать массив в этой задаче не рекомендую. Ибо это затраты памяти. Не вошло бы в привычку.

Добавлено через 40 секунд
getchar () попробуй.
1
14.03.2010, 12:00
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.03.2010, 12:00
Привет! Вот еще темы с ответами:

Напишите программу поиска трехзначных чисел, таких, что сумма трех цифр на которые оканчивается квадрат этого числа, равняется этому числу. - C++
Напишите программу поиска трехзначных чисел, таких, что сумма трех цифр на которые оканчивается квадрат этого числа, равняется этому числу....

Написать программу ввода и вывода строки на C++ - C++
Регите пожалуйста !

Написать программу вывода площадей колец - C++
с++ builder Нужно написать программу вывода площадей колец.Программа должна проверять правильность исходных данных т.е радиус кольца...

Написать программу вывода на экран таблицы Пифагора - C++
Помогите написать программу вывода на экран таблицы Пифагора


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

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