PDA

Tam Sürümünü Görmek İçin : HATA ALIYORUM: Döngü içerisinde beklenenden farklı değerlerin çıkması?


neolion
16/01/2007, 05:59
int main(int argc, char* argv[]) {

sscanf(argv[i],"%d,%d",&n_start,&n_end);

for(int n=n_start; n<=n_end; n++) {

//--------

}


}



Arkadaslar yukarida kod parcasinda, n_end ve n_start komut satirindan okunuyor. Okumada sorun yok ama, mesela 1 ve 22 oalrak giriyorum her iki degeride, for dongusunun ikinci donusunde n_end=116 oluyor.

Bunu aciklayabilirmisiniz?

tesekkurler


bluekid
16/01/2007, 09:32
cevap olarak 2 soru ve bir tavsiye yazıyorum !
1) sscanf deki i yi nerde tanımladın ve başlangıç değerini verdin ?
2) Okumada sorun yok diyorsun eminmisin ?

Böyle bir problemi sormak yerine debug ederek değişkenlerin hangi değerleri aldığını kendin görebilirsin. Probleminde daha hızlı çözülür

kolay gelsin

neolion
16/01/2007, 09:55
#include<fstream>
#include<iostream>
#include<cstdlib>
#include<cstdio>
#include<string>
#include<cmath>
#include<sstream>

int main(int argc, char* argv[]) {

string header,fname;
double EPS; // (yi-ax-b)**2
string tmp ;
int n_start,n_end;
int satir;

int k=0;
for(int i=1; i<argc; i++){
if(argv[i][0]=='-'){

switch(argv[i][1]){

case 'f':i++;
sscanf(argv[i],"%d,%d",&n_start,&n_end);
break;
case'e':i++;
istringstream is(argv[i]);
is>>EPS;

tmp = argv[i];
break;

}

}
else {

header = argv[i];
}
}
if(argc<2) usage();

for(int n=n_start; n<=n_end; n++) {

//--------

}



ozurdilerim eksik oldu, baslik duzeltmesi icin tesekkur.

bluekid:

1) yukariya ekledim.
2) Debug yaptim. okumada sorun yok. Debug sirasinda komut satirindan girdigim degeri okuyor.

Ek bilgi olarak, g++ , gcc version 4.1.2 kullaniyorum.

bluekid
16/01/2007, 11:35
eğer debug yaptıysan hangi satır çalıştıktan sonra n_end 116 olduğunuda görürsün

mr1yh1
16/01/2007, 12:20
problemli for döngüsü içerisinde, bir dizinin sınırlarını aşıyor olabilirsin.
debug sırasında buna da dikkat et.

neolion
16/01/2007, 14:08
Evet bir diznin sinirini asiyormusum. Cok once yazdigim bir programi degistiriyordum gozumden kacmis :(((
tesekkurler