2015-09-28 7 views
-3

Я новичок в программировании, и в настоящее время я использую visual studio 2013 для программирования c, вопрос в том, когда я запускал код, он спрашивает меня, что я хочу выбрать, поэтому я выбираю номер 1, затем он спрашивает я «Anna korkeus» (значит, даю мне высоту), тогда я пишу 1, он продолжает давать мне что-то на вечность, но я хочу, когда я пишу 1, он должен напечатать это = 'printf («Pienin mitta на 5 см ja suurin 50 см, anna uudelleen \ n "); ', и после этого, потому что число, которое я дал, было неправильным, оно должно снова задать мне тот же вопрос «Anna korkeus», пока я не дам правильное число между 5> h || ч> 50while loop in c language

Спасибо заранее, извините английский не мой родной язык

#include < stdio.h> 
#define PII 3.14 
void main(void) 
{ 
    char rivi[128]; /* sy”tetty rivi luetaan t„h„n */ 
    /* mahdollinen ylim„„r„inen sy”te */ 
    float pii; 
    float h; 
    float r; 
    float v; 
    float kartio; 
    float luku; 
    int number; 

    system("cls"); 

    printf("1 ympyr„lieri” \n"); 
    printf("2 ympyr„kartio \n"); 
    printf("Lasketaan tilavuutta, valitse tuotteista: \n"); 


    scanf_s("%d", &number); 
    if (number == 1){ 
     printf("Valitsit ympyr„lieri”n \n"); 

    luku=printf("Anna korkeus: \n"); 
    scanf_s("%f", &h); 

    while (5 > h || h > 50){ 
     printf("Pienin mitta on 5 cm ja suurin 50cm, anna uudelleen \n"); 
     printf("Anna korkeus: \n"); 
    } 


    printf("Anna sade: \n"); 
    scanf_s("%f", &r); 
    if (5 > r || r > 50){ 
     printf("Pienin mitta on 5 cm ja suurin 50cm, anna uudelleen \n"); 
    } 

    v = PII*r*r*h; 
    printf("Ympyralierion tilavuus on: %f\n", v); 
} 
     else if (number == 2){ 

      printf("Valitsit ympyr„kartion \n"); 

    printf("Anna korkeus: "); 
    scanf_s("%f", &h); 
    if (5 > h || h > 50){ 
     printf("Pienin mitta on 5 cm ja suurin 50cm, anna uudelleen \n"); 
    } 
    printf("Anna sade: "); 
    scanf_s("%f", &r); 
    if (5 > r || r > 50){ 
     printf("Pienin mitta on 5 cm ja suurin 50cm, anna uudelleen \n"); 
    } 
    v = (PII*r*r*h)/3; 
    printf("Ympyrakartion tilavuus on: %f\n", v); 

    } 
} 
+4

У вас есть цикл while, который петли, пока значение h не находится между 5 и 50, но которое никогда не изменяет значение h в цикле, чтобы оно никогда не кончилось. –

+0

Я был бы счастлив, если бы вы исправили код:) – waleedd32

+0

Как @PaulTomblin уже писал: положите ваш printf/scanf внутри цикла и проверите «h < 5 || h > 50», возможно, будет проще читать ... Как это будет перевод От финского до английского тоже ;-) – Marged

ответ

2

Измените код таким образом:

do { 
    printf("Anna korkeus: \n"); 
    scanf_s("%f", &h); 

    if (h < 5 || h > 50) { 
    printf("Pienin mitta on 5 cm ja suurin 50cm, anna uudelleen \n"); 
    } 
} 
while(h < 5 || h > 50); 

В следующем шаге вы можете рассмотреть вопрос о перемещении избыточную проверку от h до функции, которая возвращает true или false в зависимости от ввода.

+0

он не работает, просто продолжает давать ошибку, «ошибка c2059: синтаксическая ошибка:« еще »,« IntelliSense ожидается »while», IntelliSense ожидается a '(' – waleedd32

+0

Вам предстоит долгий путь. Подсчитайте {/} ... – Marged

+0

вы можете просто исправить весь код и отправить мне, затем я могу узнать из него – waleedd32