Jump to content
Forumu Destekleyenlere Katılın ×
Paticik Forumları
2000 lerden beri faal olan, çok şukela bir paylaşım platformuyuz. Hoşgeldiniz.

c'de kelimeleri tersine çevirme


Öne çıkan mesajlar

Mesaj tarihi:
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ı?
Mesaj tarihi:
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 ?
Mesaj tarihi:
#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?
Mesaj tarihi:
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.
Mesaj tarihi:
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
Mesaj tarihi:
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
Mesaj tarihi:
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)
Mesaj tarihi:
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
Mesaj tarihi:
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
Mesaj tarihi:
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
  • 2 hafta sonra ...
Mesaj tarihi:
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.
×
×
  • Yeni Oluştur...