Tam Sürümünü Görmek İçin : arkadaslar basit ama olmuyo
stdio.h ta yapmam gerekiyo bilginize. bir dosyadaki isim listesini scan ettikten sonra alfabetik sıraya sokmam gerekiyo. pointer kullanıyım dedim hani ilk harfi karsılastırmak için pointer kullanamadım bi türlü olmuyo . sonra neyse dedim bi scan ediyim listeleyim sonra pointer kullanırım dedim arrayla taradım ismin ilk harfi bi türlü alamıyorum. lütfen hemen cevap yazın aglıcam şimdi yaaaaaaaa..............:aglama:
Selamlar
O kadar sinirlenmişsin ki örneği ver. c# da yapıyorsan hazır sıralama metotları nı kullan
Kolay Gelsin
mesela dosyada isimler var mustafa, aslı, fatma , mehmet bunları alfabetik olarak sıralıcak aslı fatma mehmet mustafa olarak mesela. bu arada c++ ta yapıyorum stdio.h ta hala yapamdım basıma agrılar girdi sabah tan beri ders notlarıyla hasır nesir olmaktan kafayı sıyırdım valla
acehreli
10/12/2006, 01:45
pipopim, verdigin bilgiler hatani gormemize yetmiyor.
Ali
bana sunun bi örneginni verin yeticek bir pointer daki ismin herhangi bir harfini alamk mesela mustafa ismini bir pointer a atalım ve bunun 3. harfini alalım. ben bunu yapamıyorum bi türlü
KamilORS
10/12/2006, 17:01
Diğelimki String Türünden Değişken Olsun. String a="kamil"; m harfini ekrana yazdırmak için cout<<a[3]; derim. Bu Kullanımda Dikkat Edilmesi Gereken Kural 0 dan değilden 1 den başlamak yani k harfini ekrana yazdırmak için cout<<m[1]; diyebiliriz.
tamam cok sagol ama sorun bunla bitmiyomus ben tamamını söleyimde siz bana yol gösteriverin o zaman. bi dosyadan okutacagım isimleri alfabetik sıraya sokmam gerekiyo......
ben isimleri dosyadan scan ettim
p[20][20] seklinde bir pointer a yolladım fakat bundan sonrası için ascii kodlarını kulaanarak yapamıyorum ne yapmam gerek sizce .
#include <stdio.h>
#include <stdlib.h>
main()
{
char isim[20],p[100][20],*x;
char *arr[100];
int i=0,j=0,k=0,h=0;
FILE *sinif;
FILE *text2;
if((sinif=fopen("sinif.txt","r"))==NULL)
{
printf("file can not open\n");
}
else
{
printf("file was opened\n");
}
do
{
fscanf(sinif,"%s",isim);
for(j=0;j!=20;j++)
{
isim[j]=toupper(isim[j]);
p[i][j]=*(isim+j);
}
printf("%s\n",p[i]);
i=i+1;
}
while(!feof(sinif));
printf(" dosyanin icinde %d tane isim vardir.\n",i);
fclose(sinif);
for(j=0;j<=i;j++);{
for(k=1;k<=i;k++);{
if(strcmp(p[j],p[k])>0){
}
}
}
}
kırmızıyla yazılan kısım calışmıyo sorunu halletsem gerisi kolay sanırım
acehreli
13/12/2006, 01:56
Gorebildiklerimi kodun icine [Ali] ile isaretleyerek yazdim:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// [Ali] main'in dOnus tUrUnun 'int' olarak belirtilmesi
// gerekir. (Derleyicim olmayinca hata veriyor.) Duzeltiyorum...
int main()
{
// [Ali] x'i, arr'i, ve text2'yi kullanmiyorsun. Kaldirdim...
// [Ali] p, x, vs. gibi adlar kodun okunmasini cok guclestirirler. Ne
// olduklari konusunda bu noktada hicbir fikrim yok.
char isim[20],p[100][20]/* ,*x */;
/* char *arr[100]; */
int i=0,j=0,k=0,h=0;
FILE *sinif;
// FILE *text2;
if((sinif=fopen("sinif.txt","r"))==NULL)
{
printf("file can not open\n");
// [Ali] Herhalde burada programdan cikmak iyi olur:
exit(1);
}
else
{
printf("file was opened\n");
}
do
{
fscanf(sinif,"%s",isim);
for(j=0;j!=20;j++)
{
// [Ali] Burada birbirinin esdegeri olan iki kullanimi karisik
// olarak kullanmissin :) isim[j] ile *(isim+j) ayni seydir...
//
// Burada 20 tane karakter uzerinde islem yapiyorsun ama
// isim'de ondan daha az sayida karakter bulunabilir.
isim[j]=toupper(isim[j]);
// [Ali] Bu adim, p[i]'ye isim'i kopyalamak icin degil
// mi... Onun yerine, bu for dOngUsunden ciktiktan sonra strcpy
// de kullanabilirsin. Yani bu for'dan sonra: strcpy(p[i], isim);
p[i][j]=*(isim+j);
}
printf("%s\n",p[i]);
i=i+1;
}
// [Ali] Burada i'nin 99'dan buyuk olup olmadigina da bakman
// gerekir. Eger giris dosyasinda 100'den fazla isim varsa, sana ait
// olmayan bellege yazacaksin. (p[100] p'ye dahil degildir.)
while(!feof(sinif));
// [Ali] Biraz gec bir denetim :)
printf(" dosyanin icinde %d tane isim vardir.\n",i);
fclose(sinif);
// [Ali] Burada cok talihsiz bir hata yapmissin :) Asagidaki kodun
// esdegeri sudur:
//
//
/*
* for(j=0;j<=i;j++)
* ; // <--- Bunu ben koymadim :)
* {
* for(k=1;k<=i;k++)
* ; // <--- Bunu da ben koymadim
* {
* if(strcmp(p[j],p[k])>0){
* }
* }
* }
*/
for(j=0;j<=i;j++);{
for(k=1;k<=i;k++);{
// [Ali] strcmp'u kullanmadan once onun bildirildigin
// <string.h> basligini eklemen gerekiyor. (Yukarida ekledim.)
if(strcmp(p[j],p[k])>0){
}
}
}
}
Ali
yaa ali sen nerelerdeydin dün ve öncesi gece umudu kestim sallama bi ödev teslim ettim ama yeni basladım c++ ögrenmeye hatalarımı göstermen benim için cok iiii oldu nerelere dikkat etmem gerektigini anladım cok sagol
Forum Yazılımı : vBulletin v3.6.8, Copyright ©2000-2008, Jelsoft Enterprises Ltd.