Как исправить ошибку "недопустимый else без парного if"?

Рейтинг: 0Ответов: 3Опубликовано: 20.01.2015

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

#include "stdafx.h"
#include <iostream>
using namespace std;
int main () {
double x, y, R;
cout<<" x = ";
cin>>x;
cout<<" y = ";
cin>>y;
if (x!=3 || y!=-5){R =(x+y)/((x-3)*(y+5));} {cout<<" R =  "<<R<<"\n";} 
else {cout<<" Ошибка, деление на ноль ";}
system ("pause");
return 0;
}

Ответы

▲ 5
if (x!=3 || y!=-5)
{
  R =(x+y)/((x-3)*(y+5));
} 
{
  cout<<" R =  "<<R<<"\n";
} 
else {
  cout<<" Ошибка, деление на ноль ";
}

Ну это же явно не валидное условие. Нужно убрать пару }{

if (x!=3 || y!=-5)
{
  R =(x+y)/((x-3)*(y+5));
  cout<<" R =  "<<R<<"\n";
} 
else {
  cout<<" Ошибка, деление на ноль ";
}
▲ 2

Ошибка в том, что у Вас формально две части then. Выбросив лишне, получим такое:

if (){} {} 
else {}

а это неверный синтаксис. Судя по коду, там просто нужно удалить } {. Удалив все лишнее, будет где-то так:

#include <iostream>
using namespace std;
int main () {
  double x, y, R;
  cout<<" x = ";
  cin>>x;
  cout<<" y = ";
  cin>>y;
  if (x!=3 || y!=-5) {
    R =(x+y)/((x-3)*(y+5));
    cout<<" R =  "<<R<<"\n";
  } 
  else {
    cout<<" Ошибка, деление на ноль ";
  }
  return 0;
}
▲ 1

Я так понимаю, в строке

if (x!=3 || y!=-5){R =(x+y)/((x-3)*(y+5));} {cout<<" R =  "<<R<<"\n";}

фигурные скобки } { посередине лишние.

P.S. Добрый совет: не ленитесь аккуратно форматировать код, тогда такие ошибки станут практически невозможны.