Witam
Mam dobrze zrobiony program do zadania :
http://pl.spoj.com/problems/FR_02_06/
Jak w temacie, problem jest z błąd wykonania(SIGSEGV). Dowiedziałem się że to oznacza jakieś problemy z używaniem pamięci. Tutaj mój kod:
#include <iostream>
#include <iomanip>
using namespace std;
int E;
float w,m,r[100];
string imie[100],n[100];
int main()
{
cin>>E;
for(int i=1; i<=E; i++)
{
cin >> imie[i] >> w >> m;
r[i]=(w/(m*m))*10000;
}
for(int i=1; i<=E; i++)
{
if(r[i]<=18.5) n[i]="niedowaga";
if(r[i]>=25) n[i]="nadwaga";
if (r[i]<25 && r[i]>18.5) n[i]="wartosc_prawidlowa";
}
cout << "niedowaga" << endl;
for(int i=1; i<=E; i++)
{
if(n[i] == "niedowaga")
{
cout<<imie[i] << endl;
}
}
cout << "wartosc prawidlowa" << endl;
for(int i=1; i<=E; i++)
{
if(n[i] == "wartosc_prawidlowa")
{
cout<<imie[i] << endl;
}
}
cout << "nadwaga" << endl;
for(int i=1; i<=E; i++)
{
if(n[i] == "nadwaga") cout<<imie[i] << endl;
}
}#include <iostream>
#include <iomanip>
using namespace std;
int E;
float w,m,r[100];
string imie[100],n[100];
int main()
{
cin>>E;
for(int i=1; i<=E; i++)
{
cin >> imie[i] >> w >> m;
r[i]=(w/(m*m))*10000;
}
for(int i=1; i<=E; i++)
{
if(r[i]<=18.5) n[i]="niedowaga";
if(r[i]>=25) n[i]="nadwaga";
if (r[i]<25 && r[i]>18.5) n[i]="wartosc_prawidlowa";
}
cout << "niedowaga" << endl;
for(int i=1; i<=E; i++)
{
if(n[i] == "niedowaga")
{
cout<<imie[i] << endl;
}
}
cout << "wartosc prawidlowa" << endl;
for(int i=1; i<=E; i++)
{
if(n[i] == "wartosc_prawidlowa")
{
cout<<imie[i] << endl;
}
}
cout << "nadwaga" << endl;
for(int i=1; i<=E; i++)
{
if(n[i] == "nadwaga") cout<<imie[i] << endl;
}
}
Jakieś pomysły jak to ugryźć?