Member 13061218 Ответов: 3

Можете ли вы вычислить ошибку кодирования ?


#include<stdio.h>

int main(void)

{
        float dis;
        float cost, od, odPay;
        char vehicle;

        printf("Insert ur vehicle ( V / C / T ) : ");
        scanf("%c", &vehicle);
        printf("Insert distance that u travelled : ");
        scanf("%f", &dis);


         if (vehicle == 'V')
                if (dis <= 50)
                        cost = 45.50 * dis;
                        printf("Charge for travel is %.2f \n", cost);
                else
                        od = dis - 50;
                        odPay = od *  45.00 ;
                        cost =( 45.50 * 50 ) + odPay;
                        printf("Charge for travel is %.2f \n", cost);
        else  if (vehicle == 'C')
                if (dis <= 50)
                        cost = 55.00 * dis;
                        printf("Charge for travel is %.2f \n", cost);
                else
                        od = dis - 50;
                        odPay = od *  56.50 ;
                        cost =( 55.00 * 50 ) + odPay;
                        printf("Charge for travel is %.2f \n", cost);
          else  if (vehicle == 'T')
                if (dis <= 50)
                        cost = 50.50 * dis;
                        printf("Charge for travel is %.2f\n", cost);
                else
                        od = dis - 50;
                        odPay = od *  50.00 ;
                        cost =( 50.50 * 50 ) + odPay;
                        printf("Charge for travel is %.2f \n", cost); 


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

Это ошибка, которая отображается при компиляции

vehicle. c: в функции " main’:
автомобиля.с:20:3: ошибка: ‘еще’ без ‘если’
ещё
^~~~
автомобиля.ц:25:2: ошибка: ‘еще’ без ‘если’
иначе если (транспортное средство == 'C')
^~~~
автомобиля.с:29:17: ошибка: ‘еще’ без ‘если’
ещё
^~~~
C: 34: 4: ошибка: "else" без предыдущего ‘if’
иначе если (транспортное средство == 'T')
^~~~
C: 38:3: ошибка: "else" без предыдущего ‘if’
ещё

[no name]

Ваша ошибка заключается в том, что вы не отформатировали свой код так, чтобы он был читабельным, и вы, по-видимому, не знаете, как использовать фигурные скобки {}

Richard MacCutchan

Купите себе приличную книгу по программированию на языке Си или перечитайте конспекты курса.

3 Ответов

Рейтинг:
2

OriginalGriff

Да. А ты можешь?
Это довольно очевидно, и вы повторяете одну и ту же ошибку множество раз.
Формат Ан if заявление есть:

if(condition)
   statement
Где statement может быть одно утверждение:
if (condition)
   DoSomethingSimple;
или составной оператор:
if (condition)
   {
   DoSomethingSimple;
   DoSomethingElseSimple;
   }

Итак, когда вы пишете это:
if (vehicle == 'V')
if (dis <= 50)
cost = 45.50 * dis;
printf("Charge for travel is %.2f \n", cost);
else
компилятор не может понять, что вы пытаетесь сделать.
Если я сделаю отступ, это будет гораздо более очевидно:
if (vehicle == 'V')
   if (dis <= 50)                               // This is a simple statement for the previous if
      cost = 45.50 * dis;                       // This is a simple statement for the second if
printf("Charge for travel is %.2f \n", cost);   // This is outside both ifs
else                                            // This has nothing to match with.

Всегда используйте составные операторы, особенно когда вы начинаете - это делает его намного более ясным и легким для изменения.
if (vehicle == 'V')
   {
   if (dis <= 50)
      {
      cost = 45.50 * dis;
      printf("Charge for travel is %.2f \n", cost);
      }
   else
      {
      ...
И сделайте отступ в своем коде!


Рейтинг:
1

Rick York

Проблема в том, что вы не включили фигурные скобки для предложений с несколькими операторами в свои условные выражения.

Другими словами - вы должны использовать этот тип формата :

if( expression )
{
   // statements ... (one or many, doesn't matter)
}
else if( anotherExpression )
{
   // statements ... (one or many, doesn't matter)
}
else
{
   // statements ... (one or many, doesn't matter)
}


/- Наверное, я был медленнее на жеребьевке.


Рейтинг:
0

Patrice T

Вам нужно научиться пользоваться брекетами {} в исходном коде C/C++/C#. Тогда вы поймете, в чем проблема.
Это то,что вы узнаете в первый день занятий C 101. Проверь свои записи.