2016-06-06 6 views
-3

Программа должна быть такой: 1-запросить серийное, а затем параллельное сопротивление (разные классы) 2-проходные значения Eq_R_Series и Eq_R_Paralel (после их вычисления) на эквивалентное сопротивление, которое будет вычислять Eq_R_Total 3-Показать Eq_R_Total.Запросить номера, используя классы

поэтому мне нужна основная функция и 3 класса (1 из классов нуждается в информации от другой 2).

  class Serie 
{ 
private: 
    int i, n = 4; 
    float R_Eq_S; 
    float r[4]; 
public: 
    float serie() 
    { 
     for (int i = 0; i < n; i++) 
     { 
      cout << "Resistence " << i + 1 << " "; 
      cin >> r[i]; 
      R_Eq_S = R_Eq_S + r[i]; 

     } 
     return R_Eq_S; 
    } 
}; 
int main() 
{ 
    Serie s; 
    s.serie(); 
} 

Так я имею программу без ошибок сейчас (не значит Theres ничего плохого), он работает и просит меня ввести 1-й, но после того, как Сопротивление, что он не будет продолжать цикл.

(я «просто» нужна помощь «ссылка» класс для основного и главного класса.)

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

class Series 
{ 
private: 
    float R1, R2, R3, R4; 
public: 
    float R_Eq_S; 
    float series() 
    { 
     cout << "Resistance1= "; 
     cin >> R1; 
     cout << "Resistance2= "; 
     cin >> R2; 
     cout << "Resistance3= "; 
     cin >> R3; 
     cout << "Resistance4= "; 
     cin >> R4; 
     R_Eq_S = R1 + R2 + R3 + R4; 
     return R_Eq_S; 
    } 
}; 
class Parallel{ 
private: 
    float R5, R6; 
public: 
    float R_Eq_P; 
    float parallel(){ 
     cout << "\nResistance5= "; 
     cin >> R5; 
     cout << "Resistance6= "; 
     cin >> R6; 
     R_Eq_P = (R5*R6)/(R5 + R6); 
     return R_Eq_P; 
    } 
}; 
class Equivalent{ 
private: 
    float R_Eq; 
public: 
    float r_eq() 
    { 
     Series s; 
     Parallel p; 
     R_Eq = s.series()+ p.parallel(); 
     return R_Eq; 
    } 

}; 
int main() 
{ 

    Equivalent r; 
    cout<<"\n\nR_Eq= "<<r.r_eq()<<endl; 

} 
+0

Вы можете отредактировать свое сообщение, чтобы вынуть все лишнее свободное пространство. Пока вы это делаете, обязательно пометьте его тегом [tag: C++]. – Teepeemm

+0

Я имею в виду, что в этом много чего. Для начала вы пытаетесь индексироваться в 'r', но это всего лишь целое число. Поэтому вы не можете этого сделать. – Tyler

+0

Параллель имеет три эль. – nicomp

ответ

0

@Tyler указал это в своем комментарии. В вашем классе определение r объявлено как тип int. Затем в выражении r[i], i должен быть указателем (это обычная симметрия C/C++: a[i] - это то же самое, что и *(a + i), поэтому один из них должен быть разыменованным, а другой - числом, но не имеет значения, какой из них который). Ваш i снова является int. Во-вторых, я не совсем понимаю, как ваш код может компилироваться, serie - это частный метод, но вы вызываете его вне контекста класса.

+0

Да, вы правы. я заметил, что после того, как я исправлю (я думаю) часть r []. Я исправлю это, и я могу запустить программу, но только первое сопротивление. петля заканчивается там – Kriptis

+0

Да, потому что вы «возвращаетесь» в тело цикла, поэтому никогда не проходит мимо самой первой итерации. – bipll

+0

f me .. эти простые ошибки делают все различие. спасибо Теперь я использую базовый подход, задавая значения один за другим, и он работает. время, чтобы адаптировать его к циклу для – Kriptis

Смежные вопросы