Pagini: [1]   În jos
  Imprimă  
Ajutor Subiect: Eroare de compilare  (Citit de 2767 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
Daniell
Strain


Karma: -1
Deconectat Deconectat

Mesaje: 2



Vezi Profilul
« : Februarie 18, 2016, 22:38:22 »

De ce urmatorul cod imi merge cand introduc datele manual,dar imi da eroare de compilare in evaluatorul de pe infoarena?
Multumesc anticipat!

http://www.infoarena.ro/job_detail/1605358

Cod:
#include <fstream>
 
using namespace std;
ifstream fin("arc.in");
ofstream fout("arc.out");
int v,c,n,a[10000],b[10000],i,prev,k,p=1,mx=4,poz,aux,s;
int main()
{fin>>v>>n;
if(v==1)
{for(i=1;i<=n;i++)
 {fin>>c;
 if(c!=prev)
 
    {
        prev=c;
 k++;
 }
 
 }
fout<<k;
}
else{
k=0;
fin>>c;
prev=c;
if(c!=prev)
    {
        a[p]=prev;
        b[p]=k;
        prev=c;
        k=0;
        p++;
        }
else if(c==prev)
k++;
for(i=2;i<=n;i++)
 
 
 
{fin>>c;
if(c!=prev)
    {
        a[p]=prev;
        b[p]=k;
        prev=c;
        k=1;
        p++;
        }
else if(c==prev)
{k++;}
}
a[p]=c;b[p]=k;
n=p;
while(mx>=3){mx=-1;
 
for(i=1;i<=n;i++){
        if(b>mx)
        {mx=b;poz=i;}}
 
if(mx>=3){
    a[poz]=0;b[poz]=0;
for(i=poz;i<=n-1;i++){
    aux=a;
a=a[i+1];
a[i+1]=aux;
aux=b;
b=b[i+1];
b[i+1]=aux;}
    n--;
for(i=1;i<=n-1;i++)
    {
    if(a==a[i+1]){
            b+=b[i+1];
    a[i+1]=0;
    b[i+1]=0;
    for(i=i+1;i<=n;i++)
        {
            aux=a;
a=a[i+1];
a[i+1]=aux;
aux=b;
b=b[i+1];
b[i+1]=aux;}
n--;
break;}
    }
}
else break;
}
if(n==0)fout<<"0";
else{
        for(i=1;i<=n;i++)
        s+=b;
fout<<s<<"\n";
        for(i=1;i<=n;i++){
    while(b!=0)
        {b--;
    fout<<a<<"\n";}}
}
}
return 0;
}
Memorat
GavrilaVlad
Nu mai tace
*****

Karma: 219
Deconectat Deconectat

Mesaje: 222



Vezi Profilul
« Răspunde #1 : Februarie 18, 2016, 23:58:30 »

In namespace-ul std exista o functie numita tot prev, ca variabila ta. Atunci cand incerci sa compilezi si accesezi variabila prev, compilatorul nu stie daca te referi la functia din std sau la variabila ta (desi pentru tine e evident pe care o vrei). Solutia corecta ar fi sa nu mai folosesti tot namespace-ul prin
Cod:
using namespace std;
...
fin>>x;
ci sa apelezi functiile din namespace astfel
Cod:
std :: fin>>x;

Imi dau seama ca asta e incomod (nici eu nu fac asa Embarassed ), asa ca o solutie alternativa ar fi sa iti numesti variabilele "prv" si "nxt" cand ai vrea "prev" si "next" (si cu next e aceeasi problema).

Cat despre de ce la tine merge si pe infoarena nu, probabil tu ai un compilator mai vechi / pe un standard mai vechi C++ unde "prev" si "next" nu sunt functii in std.
Memorat
Pagini: [1]   În sus
  Imprimă  
 
Schimbă forumul:  

Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines