Litminov Mesaj tarihi: Aralık 17, 2015 Mesaj tarihi: Aralık 17, 2015 Elimde 500 kelimelik bir metin var çift karakterli olan kelimeleri tersine çevirmem gerekiyor ama karakter arrayi boşlukları da saydığı için beceremiyorum. ne yapmam gerektiğini bilen biri var mı?
di Mesaj tarihi: Aralık 17, 2015 Mesaj tarihi: Aralık 17, 2015 1 - Text'i bosluk karakterine gore explode/split et. 2 - Olusan diziyi donguye sok 3 - Uzunlugu 2 karakter olanlari ters cevir 4 - Array'e join/implode uygula, separator olarak da bosluk karakteri kullan 5 - Profit ?
di Mesaj tarihi: Aralık 17, 2015 Mesaj tarihi: Aralık 17, 2015 Ya da direkt regex ile bulup sonra find->replace uygula.
Litminov Mesaj tarihi: Aralık 17, 2015 Konuyu açan Mesaj tarihi: Aralık 17, 2015 #include int main (void) { char arr[500],status; int i=0; FILE *ptr,*output; ptr=fopen("AQ.txt","r"); output=fopen("Reserved.txt","w"); if(ptr==NULL) printf("Error ! "); else { status=fscanf(ptr,"%c",&arr[i]); while(status!=EOF) { while(arr[i]!= ' ') { i++; status=fscanf(ptr,"%c",&arr[i]); } if(i%2==0) { for(int m=i;m>=0;m--) fprintf(output,"%c",arr[m]); } else for(int l=0;l<=i;l++) fprintf(output,"%c",arr[l]); } fclose(output); fclose(ptr); } return(0); } böyle yaptım ama olmadı nerede yanlış yapıyorum?
sardalya Mesaj tarihi: Aralık 17, 2015 Mesaj tarihi: Aralık 17, 2015 bicok yanlis var, once texti okuyup sonra tamamen aynisini yazdirmaya bak. sonra bi dosya okuyup onu tamamen ters cevirip yazdirmaya bak. boyle boyle calisan versiyonlarla ilerlemezsen basaramazsin.
yloibx Mesaj tarihi: Aralık 17, 2015 Mesaj tarihi: Aralık 17, 2015 textin aynısını yazdırmak bir işe yaramaz ki dosyayı fscanf eof ile okuyor zaten ters yazdırmayı beceremememiş onu soruyor.
XLegolas Mesaj tarihi: Aralık 25, 2015 Mesaj tarihi: Aralık 25, 2015 en öncelikle if(i%2==0) kullanmışsın ama bu i 2'nin katları olduğunda da geçerli. sen ise sadece 2 karakter içerenleri istiyorsun yanlış anlamadıysam? Eğer öyleyse direk i==2 de yani. Yok çift karakterleri derken çift sayı olanı diyorsan sorun yok :p
XLegolas Mesaj tarihi: Aralık 25, 2015 Mesaj tarihi: Aralık 25, 2015 ayrıca her boşluğa geldiğinde i'yi sıfırlaman lazım ki yeni kelimenin kaç karakter olduğunu saymaya sıfırdan başlasın. o yüzden hem total karakter sayısını hem de içinde bulunduğun kelimenin sayısını sayan iki ayrı değişken kullan
XLegolas Mesaj tarihi: Aralık 25, 2015 Mesaj tarihi: Aralık 25, 2015 ayrıca i++ boşluk bulmadığı sürece geçerli yapmışsın bu da boşluğa geldiğin zaman takılacağın anlamına geliyor hiç bir zaman EOF olmayacak. ayrıca print ederken 0'dan i'ye ya da i'den 0'a print demişsin bu da fazladan print edeceğin anlamına geliyor. sadece sen içinde bulunduğun kelimeyi print etmelisin. o yüzden iki değişken kullanabilirsin biri j olur içinde olduğun kelimenin karakter sayısını sayar böylece i'den i-j'ye ya da i-j'den i'ye print ettirirsin (+-1 olabilir tabi boşluklardan falan)
Lectre Mesaj tarihi: Aralık 25, 2015 Mesaj tarihi: Aralık 25, 2015 di güncelle butonunu mu kaldırdı bu arada programlamaya konudan bağımsız mesaj attım şuan tırsıyorum.
XLegolas Mesaj tarihi: Aralık 25, 2015 Mesaj tarihi: Aralık 25, 2015 Tam kontrol etcek vaktim olmadı ama şöyle bişey olması lazım kısacası (başkasının kodunu düzeltmek adama kafa kırdırtır) #include <stdio.h> int main (void) { char arr[500],status; int i=0; int j=0; int m; int l; int check=1; FILE *ptr,*output; ptr=fopen("AQ.txt","r"); output=fopen("Reserved.txt","w"); if(ptr==NULL) printf("Error ! "); else { while(fscanf(ptr,"%c",&arr[i])==1) { while(arr[i]!= ' ' && status!=EOF) { i++; j++; status=fscanf(ptr,"%c",&arr[i]); } if(j%2==0) { for(m=i-1;m>=i-j;m--){ fprintf(output,"%c",arr[m]); } } else{ for(l=i-j;l<=i-1;l++){ fprintf(output,"%c",arr[l]); } } fprintf(output," "); j=0; i++; } fclose(output); fclose(ptr); } return(0); } not: çift sayıda harf içerenleri çevirdim sanırım sen onu istiyorsun. eğer sadece 2 harf içerenleri istiyorsan j%2==0 yerine j==2 yazcaksın. input: ahakjdsahk ds ddfd sajdksad dss output: khasdjkaha sd dfdd daskdjas dss seems legit
sardalya Mesaj tarihi: Aralık 27, 2015 Mesaj tarihi: Aralık 27, 2015 hala bir milyon tane yanlis var, sen nasil calistirdin bunu?? calismayan koda nasil input output veriyorsun bi de :S
XLegolas Mesaj tarihi: Aralık 28, 2015 Mesaj tarihi: Aralık 28, 2015 abi eğer direk mesajdan copy paste ettiysen " ) işaretleri winking smiley olarak copy paste oluyor ondan çalışmıyordur hehe yoksa kodda sorun yok tekrar çalıştırdım şu an gayet güzel çalışıyor
yloibx Mesaj tarihi: Aralık 29, 2015 Mesaj tarihi: Aralık 29, 2015 xlegolas yapmış. tebrikler ama status initialize hatası verdi while eof'tan önce initialize edilmemiş status bir kaç satır geriye atınca halloluyor.
XLegolas Mesaj tarihi: Aralık 30, 2015 Mesaj tarihi: Aralık 30, 2015 whiledan önce status= şeklinde bırakmıştım zaten de orjinalindeki gibi sonra arada kaynamış. ama yine de sorun yaratmıyor çünkü ilk while koşulunda zaten direk fscanf diye çağırıyorsun, ikincide de otomatikman !=EOF sağlanıyor variablea bişey assign etmediğin için. sonra zaten assign oluyor. programı test etmeden outputu elimle yazdığımı sanan arkadaş ses vermedi hala hah oldu diye hehe
yloibx Mesaj tarihi: Ocak 11, 2016 Mesaj tarihi: Ocak 11, 2016 XLegolas said: whiledan önce status= şeklinde bırakmıştım zaten de orjinalindeki gibi sonra arada kaynamış. ama yine de sorun yaratmıyor çünkü ilk while koşulunda zaten direk fscanf diye çağırıyorsun, ikincide de otomatikman !=EOF sağlanıyor variablea bişey assign etmediğin için. sonra zaten assign oluyor. programı test etmeden outputu elimle yazdığımı sanan arkadaş ses vermedi hala hah oldu diye hehe valla bende de ilkinde çalışmıştı sonra çalışmadı şimdi bir daha kontrol ettim yine çalışmadı. status hata veriyor açar açmaz used without being initialized diye. status while(status!=EOF) içinde initialize edilmiş orada hata veriyor. öncesinde initializa edilmesi gerekiyor.
Öne çıkan mesajlar