Tam Sürümünü Görmek İçin : HATA ALIYORUM: Döngü içerisinde beklenenden farklı değerlerin çıkması?
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
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
#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.
eğer debug yaptıysan hangi satır çalıştıktan sonra n_end 116 olduğunuda görürsün
problemli for döngüsü içerisinde, bir dizinin sınırlarını aşıyor olabilirsin.
debug sırasında buna da dikkat et.
Evet bir diznin sinirini asiyormusum. Cok once yazdigim bir programi degistiriyordum gozumden kacmis :(((
tesekkurler
Forum Yazılımı : vBulletin v3.6.8, Copyright ©2000-2008, Jelsoft Enterprises Ltd.