Witam, robię zadanie: LINK
Stworzyłem kodzik:
#include <iostream>
using namespace std;
int main()
{
int n;
cin>>n;
string q;
double w = 0;
double x;
bool z = false;
int r;
for(int i=0; i<n; i++)
{
cin>>q;
if((q[0]!='+') && (q[0]!='-'))
{
if(q[0]=='+')
{
z = false;
r = 1;
x = 0;
for(int j=1; j<q.length(); j++)
{
if(q[j]==',')
{
w+=x;
x = 0;
z = true;
}
else
{
if(!z)
{
x = x * 10 + q[j] - '0';
}
else
{
x = x + ((q[j]-'0') / 10^r);
}
}
}
if(z)
{
w+=x;
}
}
else
{
z = false;
r = 1;
x = 0;
for(int j=1; j<q.length(); j++)
{
if(q[j]==',')
{
w-=x;
x = 0;
z = true;
}
else
{
if(!z)
{
x = x * 10 + q[j] - '0';
}
else
{
x = x + ((q[j]-'0') / 10^r);
}
}
}
if(z)
{
w-=x;
}
}
}
else
{
for(int j=0; j<q.length(); j++)
{
if(q[j]==',')
{
w+=x;
x = 0;
z = true;
}
else
{
if(!z)
{
x = x * 10 + q[j] - '0';
}
else
{
x = x + ((q[j]-'0') / 10^r);
}
}
}
if(z)
{
w+=x;
}
}
}
cout<<w<<endl;
}
Dla testu przykładowego, wypisuje 6 bez żadnego przecinka i innych. Dlaczego? Czy to wina mojego algorytmu? Czy jakiegoś błędu w pisaniu?
Pozdrawiam