problem z funkcją

0

<ort> Napisałem funkcję zwracającą wartość maks, ale jest problem gdyż pojawia się konsola i zaraz wyskakuje błąd.Funkcja ma zwierać w sobie zagnieżdżoną strukturę. Proszę o sprawdzenie, gdyż zależy mi na czasie

[code=C++]
struct indeks{
int im;
int jm;
};
struct ekstrema{
int max,min;
indeks ijmin, ijmax;
};

ekstrema maxmin(int t[n][m])
{
ekstrema wartosc_max;
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)

    if(t[i][j]>t[wartosc_max.ijmax.im][wartosc_max.ijmax.jm])
    {
        wartosc_max.max=t[i][j];
    }

}return wartosc_max;

}
[/code]</ort>

0

1.Jaki błąd?
2.ekstrema maxmin(int t[n][m]) wartości n oraz m są stałymi lub są to makra, oczywiście?

0

wartosci n i m są stałymi

0

"gdyż pojawia się konsola i zaraz wyskakuje błąd."

zapewne używasz wskaźnika na który nic nie pokazuję.

0

Nie uzywam tam wskaźników

0

wartosc_max.ijmax.im zawiera w sobie śmieci, zainicjalizuj na samym początku zerem. Jeżeli to nie to. To musisz pokazać cały kod.

0

To nieiestety nie to dobra oto cały kod(zadanie zawierało też inne podpunkty dlatego taki długi):

#include <iostream>
#include <fstream>
#include <iomanip>
#include <cstdlib>
#include <ctime>
using namespace std;
const int n=5;
const int m=6;
void wypelnij(int t[n][m],int a, int b);
void wypisz(int t[n][m]);
void indeksymaks(int t[n][m], int &imaks, int &jmaks);
struct indeks{
int im;
int jm;
};
indeks maks2(int t[n][m]);
void indeksymaks3(int t[n][m], indeks &ind);
void wypiszind(indeks ind);
struct ekstrema{
int max,min;
indeks ijmin, ijmax;
};
ekstrema maxmin(int t[n][m]);

int main()
{
srand(time(NULL));
indeks id,ind;
ekstrema wartosc_max;
int t[n][m];
int im,jm;
int imaks,jmaks;
wypelnij(t,3,60);
wypisz(t);
indeksymaks(t,imaks,jmaks);
id=maks2(t);
cout<<endl<<id.im<<endl<<id.jm<<endl;
indeksymaks3(t,ind);
wypiszind(ind);
cout<<endl;
maxmin(t);
cout<<wartosc_max.max;

return 0;
}
void wypelnij(int t[n][m],int a,int b)
{
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
t[i][j]=(rand()%(b-a)+a);
}
}
}
void wypisz(int t[n][m])
{
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
cout<<t[i][j]<<" ";
}cout<<endl;
}

}
void indeksymaks(int t[n][m],int &imaks, int &jmaks)
{
imaks=0;
jmaks=0;
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
if(t[i][j]>t[imaks][jmaks])
{
imaks=i;
jmaks=j;
}
}
}cout<<endl<<imaks<<endl<<jmaks<<endl;
}

indeks maks2( int t[ n ][ m ] )
{
indeks id;
id.im = 0;
id.jm = 0;
for( int i = 0; i < n; i++ )
{
for( int j = 0; j < m; j++ )
{
if( t[ i ][ j ] > t[ id.im ][ id.jm ] )
{
id.im = i;
id.jm= j;
}
}
} return id;
}

void indeksymaks3(int t[n][m], indeks &ind)
{
ind.im=0;
ind.jm=0;
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
if(t[i][j]>t[ind.im][ind.jm])
{
ind.im=i;
ind.jm=j;
}
}

}

}

void wypiszind(indeks ind)
{
cout<<endl<<ind.im<<endl<<ind.jm<<endl;
}

ekstrema maxmin(int t[n][m])
{
ekstrema wartosc_max;
wartosc_max.ijmax.im=0;
wartosc_max.ijmax.jm=0;

for(int i=0;i<n;i++)
{
    for(int j=0;j<m;j++)

    if(t[i][j]>t[wartosc_max.ijmax.im][wartosc_max.ijmax.jm])
    {
        wartosc_max.max=t[i][j];
    }

}return wartosc_max;

}

0

Próbowałeś użyć debuggera?

1

kod działa przecież ;o

http://ideone.com/rNhVRx

tylko nie mów że używasz dev c++ ?

1 użytkowników online, w tym zalogowanych: 0, gości: 1