Pagini: [1]   În jos
  Imprimă  
Ajutor Subiect: Iesire din matrice  (Citit de 7234 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
VladBtz
Strain
*

Karma: -3
Deconectat Deconectat

Mesaje: 29



Vezi Profilul
« : 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.
Memorat
PlayLikeNeverB4
Nu mai tace
*****

Karma: 212
Deconectat Deconectat

Mesaje: 721



Vezi Profilul
« Răspunde #1 : Decembrie 17, 2014, 15:00:54 »

Ti-as sugera sa te obisnuiesti sa scrii cod mai frumos.
« Ultima modificare: Decembrie 18, 2014, 12:39:00 de către George Marcus » Memorat
VladBtz
Strain
*

Karma: -3
Deconectat Deconectat

Mesaje: 29



Vezi Profilul
« Răspunde #2 : Decembrie 17, 2014, 19:18:49 »

Am rectificat codul pentru cazul cand numaru negativ nu se afla ,,pe margine".Tot nu merge.Idei.

Cod:
#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;

}
« Ultima modificare: Decembrie 17, 2014, 21:38:33 de către bieltz vlad » Memorat
PlayLikeNeverB4
Nu mai tace
*****

Karma: 212
Deconectat Deconectat

Mesaje: 721



Vezi Profilul
« Răspunde #3 : 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.
Memorat
VladBtz
Strain
*

Karma: -3
Deconectat Deconectat

Mesaje: 29



Vezi Profilul
« Răspunde #4 : 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
Memorat
PlayLikeNeverB4
Nu mai tace
*****

Karma: 212
Deconectat Deconectat

Mesaje: 721



Vezi Profilul
« Răspunde #5 : Decembrie 18, 2014, 12:58:28 »

O greseala e ca faci l-- in ultimul while. In rest, am schimbat putin while-urile. Spor.

Cod:
#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;

}
Memorat
VladBtz
Strain
*

Karma: -3
Deconectat Deconectat

Mesaje: 29



Vezi Profilul
« Răspunde #6 : Decembrie 18, 2014, 14:41:18 »

Multumesc frumos.Ma asteptam sa fi gresit mai mult Smile))
Memorat
Pagini: [1]   În sus
  Imprimă  
 
Schimbă forumul:  

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