On 11/25/2010 04:55 PM, Jornada Del Muerto wrote:
> O cia kokia C ? gal dosine kokia ir islendi per segmento dydi ar kazkas tokio...
>
>
> "Vilius Jakas"<vilius@anet.lt> wrote in message news:iclt82$nju$1@trimpas.omnitel.net...
>> Sveiki. Band=iau spresti IT olimpiados uzdavinius ir su tam tikrais
>> testais gaunu arba blogą atsakymą arba segmentation fault
>>
>> Štai kodas
>>
>> #include<stdio.h>
>>
>> int main(){
>>
>> int Pi[100],Ti[100], N, S,i,sum=0,max=0;
>> FILE *in, *out;
>> in=fopen("keliautojas-vyr.in","r");
>> out=fopen("keliautojas-vyr.out","w");
>>
>>
>> //Nuskaitymas
>> fscanf(in,"%d %d",&N,&S);
>> for(i=0;i<N;i++)
>> fscanf(in,"%d %d",&Pi[i],&Ti[i]);
>> for(i=0;i<N;i++)
>> printf("%d %d\n",Pi[i],Ti[i]);
>> //zaidziam
>> S=S-1; //nes masyve skaiciai pradedami nuliu
>>
>> for(i=0;i<N;i++){
>> sum=sum+(Pi[S]); //prideda pinigus
>> if(sum>max)max=sum;
>> Pi[S]=0; //panaikina laukelio reiksme
>> S=Ti[S]; //sekantis laukelis
>> }
>>
>> //fprintf(out,"%d\n",sum);
>>
>> printf("suma %d \n",sum);
>> //for(i=0;i<N;i++)
>> // printf("%d %d\n",Pi[i],Ti[i]);
>>
>> getchar();
>> getchar();
>> return 0;
>> }
>>
>> O štai čia keliautojas-vyr.in su kuriuo gaunu seg fault
>>
>> 5 3
>> 2 5
>> 1 1
>> -7 5
>> -4 2
>> 2 4
>>
Taip, dosinė(iš terminalo leidžiu) Supratau klaidą
>> for(i=0;i<N;i++){
>> sum=sum+(Pi[S]); //prideda pinigus
>> if(sum>max)max=sum;
>> Pi[S]=0; //panaikina laukelio reiksme
>> S=Ti[S]; //sekantis laukelis
o turėtu būti
>> for(i=0;i<N;i++){
>> sum=sum+(Pi[S-1]); //prideda pinigus
>> if(sum>max)max=sum;
>> Pi[S-1]=0; //panaikina laukelio reiksme
>> S=Ti[S-1]; //sekantis laukelis
dėl tos pačios masyvo numeravimo savybės