Member 14657861 Ответов: 1

Как я пишу эту программу, используя только if-else, else if вместо whi


Я хочу написать эту программу, используя только if-else, else if вместо while или for
и когда пользователь записывает самое большое число дважды, он должен показать второе по величине число как самое большое число тоже вроде;
Введите пять цифр: 53 -99 53 14 22
Самое большое число-это: 53
Второе по величине число-53

Что я уже пробовал:

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

int main(void)
{
int sayi =0 ;
int sayac = 1;
printf("Sayiyi Girin:");
scanf("%d",&sayi);

int enbuyuk = sayi ;
int ikinci_buyuk = sayi;
while (sayac != 5)
{
sayac++;
printf("Sayiyi Girin:");
scanf("%d",&sayi);

    if (sayi  > enbuyuk )
{
    ikinci_buyuk  = enbuyuk;
    enbuyuk = sayi;
}
    else if (sayi < enbuyuk)
    {
        
    if ((sayac == 2))
    {
        ikinci_buyuk = sayi;
    }
    else if (sayi > ikinci_buyuk)
    {
        ikinci_buyuk = sayi;
        }
    
    else if (enbuyuk == ikinci_buyuk)
        {
        ikinci_buyuk = enbuyuk;
    }
}
}
printf("sayac: %d\n",sayac);
printf("En buyuk sayi: %d\n",enbuyuk);
printf("İkinci en buyuk sayi: %d\n",ikinci_buyuk);

if( enbuyuk % ikinci_buyuk !=0) {
    printf("%d %d nin tam kati degildir.is not the multiple of",enbuyuk,ikinci_buyuk);
    }
    else{
        printf(" %d %d nin tam katidir.is the multiple of",enbuyuk,ikinci_buyuk);
    }


if ( enbuyuk != ikinci_buyuk) {
printf(" %d ve %d birbirine esit degildir.not equal each other",enbuyuk,ikinci_buyuk);
}
else {
printf(" %d ve %d birbirine esitir.equal each other",enbuyuk,ikinci_buyuk);
}

if (enbuyuk %2 != 0) {
printf("%d tek sayidir.odd number",enbuyuk);
}   
else {
printf("%d cift sayidir.even number",enbuyuk);
}


system("pause");
return 0;
}

1 Ответов

Рейтинг:
0

OriginalGriff

В принципе, нет.
If...else это не петлевая конструкция, (do, while, и for являются ли все циклические конструкции), поэтому вы не можете напрямую заменить while с if если только вы также не используете goto - и вы будете заслуженно осмеяны, если сделаете это, и скажете, чтобы все хорошо думающие люди забыли goto существует до тех пор, пока вы не будете кодировать по крайней мере пять лет.


Member 14657861

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

OriginalGriff

У меня нет доступа к вашим данным - и это, вероятно, имеет отношение к делу.

Так что все будет зависеть от тебя.
К счастью, у вас есть инструмент, который поможет вам выяснить, что происходит: отладчик. Как вы его используете, зависит от вашей системы компилятора, но быстрый поиск в Google имени вашей IDE и "отладчика" должен дать вам необходимую информацию.

Поместите точку останова в первую строку функции и запустите код через отладчик. Затем посмотрите на свой код и на свои данные и определите, что должно произойти вручную. Затем по одному шагу в каждой строке проверяйте, что то, что вы ожидали, произойдет именно так, как и произошло. Когда это не так, тогда у вас есть проблема, и вы можете вернуться назад (или запустить ее снова и посмотреть более внимательно), чтобы выяснить, почему.

Извините, но мы не можем сделать это за вас - пришло время вам освоить новый (и очень, очень полезный) навык: отладку!