Как сделать цикл программы C обратно, чтобы перепроверять для нового ввода? - PullRequest
0 голосов
/ 22 ноября 2018

Например, для этой программы, которая вычисляет уравнения степени 3, после вычисления уравнения она останавливается.как мне сделать так, чтобы он снова возвращался к началу без повторного выполнения?Я все еще новичок в этой платформе, так что я буду в твоих руках

#include < stdio.h >

int main() {
  int a, v, b, c, delt;
  float x1, x2;

  printf("\nIntroduceti cele 3 parametrii ecuatia: ");

  scanf("%d %d %d", & a, & b, & c);
  if (a != 0) {
    v = pow(b, 2);
    delt = v - (4 * a * c);

    if (delt >= 0) {

      delt = sqrt(delt);
      x1 = -(b + delt) / (2.0 * a);
      x2 = -(b - delt) / (2.0 * a);

      printf("\nValoara lui x1 este: %f", x1);
      printf("\n");
      printf("\nValoara lui x2 este: %f", x2);

    } else {
      printf("Ecuatia nu are soluti! \n");
    }

  } else if (a == 0) {
    printf("\nBLACKHOLE");
  }

  return 0;
}

Ответы [ 2 ]

0 голосов
/ 22 ноября 2018

Вы можете заключить все в цикл do-while и спросить пользователя, хочет ли он продолжить выполнение или нет, например:

int a,v,b,c,delt;
float x1,x2;
char choice;
do{
    printf("\nIntroduceti cele 3 parametrii ecuatia: ");
    scanf("%d %d %d", &a, &b, &c);
    if(a!=0)
    {
        v=pow(b, 2);
        delt = v-(4*a*c);

        if (delt>=0)
        {
            delt=sqrt(delt);
            x1=-(b+delt)/(2.0*a);
            x2=-(b-delt)/(2.0*a);

            printf("\nValoara lui x1 este: %f", x1);
            printf("\n");
            printf("\nValoara lui x2 este: %f", x2);
        }
        else
        {
            printf("Ecuatia nu are soluti! \n");
        }
    }
    else if(a==0)
    {
        printf("\nBLACKHOLE");
    }
    printf("\nEvaluate new equation?(y/n) ")
    scanf("%c",&choice)
}while(strcmp(choice,"y")==0);

return 0;

Блок внутри do{...} будет выполнен по крайней мереодин раз, затем пользователю будет предложено ввести символ (да / нет), чтобы решить, продолжать или нет.strcmp(string1,string2) сравнивает две строки и возвращает 0, если они равны, поэтому, если пользователь выбрал «y», strcmp вернет 0 и do-while будет выполнено снова.

0 голосов
/ 22 ноября 2018

Просто оберните ваш код в бесконечный цикл (while(1) { /* Your code here*/ }):

#include < stdio.h >

int main() {
  int a, v, b, c, delt;
  float x1, x2;

  while (1) {
    printf("\nIntroduceti cele 3 parametrii ecuatia: ");

    scanf("%d %d %d", & a, & b, & c);
    if (a != 0) {
      v = pow(b, 2);
      delt = v - (4 * a * c);

      if (delt >= 0) {

        delt = sqrt(delt);
        x1 = -(b + delt) / (2.0 * a);
        x2 = -(b - delt) / (2.0 * a);

        printf("\nValoara lui x1 este: %f", x1);
        printf("\n");
        printf("\nValoara lui x2 este: %f", x2);

      } else {
        printf("Ecuatia nu are soluti! \n");
      }

    } else if (a == 0) {
      printf("\nBLACKHOLE");
    }
  }

  return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...