Всем привет!
Пытаюсь запустить тесты в авроре,но после исчезновения соответствующего значка загрузки вылезает это
Кто может помочь с этой проблемой?
Задание 3_2_5_1
Заранее спасибо!
Ну код в студию. Ибо с простым логом можно понять только одно: время работы программы выходит за какието рамки. Может вообще бесконечный цикл, или дедлок.
#include <stdlib.h>
#include <stdio.h>
#include <iostream>
using namespace std;
class Calculator{
private:
int x,y,i=1;
char z;
public:
Calculator(int x,char z,int y){
this->x=x;
this->z=z;
this->y=y;
Something(x,z,y);
}
void Something(int& x, char& z,int& y){
while(z!='C'){
if(i>1){
cin>>z;
if(z=='C'){
break;
}
cin>>y;
}
if(z=='*'){
Multiply(x,y);
}
if(z=='+'){
Plus(x,y);
}
if(z=='-'){
Minus(x,y);
}
if(z=='%'){
Percent(x,y);
}
}
}
void Multiply(int& x,int& y){
x*=y;
Cout(x);
}
void Plus(int& x,int& y){
x+=y;
Cout(x);
}
void Minus(int& x,int& y){
x-=y;
Cout(x);
}
void Percent(int& x,int& y){
x%=y;
Cout(x);
}
void Cout(int& x){
if(!(i%3)){
if(i>3){
cout<<endl;
}
cout<<x;
cout<<endl;
}
}
~Calculator(){
}
};
int main()
{
int x,y;
char z;
cin>>x>>z>>y;
Calculator a(x,z,y);
}
Ну тут отсутствует 1 include
void Multiply(int& x, int& y)
{
x = y;
Cout(x);
}
Тут пропущен знак умножени, вместо *= проcто =
while (z != 'C')
{
if (i > 1)
{
cin >> z;
if (z == 'C')
{
break;
}
cin >> y;
}
if (z =='*')
{
Multiply(x, y);
}
if (z == '+')
{
Plus(x, y);
}
if (z == '-')
{
Minus(x, y);
}
if (z == '%')
{
Percent(x, y);
}
}
Вот тут банальное зацикливание, i всегда равно 1 и нигде не меняется. Из-за этого аврора выдает ошибку
void Cout(int& x)
{
if (!(i % 3))
{
if (i > 3)
{
cout << endl;
}
cout << x;
cout << endl;
}
}
Тут я вовсе не понимаю что за специфическая реализация вывода. Нужно смотреть задание.
Не знаю зачем внутри класса передавать параметры класса, когда они хранятся в классе. Это какое-то извращение…
Мельком посмотрел, может что упустил.
И ещё, лучше прикладывай код файлом, а не так как выше.
1 лайк