Timelord Posted October 14, 2015 Report Share Posted October 14, 2015 Se da o matrice de caractere pe mai multe linii(liniile si coloanele au mereu aceeasi lungime).Am aflat numaraul de linii,coloane,iar cand am incercat sa le introduc intr-o matrice si sa le afisez imi arata toate linii,mai putin ultima din care imi afiseaza aproximativ jumatate.Sugestii legate de aceasta problema?#include <iostream>#include <fstream>#include <cstring>using namespace std;ifstream TestIn("test");int main(){ char Grid[1000][1000],s[1000]; int LungimeX,LungimeY,i,j; TestIn.getline(s,1000); //aflam lungimea randurilor/numarul coloanelor/lungimea X LungimeX=strlen(s); cout<<LungimeX<<endl;//aflam lungimea colonelor/numarul randurilor/lungimea Y while (!TestIn.eof()) { TestIn.getline(s,1000); LungimeY++;}cout<<LungimeY;//resetam flagul .eof pentru reciti fisierulTestIn.clear();TestIn.seekg (0, TestIn.beg);//introducem gridul intr-o matricefor(i=1;i<=LungimeY;i++){for(j=1;j<=LungimeX;j++){ TestIn.get(Grid[i][j]);}}for(i=1;i<=LungimeY;i++){for(j=1;j<=LungimeX;j++){ cout<<Grid[i][j];}} return 0;} Quote Link to comment Share on other sites More sharing options...
dekeeu Posted October 14, 2015 Report Share Posted October 14, 2015 (edited) Variabila LungimeY nu este setata corect.Numerotarea liniilor se face de la 0 , deci daca matricea ta va avea 3 randuri, variabila LungimeY va avea valoarea 2.Modifica cele 2 for-uri astfel incat sa incluzi toate liniile: for(i=0;i<=LungimeY;i++) { for(j=0;j<=LungimeX;j++) { TestIn.get(Grid[j]); } } for(i=0;i<=LungimeY;i++) { for(j=0;j<=LungimeX;j++) { cout<<Grid[j]; } } Edited October 14, 2015 by dekeeu Quote Link to comment Share on other sites More sharing options...
Byte-ul Posted October 14, 2015 Report Share Posted October 14, 2015 (edited) In primul rand seteaza LungimeY sa porneasca de la 1 sau pune TestIn.seekg (0, TestIn.beg); dupa ce gasesti numarul coloanelor.In al doilea rand, tie o sa-ti ia si caracterele \n cand folosestiTestIn.get(). Trebuie sa le ignori pe alea.Deci codul o sa arate ceva de genu:#include <iostream>#include <fstream>#include <cstring>using namespace std;ifstream TestIn("test");int main(){ char Grid[1000][1000],s[1000]; int LungimeX,LungimeY,i,j; TestIn.getline(s,1000); TestIn.seekg (0, TestIn.beg); //aflam lungimea randurilor/numarul coloanelor/lungimea X LungimeX=strlen(s); cout<<LungimeX<<endl;//aflam lungimea colonelor/numarul randurilor/lungimea Y while (!TestIn.eof()) { TestIn.getline(s,1000); LungimeY++;}cout<<LungimeY;//resetam flagul .eof pentru reciti fisierulTestIn.clear();TestIn.seekg (0, TestIn.beg);//introducem gridul intr-o matricefor(i=1;i<=LungimeY;i++){for(j=1;j<=LungimeX;j++){ TestIn.get(Grid[j]); if ((int)Grid[j] == 10) TestIn.get(Grid[j]);}}for(i=1;i<=LungimeY;i++){for(j=1;j<=LungimeX;j++){ cout<<Grid[j];}} return 0;} Edited October 14, 2015 by Byte-ul Quote Link to comment Share on other sites More sharing options...
Timelord Posted October 17, 2015 Author Report Share Posted October 17, 2015 Multam mult pentru ajutor ^___^ Quote Link to comment Share on other sites More sharing options...