Titlul: Iesire din matrice
Scris de: bieltz vlad din Decembrie 17, 2014, 14:14:49
http://forum.softpedia.com/topic/999507-temaiesire-din-matrice/page__hl__+iesire%20+din%20+matrice#entry16352901
Sunt cls X.
Titlul: Răspuns: Iesire din matrice
Scris de: George Marcus din Decembrie 17, 2014, 15:00:54
Ti-as sugera sa te obisnuiesti sa scrii cod mai frumos.
Titlul: Răspuns: Iesire din matrice
Scris de: bieltz vlad din Decembrie 17, 2014, 19:18:49
Am rectificat codul pentru cazul cand numaru negativ nu se afla ,,pe margine".Tot nu merge.Idei. #include <iostream> #include <fstream>
using namespace std;
int main() { ifstream f("turist.in"); int a[10][10],n,m,i,j,l=0,v=0,gresit,Sminima=3200,nrlinie,nrcoloana,doarS; f>>n>>m; for(i=1;i<=n;i++)for(j=1;j<=m;j++)f>>a[i][j]; for(i=2;i<n;i++){for(j=2;j<m;j++) { l=i;v=j;gresit=0;doarS=0; if(a[i][j]<0) { while(v>=1&&gresit==0) //orizonatal stanga { v--; if(a[l][v]<0)gresit=1; else doarS+=a[l][v]; } if(gresit==0&&doarS<Sminima) { Sminima=doarS;nrcoloana=j;nrlinie=i; } l=i;v=j; doarS=0;gresit=0;
while(v<=m&&gresit==0) //orizontal dreapta { v++; if(a[l][v]<0)gresit=1; else doarS+=a[l][v]; } if(gresit==0&&doarS<Sminima) { Sminima=doarS;nrcoloana = j;nrlinie=i; } l=i;v=j; doarS=0;gresit=0;
while(l>=1&&gresit==0) // vertical in jos { l--; if(a[l][v]<0)gresit=1; else doarS+=a[l][v]; } if(gresit==0&&doarS<Sminima) { Sminima=doarS;nrcoloana = j;nrlinie=i;
} l=i;v=j; doarS=0;gresit=0; while(l<=n&&gresit==0) // vertical in sus { l--; if(a[l][v]<0)gresit=1; else doarS+=a[l][v]; } if(gresit==0&&doarS<Sminima) { Sminima=doarS;nrcoloana = j;nrlinie=i;
} } }} ofstream g("turist.out"); g<<Sminima<<endl<<nrlinie<<endl<<nrcoloana;
}
Titlul: Răspuns: Iesire din matrice
Scris de: George Marcus din Decembrie 18, 2014, 00:26:56
Ce nu merge? Daca vrei sa verifici si elementele de pe margine poti pur si simplu... sa o faci. for i:=1->n, for j:=1->m. Clarifica putin.
Titlul: Răspuns: Iesire din matrice
Scris de: bieltz vlad din Decembrie 18, 2014, 08:38:55
nu imi afiseaza ce trebuie.la cum e exemplul ala din poza imi afiseaza 520 in loc de -8 iar randul coloanei imi da 0
Titlul: Răspuns: Iesire din matrice
Scris de: George Marcus din Decembrie 18, 2014, 12:58:28
O greseala e ca faci l-- in ultimul while. In rest, am schimbat putin while-urile. Spor. #include <iostream> #include <fstream>
using namespace std;
int main() { ifstream f("turist.in"); int a[10][10],n,m,i,j,l=0,v=0,gresit,Sminima=3200,nrlinie,nrcoloana,doarS; f>>n>>m; for(i=1;i<=n;i++)for(j=1;j<=m;j++)f>>a[i][j]; for(i=2;i<n;i++){for(j=2;j<m;j++) { l=i;v=j;gresit=0;doarS=0; if(a[i][j]<0) { v--; while(v>=1&&gresit==0) //orizonatal stanga { if(a[l][v]<0)gresit=1; else doarS+=a[l][v]; v--; } if(gresit==0&&doarS<Sminima) { Sminima=doarS;nrcoloana=j;nrlinie=i; } l=i;v=j; doarS=0;gresit=0;
v++; while(v<=m&&gresit==0) //orizontal dreapta { if(a[l][v]<0)gresit=1; else doarS+=a[l][v]; v++; } if(gresit==0&&doarS<Sminima) { Sminima=doarS;nrcoloana = j;nrlinie=i; } l=i;v=j; doarS=0;gresit=0;
l--; while(l>=1&&gresit==0) // vertical in jos { if(a[l][v]<0)gresit=1; else doarS+=a[l][v]; l--; } if(gresit==0&&doarS<Sminima) { Sminima=doarS;nrcoloana = j;nrlinie=i;
} l=i;v=j; doarS=0;gresit=0; l++; while(l<=n&&gresit==0) // vertical in sus { if(a[l][v]<0)gresit=1; else doarS+=a[l][v]; l++; } if(gresit==0&&doarS<Sminima) { Sminima=doarS;nrcoloana = j;nrlinie=i;
} } }} ofstream g("turist.out"); g<<Sminima<<endl<<nrlinie<<endl<<nrcoloana;
}
Titlul: Răspuns: Iesire din matrice
Scris de: bieltz vlad din Decembrie 18, 2014, 14:41:18
Multumesc frumos.Ma asteptam sa fi gresit mai mult :)))
|