Am trimis urmatoarea sursa la problema TV:
#include <iostream>
#include <fstream>
#include <stdlib.h>
#include <string.h>
using namespace std;
int a[98000],b,i; //Aici limita ar trebui sa fie in jur de 86405..
int cerinta;
void citire()
{
int n,se,j,t;
char s[300],*p; //Aici limita ar trebui sa fie aproximativ 15
ifstream f("tv.in");
f>>cerinta>>n;
f.get();
for(i=1;i<=n;i++)
{
f.getline(s,250);
p=strtok(s," :");
se=atoi(p);
p=strtok(NULL," :");
b=atoi(p);
t=b*3600;
p=strtok(NULL," :");
b=atoi(p);
t+=b*60;
p=strtok(NULL," :");
b=atoi(p);
t+=b;
//cout<<t<<" "<<t+se<<'\n';
for(j=0;j<se;j++)
{
a[t+j]++;
}
}
f.close();
}
void transformare(int t)
{
ofstream g("tv.out");
g<<t/36000<<(t/3600)%10<<":"<<((t/60)%60)/10<<(t/60)%10<<":"<<(t%60)/10<<t%10;
g.close();
}
int c1()
{
int max1;
for(i=0;i<87000;i++)
if(a[i ]>max1){max1=a[ i];b=i;}
return b;
}
int c2()
{
for(i=0;i<87000;i++)
if(a[i ]){b++;}
return b;
}
int main()
{
citire();
if(cerinta==1) transformare(c1());
else transformare(c2());
return 0;
}
Dupa ce am trimis, la toate testele mi-a dat eroarea: Killed by signal 11(SIGSEGV).
Am inteles ca aceasta se intampla atunci cand programul acceseaza memorie nealocata, asa ca am marit vectorii (cine stie, poate ca m-am incurcat in limite). Si asa, tot acelasi mesaj imi apare...
Puteti sa ma ajutati?