Премини към съдържанието
Форумът в приложение

По-лесно сърфиране. Научи повече.

Kaldata.com - Форуми

Приложение на форума на цял екран с push известия, значки и други.

За да инсталирате това приложение на iOS и iPadOS
  1. Докоснете Иконата за споделяне в Safari
  2. Превъртете менюто и докоснете Добавяне към началния екран.
  3. Докоснете Добавяне в горния десен ъгъл.
За да инсталирате това приложение на Android
  1. Докоснете менюто с 3 точки (⋮) в горния десен ъгъл на браузъра.
  2. Докоснете Добавяне към началния екран или Инсталиране на приложение.
  3. Потвърдете, като докоснете Инсталиране.

Добре дошли!

Добре дошли в нашите форуми, пълни с полезна информация. Имате проблем с компютъра или телефона си? Публикувайте нова тема и ще намерите решение на всичките си проблеми. Общувайте свободно и открийте безброй нови приятели.

Моля, регистрирайте се за да публикувате тема и да получите пълен достъп до всички функции.

 

ВАЖНО! Помощ за една програма

Featured Replies

Здравейте!

Имам нужда от малко помощ за една задача по програмиране. Не мога да разбера, как да намеря елемента от масива с най-голямо произведение на съставящите го цифри?

Аз пробвах много пъти, но не става.

Ето програмата:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int N;
    int a;
    int mas[100];
    int rem;
    int product=1;
        printf("Enter numbers: ");
        scanf("%d", &N);
    if (N <= 100)
    {
       for (a = 0; a < N; a++)
       {
        printf("Enter number: ");
        scanf("%d", &mas[a]);
       }
       for (a = 0; a < N; a++)
       {
        printf("The numbers are: %d,\t", mas[a]);
       }
       for (a = 0; a < N; a++)
       {
           if (mas[a] != 0)
           {
               rem = a % 10;
               product = product * rem;
               a = a / 10;


           }
           printf("%d", mas[a]);
       }
    }
    return 0;
}

А това е частта от програмата, където трябва да се промени:

for (a = 0; a < N; a++)
       {
           if (mas[a] != 0)
           {
               rem = a % 10;
               product = product * rem;
               a = a / 10;


           }
           printf("%d", mas[a]);
       }

 

 

Продукта не го приравняваш на 1 вътре в цикъла, затуй

Горе го приравняваш на 1.

Ама първото число като провериш, вече не е 1.

И друго. Трябва ти още две променливи. В едната да държиш най голямото произведение до момента, и в другата индекса на числото, което го дава

 int mm=0,ma=0,t;
 
 for (a = 0; a < N; a++)
 {
     t=mas[a];
     product=1;
     while (t)
     {
         product*=t%10;
         t/=10;
     }
     if (product>mm)
     {
         mm=product;
         ma=a;
     }
  } 

 

Евентуално може да добавиш проверка за нулеви числа  или отрицателни числа в масива.

  • Автор

ined, много ти благодаря, но кое точно трябва да се принтне (printf), защото пробвах да изпринтна всички променливи, но излизат различни числа, но не и числото, което е с най-голямо произведение? 

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int N;
    int a;
    int mas[100];
    int rem;
    int product = 1;
    printf("Enter the size of the array: ");
    scanf("%d", &N);
    if (N <= 100)
    {
        for (a = 0; a < N; a++)
        {
            printf("Enter mas[%d] : ", a);
            scanf("%d", &mas[a]);
        }
        for (a = 0; a < N; a++)
        {
            printf("mas[%d] = %d\n", a, mas[a]);
        }
        int max = INT_MIN;
        int index = -1;
        for (a = 0; a < N; a++)
        {
  	    product = 1;
            int temp = mas[a];
            while (temp != 0)
            {
                rem = temp % 10;
                product = product * rem;
                temp = temp / 10;
            }
            if (product > max)
            {
                max = product;
                index = a;
            }
        }
        printf("The number with maximum product of its digits is %d", mas[index]);
    }
    return 0;
}

 

  • Автор

Реджеп Иведик, много ти благодаря, но защо като пробвам програмата, винаги ми излиза, че последното число има най-голямо произведение от цифрите си? Защото числата ако се разместят, програмата дава грешен отговор. Как да го оправя?

преди 1 минута, eon написа:

Реджеп Иведик, много ти благодаря, но защо като пробвам програмата, винаги ми излиза, че последното число има най-голямо произведение от цифрите си? Защото числата ако се разместят, програмата дава грешен отговор. Как да го оправя?

Много си бърз. Имаше грешка. Коригирах я

Копирай кода пак.

  • Автор
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int N;
    int a;
    int mas[100];
    int rem;
    int product = 1;
    printf("Enter the size of the array: ");
    scanf("%d", &N);
    if (N <= 100)
    {
        for (a = 0; a < N; a++)
        {
            printf("Enter mas[%d] : ", a);
            scanf("%d", &mas[a]);
        }
        for (a = 0; a < N; a++)
        {
            printf("mas[%d] = %d\n", a, mas[a]);
        }
        int max = INT_MIN;
        int index = -1;
        for (a = 0; a < N; a++)
        {
            int temp = mas[a];
            while (temp != 0)
            {
                rem = temp % 10;
                product = product * rem;
                temp = temp / 10;
            }
            if (product > max)
            {
                max = product;
                index = a;
            }
        }
        printf("The number with maximum product of its digits is %d", mas[index]);
    }
    return 0;
}

 

  • Автор

МНОГО ВИ БЛАГОДАРЯ, Реджеп Иведик, за помощта. Всичко работи! Да сте жив и здрав!

Архивирана тема

Темата е твърде стара и е архивирана. Не можете да добавяте нови отговори в нея, но винаги можете да публикувате нова тема, в която да продължи дискусията. Регистрирайте се или влезте във вашия профил за да публикувате нова тема.

Разглеждащи това в момента 0

  • Няма регистрирани потребители разглеждащи тази страница.

Дарение

  • Подкрепи съществуването на форума - направи дарение
    25%
    Дарени 252.69 EUR от нужните 1,000.00 EUR

Бюлетин

Получавайте известие, когато има важна промяна или новина свързана с форума.

Профил

Навигация

Търсене

Търсене

Конфигуриране на push известия в браузъра

Chrome (Android)
  1. Докоснете иконата на катинар до адресната лента.
  2. Докоснете Разрешения → Известия.
  3. Променете предпочитанията си.
Chrome (Desktop)
  1. Кликнете върху иконата на катинар в адресната лента.
  2. Изберете Настройки на сайта.
  3. Намерете Известия и коригирайте предпочитанията си.