C Kelimeyi Harflere Bölme
-
Müridler kitaptan algoritma çalışıyorum, örnekleri VB dilinde vermiş. Ancak VB bilmiyorum, yeni yeni C öğreniyorum. C de bu programı yazmak istiyorum.
Kullanıcıdan alınan kelimeyi her satıra bir harf gelecek şekilde ve her satırda sırasıyla 1-2-3-4-... harf olacak şekilde bir program yazmak istiyorum. Mesela ALI kelimesini girdik diyelim.
A
LL
III
Bu şekilde yazmasını istiyorum. VB kodu ;
a="BULENT"
For i= 1 To Len(a)
harf = Mid(a, i, 1)
For j = 1 To i
Print harf;
Next j
Print
Next i
**Odev istemenin yasak olduğunu biliyorum, ödev değildir.
**Henüz çalışmadığım bir konu ama algoritma kitabında örnekler karışık olduğundan denk geldim, aklıma takıldı. Satırlara sırasıyla 1-2-3 harf yazmayı biliyorum. Ancak kelimeyi harflere ayırmaya dair hiçbir şey bilmiyorum. İnternette denk geldiklerim de farklı dillerde olduğundan, yine anlamadım.
-
#include <stdio.h>
#include <string.h>
int main(){
char a[150];
int i=0,j;
scanf("%s", a);
while(a[i]!=0){
for(j=0; j<=i;j++){
printf("%c", a[i]);
}
printf("\n");
i++;
}
}syntax hatalı olabilir ama böyle yani
http://pastebin.com/iJd1pEjq
edit: görüntü
ZoRKaYa tarafından 18/Nis/14 18:50 tarihinde düzenlenmiştir -
C'de karakter katarları (string) diye bir kavram yoktur. Karakter katarlarını kullanmak için karakter dizileri kullanılır.
strlen işlevi bir karakter katarının (aslında char dizisi) uzunluğunu bulur.
sozcuk değişkeni aslında bir dizi olduğu için [] işleciyle elemanlarına erişilebilir.
Kodun çalışan hali: http://ideone.com/ufi3Ov
#include <stdio.h> #include <string.h> int main(void) { char sozcuk[256] = "irlandalilastirilamayanlardan"; int i = 0; int j = 0; for(; i < strlen(sozcuk); ++i) { for(j = 0; j <= i; ++j) { printf("%c", sozcuk[i]); } printf("\n"); } // your code goes here return 0; }
YeniHarman tarafından 18/Nis/14 18:59 tarihinde düzenlenmiştir -
ZoRKaYa bunu yazdı
#include <stdio.h>
#include <string.h>
int main(){
char a[150];
int i=0,j;
scanf("%s", a);
while(a[i]!=0){
for(j=0; j<=i;j++){
printf("%c", a[i]);
}
printf("\n");
i++;
}
}syntax hatalı olabilir ama böyle yani
http://pastebin.com/iJd1pEjq
edit: görüntü
Teşekkür ederim, stringleri henüz çalışmadığımdan yapamamıştım, araştırıyorum hemen.
Herhangi bir hata da yok, doğrudan çalıştı.
-
YeniHarman bunu yazdı
C'de karakter katarları (string) diye bir kavram yoktur. Karakter katarlarını kullanmak için karakter dizileri kullanılır.
strlen işlevi bir karakter katarının (aslında char dizisi) uzunluğunu bulur.
sozcuk değişkeni aslında bir dizi olduğu için [] işleciyle elemanlarına erişilebilir.
Kodun çalışan hali: http://ideone.com/ufi3Ov
#include <stdio.h> #include <string.h> int main(void) { char sozcuk[256] = "irlandalilastirilamayanlardan"; int i = 0; int j = 0; for(; i < strlen(sozcuk); ++i) { for(j = 0; j <= i; ++j) { printf("%c", sozcuk[i]); } printf("\n"); } // your code goes here return 0; }
Hocam c'de string denilen kavram olmaması tamamen fizikseldir. Aslında senin söylediğin şekilde karakterlerde yoktur C'de. char denilen veri tipi tek byte sayı tutmak için vardır. Biz insanlar bunları ascii tablosuna göre ekrana bastırırız bu kadar. Tıpkı stringlerin olmayıp bu ascii tablosundaki ilişkili sayıları yanyana getirip arraylere sokup yapmacık stringler elde ettiğimiz gibi.
-
Bir şey daha sormak istiyorum.
#include<stdio.h>
#include<string.h>
main()
{
char ktr[256];
puts("Kelime gir: ");
gets(ktr);
printf("%s, %d karakterden oluşmuştur\n",ktr,strlen(ktr));
printf("%c ucuncu, %c 1. karakterdir",ktr[3],ktr[1]);
return 0;
}
Bu kod da toplam karakter sayısını doğru olarak hesaplıyor. Ancak ikinci printf de istediğim gibi 3. ve 1. karakterleri yazdıramadım. Hata nerede ?
zigor tarafından 18/Nis/14 19:34 tarihinde düzenlenmiştir -
zigor bunu yazdı
Bir şey daha sormak istiyorum.
#include<stdio.h>
#include<string.h>
main()
{
char ktr[256];
puts("Kelime gir: ");
gets(ktr);
printf("%s, %d karakterden oluşmuştur\n",ktr,strlen(ktr));
printf("%c ucuncu, %c 1. karakterdir",ktr[3],ktr[1]);
return 0;
}
Bu kod da toplam karakter sayısını doğru olarak hesaplıyor. Ancak ikinci printf de istediğim gibi 3. ve 1. karakterleri yazdıramadım. Hata nerede ?
Diziler 0dan başlıyor hocam 3. karakteri istiyorsan ktr[2] diye çağırman gerekiyor.
-
OnLyGoDCaNStoPMe bunu yazdızigor bunu yazdı
Hata nerede ?
Diziler 0dan başlıyor hocam 3. karakteri istiyorsan ktr[2] diye çağırman gerekiyor.
:) Teşekkürler, mesajı yazdıktan sonra fark ettim bir kayma olduğunu.
-
ZoRKaYa bunu yazdı
...Aslında senin söylediğin şekilde karakterlerde yoktur C'de. char denilen veri tipi tek byte sayı tutmak için vardır...
Aslında char'ın boyutunun bir bayt olduğu da standartta tanımlanmamış. char, standartta bir karakteri tutabilen herhangi bir boyutta olabilir. Aynı şekilde int de 16 ya da 32 bit gibi bir tanıma sahip değil, en az char ya da chardan daha büyük bir tip. Long için de aynı şey geçerli, int'e eşit ya da intten büyük.
-
YeniHarman bunu yazdıZoRKaYa bunu yazdı
...Aslında senin söylediğin şekilde karakterler de yoktur C'de. char denilen veri tipi tek byte sayı tutmak için vardır...
Aslında char'ın boyutunun bir bayt olduğu da standartta tanımlanmamış. char, standartta bir karakteri tutabilen herhangi bir boyutta olabilir. Aynı şekilde int de 16 ya da 32 bit gibi bir tanıma sahip değil, en az char ya da chardan daha büyük bir tip. Long için de aynı şey geçerli, int'e eşit ya da intten büyük.
Ee şimdi aslında array denilen şeyin C dilinde first class obje olmadığından ve aslında 3[a] ile a[3] ün aynı şey olduğundan ve ikisinin de 4. elemanı verdiğinden bahsetmek de vardı azizim ama arkadaş yeni başlıyormuş kafası karışmasın. Boşverelim o yüzden.
-
ZoRKaYa bunu yazdıYeniHarman bunu yazdıZoRKaYa bunu yazdı
...Aslında senin söylediğin şekilde karakterler de yoktur C'de. char denilen veri tipi tek byte sayı tutmak için vardır...
Aslında char'ın boyutunun bir bayt olduğu da standartta tanımlanmamış. char, standartta bir karakteri tutabilen herhangi bir boyutta olabilir. Aynı şekilde int de 16 ya da 32 bit gibi bir tanıma sahip değil, en az char ya da chardan daha büyük bir tip. Long için de aynı şey geçerli, int'e eşit ya da intten büyük.
Ee şimdi aslında array denilen şeyin C dilinde first class obje olmadığından ve aslında 3[a] ile a[3] ün aynı şey olduğundan ve ikisinin de 4. elemanı verdiğinden bahsetmek de vardı azizim ama arkadaş yeni başlıyormuş kafası karışmasın. Boşverelim o yüzden.
Denedim, sozcuk[3] ile 3[sozcuk] ikisi de 4. elemanı verdi :)