Запрограммируй, чтобы читать большие и меньшие числа в C оно не функционирует. Что я врежу?

Очень хорошие, я - новичок стараясь учиться программировать в C и прямо сейчас играю с циклами используя While, но я не смог завершать программу, которая читала бы любое число между 0 и 99 и читала, который является несовершеннолетним и самым большим.

Это - то, что я приношу:

{
    float numero;
    float mayor;
    float menor;
    printf("Dame numeros y te dire cual es mayor o menor\n");
    scanf("%f", &numero);
    mayor = numero;
    menor = numero;
    while((numero<100) && (numero>0))
    {
        if(numero<=menor)
        {
            numero = menor;
            printf(" El nuevo numero menor es %d!\n", menor);
        }
        else
        {
            if(numero>=mayor)
            {
                numero = mayor;
                printf(" El nuevo numero mayor es %d!\n", mayor);
            }
        }
        scanf("%f", &numero);       
    } 
    printf("El numero mayor es %f\n", mayor);
    printf("El numero menor es %f\n", menor);

}

Всегда он говорит correrrlo, что самое большее и меньшее число - первое, что вмешивается. И самые меньшие и самые большие из цикла всегда дают 0. Какая-то идея о, что я врежу? Мой преподаватель сделал сходное упражнение со средними величинами и структура - почти та же самая. Спасибо заранее, привет.

2
задан 17.04.2016, 19:27
3 ответа

У тебя есть проблема в ассигновании mayor и menor. Вместо того, чтобы распределять их в эти переменные, ты распределяешь эти переменные в numero а следовательно ты теряешь стоимость.

{
    float numero;
    float mayor;
    float menor;
    printf("Dame numeros y te dire cual es mayor o menor\n");
    scanf("%f", &numero);
    mayor = numero;
    menor = numero;
    while((numero<100) && (numero>0))
    {
        if(numero<=menor)
        {
            menor = numero;
            printf(" El nuevo numero menor es %d!\n", menor);
        }
        else
        {
            if(numero>=mayor)
            {
                mayor = numero;
                printf(" El nuevo numero mayor es %d!\n", mayor);
            }
        }
        scanf("%f", &numero);       
    } 
    printf("El numero mayor es %f\n", mayor);
    printf("El numero menor es %f\n", menor);

}
1
ответ дан 24.11.2019, 14:34

Есть части в твоем вопросе, которые я не понял очень хорошо, но смотря код возможно, что это - более или менее то, что ты ищешь:

int main(void) {

    float numero;
    float anterior_numero;

    float mayor;
    float menor;

    printf("Dame un numero: \n");
    scanf("%f", &anterior_numero);

    printf("Dame un numero y te dire si es mayor o menor\n");
    scanf("%f", &numero);

    mayor = anterior_numero;
    menor = anterior_numero;

    while((numero<100) && (numero>0))
    {
        if(numero<=menor)
        {
            menor = numero;
            printf(" El nuevo numero menor es %f!\n", menor);
        }
        else if(numero>=mayor)
        {
            mayor = numero;
            printf(" El nuevo numero mayor es %f!\n", mayor);

        }

        scanf("%f", &numero);       
    } 
    printf("El numero mayor es %f\n", mayor);
    printf("El numero menor es %f\n", menor);


return 0;
}

Замечает: Я не смог тестировать это смоги брать это как pseudocode.

то, что ты комментируешь на 0, также было бы частично из-за использования формата %d:

printf(" El nuevo numero menor es %d!\n", menor);

, если Вы вводите число без десятичной части, давайте говорить 5 и примени формат %d он покажет его ему как 0.

, Если в предыдущий код Вы помещаете %d, может замечать различие, может использовать в Вашем месте %f для того, чтобы он показал десятичных (возможно налаживать число десятичных, что хочет, чтобы они были показаны его), или может использовать %g.

printf(" El nuevo numero menor es %f!\n", menor);
printf(" El nuevo numero menor es %g!\n", menor);

для большего количества info на формате может смотреть это http://www.cplusplus.com/reference/cstdio/printf/

0
ответ дан 24.11.2019, 14:34
  • Если ты хочешь сохранять самое большее число и несовершеннолетнего по мере того, как была новая большая и меньшая стоимость, ты должен распределять это в вышеупомянутые переменные.

В ассигновании, ты должен учитывать пока ты программируешь, который стоимость, которая находится справа от равного, распределит себе/, он установит в переменной, которая в izquiera равного.

Тогда: чтобы сохранять самую меньшую стоимость ты должен распределять число несовершеннолетнему, и чтобы сохранять самую большую стоимость, должен распределять число в больший.

  • Если число равно несовершеннолетнему, ты не нуждаешься в том, чтобы распределить стоимость числа несовершеннолетнему, потому что уже он содержит точно эту стоимость; В часть, что, в таком случае, это не обработает, чтобы подтверждать, (стоимость числа) больше ли, чем больший вышеупомянутая переменная, чуждая этой возможности оставаясь; Следующий условный также не требует переходить в ассигнование в случае, если стоимость изменчивая число будет равно в большего в пользу того же мотива: это не очень нужно.

  • Второй условный может быть отложенным двух шагов, которые появляются у единственного условного else if, else и внутри if.

  • Скобки, которые содержат номер <100 и тех, которые содержат число> 0 ненужные. Все меньше ненужные части есть в самом быстром коде возможно выполнять и, более ясной и заслуживающей доверия может быть Ваша разработка, запрограммировав это.

... На основании этого, код остался бы таким:

   {
    float numero;
    float mayor;
    float menor;
    printf("Dame numeros y te dire cual es mayor o menor\n");
    scanf("%f", &numero);
    mayor = numero;
    menor = numero;
    while( numero < 100 && numero > 0 )
    {
        if( numero < menor )
            {
            menor = numero;
            printf(" El nuevo numero menor es %f!\n", menor);
            }
        else if( numero > mayor )
            {
                mayor = numero;
                printf(" El nuevo numero mayor es %f!\n", mayor);
            }
        }
        scanf("%f", &numero);       
    } 
    printf("El numero mayor es %f\n", mayor);
    printf("El numero menor es %f\n", menor);
   }
0
ответ дан 24.11.2019, 14:34