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


Karma: 0
Deconectat Deconectat

Mesaje: 4



Vezi Profilul
« : Ianuarie 21, 2007, 19:28:33 »

Citat din mesajul lui: Raport evaluator
Eroare de compilare:
In file included from /usr/include/c++/3.3/backward/fstream.h:31,
                 from user.cpp:1:
/usr/include/c++/3.3/backward/backward_warning.h:32:2: warning: #warning This file includes at least one deprecated or antiquated header. Please consider using one of the 32 headers found in section 17.4.1.2 of the C++ standard. Examples include substituting the <X> header for the <X.h> header for C++ includes, or <sstream> instead of the deprecated header <strstream.h>. To disable this warning use -Wno-deprecated.
user.cpp: In function `int main()':
user.cpp:20: error: name lookup of `i' changed for new ISO `for' scoping
user.cpp:18: error:   using obsolete binding at `i'
user.cpp:29:2: warning: no newline at end of file
Eroare de compilare


Proababil sunt eu foaaarte greu de cap, dar chiar n-am inteles ce am gresit!
Acesta e programul:
Cod:
#include <fstream.h>

int m,n,r,c,a[100][100],loc;

ifstream f ("elimin.in");
ofstream g ("elimin.out");

void citeste()
{f>>m>>n>>r>>c;
for (int x=0;x<m;x++)
  for (int y=0;y<n;y++)
    f>>a[x][y];
}

void elimlin()
{int suma=0;
for (int j=0;j<n;j++)
  suma=suma+a[0][j];
int minim=suma;
for (int i=0;i<m;i++)
  {suma=0;
   for (j=0;j<n;j++)
suma=suma+a[i][j];
   if (suma>=0)
if (suma<=minim) {minim=suma;loc=i;}
  }
for (i=loc;i<m-1;i++)
  for (j=0;j<n;j++)
a[i][j]=a[i+1][j];
m--;
}

void elimcol()
{int suma=0;
for (int j=0;j<m;j++)
  suma=suma+a[j][0];
int minim=suma;
for (int i=0;i<m;i++)
  {suma=0;
   for (j=0;j<n;j++)
suma=suma+a[j][i];
   if (suma>=0)
if (suma<=minim) {minim=suma;loc=i;}
  }
for (i=loc;i<n-1;i++)
  for (j=0;j<m;j++)
a[j][i]=a[j][i+1];
n--;
}



int main()
{citeste();
for (int i=0;i<r;i++) elimlin();
for (i=0;i<c;i++) elimcol();
int suma=0;
for (i=0;i<m;i++)
 for (int j=0;j<n;j++)
  suma=suma+a[i][j];
g<<suma;
return 0;
  }


Nu ma intereseaza faptul ca programul isi indeplineste sau nu cerintele... vreau sa stiu ce am gresit, pentru a nu mai repeta greseala [de compilare]!
« Ultima modificare: Ianuarie 21, 2007, 21:07:39 de către Valentin Stanciu » Memorat
looky
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 4



Vezi Profilul
« Răspunde #1 : Ianuarie 21, 2007, 19:31:21 »

In program, in functia citeste scrie " a de x de y"
Memorat
bogdan2412
Echipa infoarena
Nu mai tace
*****

Karma: 410
Deconectat Deconectat

Mesaje: 951



Vezi Profilul
« Răspunde #2 : Ianuarie 21, 2007, 19:32:18 »

Daca ai declarat i intr-un for.. dupa ce se termina blocul forului variabila i nu va mai exista.. Acesta este comportamentul compilatorului GCC Tongue
Memorat
blasterz
Nu mai tace
*****

Karma: 92
Deconectat Deconectat

Mesaje: 255



Vezi Profilul
« Răspunde #3 : Ianuarie 21, 2007, 19:37:54 »

ai facut ceva de genu:

for(int i=1;i<=n;i++)
{

}
for(i=1;i<=n;i++)

sub linux daca declari i in cadrul unei structuri repetitive( for ), el va fi valabil doar in acea structura repetitiva.
Memorat
blasterz
Nu mai tace
*****

Karma: 92
Deconectat Deconectat

Mesaje: 255



Vezi Profilul
« Răspunde #4 : Ianuarie 21, 2007, 19:39:53 »

Daca ai declarat i intr-un for.. dupa ce se termina blocul forului variabila i nu va mai exista.. Acesta este comportamentul compilatorului GCC Tongue


se pare ca am raspuns la intrebare aproximativ in acelasi timp Very Happy
Memorat
looky
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 4



Vezi Profilul
« Răspunde #5 : Ianuarie 21, 2007, 20:18:29 »

Si acesta e principalul motiv pentru care eu am pierdut si n-am scos nici un punct...

Eeh... c`est la vie!

