Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.10.2013, 10:00   #1
GroMkiY
Пользователь
 
Регистрация: 16.10.2013
Сообщений: 25
По умолчанию Помогите разобраться что делает эта программа? (СИ)

Код:
#include <stdio.h>
 
int main(int argc, char* argv[])
{
    int i,k,n;
    int D[10]; <= тут
    for (i=0;i<10;i++)D[i]=0;
    printf("n=");
    scanf("%d",&n);
    while(1)
    {
        if (n==0) break; // <= тут
        k=n % 10; <= тут 
        D[k]++; <= тут
        n/=10;
    }
    for (i=0; i<10; i++)
        if (D[i] > 0) //и тут
        {
            printf("%d\n",D[i]);
            break;
        }
    return 0;
}
Задание: Дано натуральное число. Определить, сколько раз в нем встречается минимальная цифра (например, для числа 102200 ответ равен 3, для числа 40330 – 2).
GroMkiY вне форума Ответить с цитированием
Старый 17.10.2013, 10:25   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

ваш код, имхо, выводит счётчик - сколько раз цифра встречается в заданном числе n и прерывает работу. т.к. перебор цифр идёт от нуля, но получается, что выдаётся МИНИМАЛЬНАЯ цифра.

Цитата:
Код:
int D[10]; - задаём целочисленный массив на 10 элементов, где будем подсчитывать, сколько раз встретилась каждая цифра
например. D[0] даст нам значение, сколько раз встретилась цифра 0
D[1] даст нам значение, сколько раз встретилась цифра 1
...
D[3] даст нам значение, сколько раз встретилась цифра 3 и т.д.

while(1) цикл крутим

if (n==0) break; условие выхода из цикла. как число стало равным нулю - всё. баста, выходим из цикла

        k=n % 10; получить очередную цифру числа n
        D[k]++; нарастить счётчик для полученной цифры k


if (D[i] > 0) если счётчик цифры больше нуля, значит цифра в числе есть, 
   выводим счётчик
Serge_Bliznykov вне форума Ответить с цитированием
Старый 17.10.2013, 10:31   #3
VIK_aka_TOR
Участник клуба
 
Аватар для VIK_aka_TOR
 
Регистрация: 30.01.2011
Сообщений: 1,578
По умолчанию

Код:
#include <stdio.h>
 
int main(int argc, char* argv[])
{
    int i,k,n;
    int D[10]; // объявляем целочисленный одномерный массив на 10 чисел
    for (i=0;i<10;i++)D[i]=0;
    printf("n=");
    scanf("%d",&n);
    while(1)
    {
        if (n==0) break; // если n равно нулю, выходим из цикла while (1)
        k=n % 10; // k = остаток от деления n на 10, иными словами получаем последнюю цифру числа n
        D[k]++; // инкрементируем элемент массива d под индексом k то же что и D[k] = D[k] + 1;
        n/=10;  // целочисленное деление n на 10,  иначе говоря затираем последнюю цифру числа n
    }
    for (i=0; i<10; i++)
        if (D[i] > 0) // если элемент массива D под индексом i больше нуля
        {
            printf("%d\n",D[i]); // выводим его
            break; // прерываем цикл
        }
    return 0;
}
p.s. выполняет в принципе то, что и требовалось в задании
UPD

опередили...
пишу код не только за печеньки

Последний раз редактировалось VIK_aka_TOR; 17.10.2013 в 10:34.
VIK_aka_TOR вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обьясните пожалуста как и что делает эта программа и почему она это делает. Dimka-novitsek Общие вопросы C/C++ 7 16.10.2013 12:02
Что делает эта программа?(код) Kampainn5 Общие вопросы по Java, Java SE, Kotlin 2 19.09.2012 22:24
Помогите разобраться,что делает эта часть программы? Селякова Елена Помощь студентам 1 29.11.2009 21:01
Что делает эта строчка??? marselik Общие вопросы C/C++ 2 02.11.2009 13:54
что делает эта программа и где ошибка? дангер Паскаль, Turbo Pascal, PascalABC.NET 27 28.01.2008 13:38