Alte greseli mai gasiti pe acolo? Very Happy

PS: Ca ca mearga corect, ar trebui sa decalr de fiecare data "int i"
Memorat
svalentin
Nu mai tace
*****

Karma: 88
Deconectat Deconectat

Mesaje: 704



Vezi Profilul
« Răspunde #6 : Ianuarie 21, 2007, 21:09:52 »

ca sa meraga, poti fie sa redeclari pentru fiecare for, fie sa declari in afara forului:
Cod:
for (int i=0; i<n; ++i) {<fa ceva>}
for (int i=0; i<m; ++i) {<fa ceva>}
Cod:
int i;
for (i=0; i<n; ++i) {<fa ceva>}
for (i=0; i<m; ++i) {<fa ceva>}

more info (poate te ajuta):
Cod:
int i=2;
for (int i=0; i<4; ++i) printf("%d", i);
printf("%d", i);
ar trebui sa afiseze: 01232 (0123 din structura repetitiva for)
Dar nu recomad sa folosesti asa ceva - unele compilatoare se comporta diferit de altele
« Ultima modificare: Ianuarie 21, 2007, 21:12:59 de către Valentin Stanciu » Memorat
looky
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 4



Vezi Profilul
« Răspunde #7 : Ianuarie 21, 2007, 22:25:50 »

Cat despre prima parte a erori... ce puteti spune?
Citat
In file included from /usr/include/c++/3.3/backward/fstream.h:31,
                 from user.cpp:1:
/usr/include/c++/3.3/backward/backward_warning.h:32:2: warning: #warning This file includes at least one deprecated or antiquated header. Please consider using one of the 32 headers found in section 17.4.1.2 of the C++ standard. Examples include substituting the <X> header for the <X.h> header for C++ includes, or <sstream> instead of the deprecated header <strstream.h>. To disable this warning use -Wno-deprecated.
Memorat
svalentin
Nu mai tace
*****

Karma: 88
Deconectat Deconectat

Mesaje: 704



Vezi Profilul
« Răspunde #8 : Ianuarie 21, 2007, 23:05:37 »

e un warning, nu e eroare, deci poti sa nu il iei in considerare
spune sa folosesti varianta noua de librari, fara .h in coada: #include <fstream>
Memorat
florin.moldovanu
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 3



Vezi Profilul
« Răspunde #9 : Februarie 11, 2007, 19:43:33 »

salut,
eu am obtinut eroarea: Killed by signal 11(SIGSEGV).
am facut un test simplu cu urmatorul program:
Cod:
#include<stdio.h>

int main()
{FILE *f,*g;
f=fopen("a.in","r");
g=fopen("b.out","w");
fclose(g);
fclose(f);
return 0;
}

Pentru programelul asta obtin aceeasi eroare: Killed by signal 11(SIGSEGV).
Cred ca sunt obosit si nu mai vad. De ce imi da eroarea asta?
 
« Ultima modificare: Februarie 12, 2007, 19:23:36 de către Valentin Stanciu » Memorat
wickedman
Echipa infoarena
Nu mai tace
*****

Karma: 227
Deconectat Deconectat

Mesaje: 670



Vezi Profilul WWW
« Răspunde #10 : Februarie 14, 2007, 09:31:01 »

Pentru programelul asta obtin aceeasi eroare: Killed by signal 11(SIGSEGV).
Cred ca sunt obosit si nu mai vad. De ce imi da eroarea asta?

unul sau amandoua apeluri fopen() ti-a intors NULL, caz in care nu poti da fclose()!
Memorat
Pagini: [1]   În sus
  Imprimă  
 
Schimbă forumul:  

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