Şimdi Ara

C'de bir cümleyi tersten kelime kelime yazdırma?

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
35
Cevap
0
Favori
18.471
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 12
Sayfaya Git
Git
sonraki
Giriş
Mesaj
  • "ali bugün okula gitti" cümlesini "gitti okula bugün ali" şeklinde yazdıran c kodunu arıyorum.Cümle deki kelimeleri tek tek ayırıyorum fakat kelimeleri tersten tek tek okutma konusunda yardımlarınızı bekliyorum.



  • Bende de kelimeleri tersten yazdırma var. İşini yarayacağını düşünüyorum.

    #include <stdio.h> 
    #include <conio.h>
    #include <string.h>
    int main() {
    int i,j, temp,k;
    char str[100];
    printf("Kelimeyi giriniz: ");
    gets(str);
    for(i=0; str[i]!='\0'; i++){ }
    for(j=i; j>=0; j--) {
    printf("%c",str[j]);
    }

    getch();
    return 0;
    }
  • boşluklar işini görecektir :)

    < Bu ileti mini sürüm kullanılarak atıldı >
  • #include <stdio.h> 
    #include <string.h>
    #include <conio.h>
    void main()
    {
    const char*bosluk = " ";
    char birsatir[100];
    char* birkelime = NULL;
    char kopya[5][250];
    int i=0;
    printf("bir cumle giriniz : \n");
    gets(birsatir);

    birkelime = strtok(birsatir, bosluk);
    while (birkelime != NULL)
    {

    puts(birkelime);
    printf("\b");
    strcpy(kopya[i], birkelime);
    i++;
    birkelime = strtok(NULL, bosluk);

    }

    for (int j = i; j >= 0; j--)
    puts(kopya[j]);

    getchar();
    }


    üsteki kodu yazdım fakat kelimeleri alt alta yazdırıyor.Yanyana yazdırması için ne yapmam gerekli?
  • quote:

    Orijinalden alıntı: PongLenis

    #include <stdio.h> 
    #include <string.h>
    #include <conio.h>
    void main()
    {
    const char*bosluk = " ";
    char birsatir[100];
    char* birkelime = NULL;
    char kopya[5][250];
    int i=0;
    printf("bir cumle giriniz : \n");
    gets(birsatir);

    birkelime = strtok(birsatir, bosluk);
    while (birkelime != NULL)
    {

    puts(birkelime);
    printf("\b");
    strcpy(kopya[i], birkelime);
    i++;
    birkelime = strtok(NULL, bosluk);

    }

    for (int j = i; j >= 0; j--)
    puts(kopya[j]);

    getchar();
    }


    üsteki kodu yazdım fakat kelimeleri alt alta yazdırıyor.Yanyana yazdırması için ne yapmam gerekli?

    const char*bosluk = " ";

    şu kısımdaki tırnağı boşluksuz yaparsan istediğin gibi yan yana yazacaktır. ;)

    const char*bosluk = "";




  • quote:

    Orijinalden alıntı: PongLenis

    #include <stdio.h> 
    #include <string.h>
    #include <conio.h>
    void main()
    {
    const char*bosluk = " ";
    char birsatir[100];
    char* birkelime = NULL;
    char kopya[5][250];
    int i=0;
    printf("bir cumle giriniz : \n");
    gets(birsatir);

    birkelime = strtok(birsatir, bosluk);
    while (birkelime != NULL)
    {

    puts(birkelime);
    printf("\b");
    strcpy(kopya[i], birkelime);
    i++;
    birkelime = strtok(NULL, bosluk);

    }

    for (int j = i; j >= 0; j--)
    puts(kopya[j]);

    getchar();
    }


    üsteki kodu yazdım fakat kelimeleri alt alta yazdırıyor.Yanyana yazdırması için ne yapmam gerekli?

    Konuyu hortlatmak gibi olacak ama acemiyim ve ödevim var..Ödevde girdiğimiz yazının bu şekilde terse dönüp txt dosyasına kaydolması gerekiyor ve birkaç istek daha vardı da onları hallettim birtek bunu bir türlü bulamamıştım..Çok teşekkürler güzel paylaşım için ama const char*bosluk = " "; tırnak içindeki boşluğu silince cümleyi aynen yazıyor ters çevirmiyor, boşluk silinmedende alt alta yazıyor..kodların son hali varmı elinizde?




  • //al kardeşim
    #include <stdio.h>
    #include <string.h>
    #include <conio.h>

    void main()

    {
    const char*bosluk = " ";
    char birsatir[100];
    char yenisatir[100];
    char* birkelime = NULL;
    char kopya[5][50];
    int i=0;
    printf("bir cumle giriniz : \n");
    gets(birsatir);
    birkelime = strtok(birsatir, bosluk);

    while (birkelime != NULL)

    {
    puts(birkelime);
    strcpy(kopya, birkelime);
    i++;
    birkelime = strtok(NULL, bosluk);
    }

    printf("cumle ters cevriliyor....\n");
    int j,k;
    for(j=0; j<=i; j++)
    {
    for(k=0; k<50; k++)
    {
    if(kopya[j][k]==" ")
    kopya[j][k]='\0';
    }
    }

    for (j = i; j >= 0; j--)
    {
    strcat(yenisatir,kopya[j]);
    if(j<i)
    strcat(yenisatir," ");
    }

    puts(yenisatir);
    getchar();

    }
    //@itsmynick




  • cihansahin3455 C kullanıcısına yanıt
    Kardeşim 2015 deki konuyu ne diye hortlatıyorsun. Şu konulardaki mesajların tarihine bakın bir cevap yazmadan önce.

    < Bu ileti mobil sürüm kullanılarak atıldı >
  • yunus_emre1991 Y kullanıcısına yanıt
    Sözkonusu şey Perl ile 1 satırda halloluyor txt dosyaya yazdırmak için de open D, ">", $y.txt; print D @dizi; şeklinde 35 karakterle yapabilirim.
     C'de bir cümleyi tersten kelime kelime yazdırma?
  • Javascript ile tek satırda halledilir ama arkadaşa C lazım.


    'ali bugün okula gitti'.split(' ').reverse().join(' ');
  • tek satırda hem ekrana hem dosyaya yazdırabilir misin:
     C'de bir cümleyi tersten kelime kelime yazdırma?
  • quote:

    Orijinalden alıntı: Tuğkan-0153

    tek satırda hem ekrana hem dosyaya yazdırabilir misin:
    Sen iste yeter ki :P


    require('fs').writeFile('./test.txt', 'ali bugün okula gitti'.split(' ').reverse().join(' '), (err) => console.log(err ? err : 'Completed!'));


    Edit: ternary if ekledim, çalıştırmak için NodeJS yüklü olmalı.



    < Bu mesaj bu kişi tarafından değiştirildi ElwinVanDyke -- 8 Mayıs 2019; 11:45:8 >
  • quote:

    Orijinalden alıntı: Tuğkan-0153

    tek satırda hem ekrana hem dosyaya yazdırabilir misin:
    iyi de, bu seninki tek satir degil ki.. noktali virgul ile ayırılmış 3 satır var orada, o hesapla 1000 satırlık programı da ben tek satır yaparım

    < Bu ileti mini sürüm kullanılarak atıldı >
  • seyfi84 S kullanıcısına yanıt
    node.exe ile kodu denedim, dosyaya kayıt okey fakat komut satırında Completed! yerine cümleyi bassa tam olurdu.

    @seyfi84SMS limiti 144 Twitter 160, benim kod 75 karakter ve cmd.exe'de tek satırı geçmiyor. Bu kısalıkta olduğu sürece 20 satır dahi olabilir. Ama 1000 satır olmaz herhalde :)
  • quote:

    Orijinalden alıntı: Tuğkan-0153

    node.exe ile kodu denedim, dosyaya kayıt okey fakat komut satırında Completed! yerine cümleyi bassa tam olurdu.

    @seyfi84SMS limiti 144 Twitter 160, benim kod 75 karakter ve cmd.exe'de tek satırı geçmiyor. Bu kısalıkta olduğu sürece 20 satır dahi olabilir. Ama 1000 satır olmaz herhalde :)
    Değiştirdim. Şimdiki versiyonu, dosyaya yazdıktan sonra dosyadan okuyor. Eğer hata olursa console' a hata basıyor.


    require('fs').writeFile('./test.txt', 'ali bugün okula gitti'.split(' ').reverse().join(' '), (err) => err ? console.log(err) : require('fs').readFile('./test.txt', (err, txt) => console.log(err ? err : txt.toString())));
  • yav ne kastırıyorsun böyle.. noktalı virgülle ayrılmış birkaç satır olarak yaz gitsin, kanar o

    < Bu ileti mini sürüm kullanılarak atıldı >
  • seyfi84 S kullanıcısına yanıt
    Satır sayısı o kadar önemli değil. Ufak bir kod alıştırması sadece. Hiç alıştırma yapmayalım mı yani?
  • seyfi84 S kullanıcısına yanıt
    Challange olarak iyi oldu bence, hem az biraz refactoring de yapmış olduk. İleride birinin işine yarar belki.

    < Bu ileti mobil sürüm kullanılarak atıldı >
  • Perl bu tarz işlemlerde cok kullanışlı. Kelimeleri büyük harfle başlatmak:

     C'de bir cümleyi tersten kelime kelime yazdırma?


    ü'den sonraki harfi de büyük yapıyor cunku ü ASCII dışı olduğu için Regex ondan sonraki harfi ayrı kelime olarak degerlendiriyor.
  • quote:

    Orijinalden alıntı: Tuğkan-0153

    Perl bu tarz işlemlerde cok kullanışlı. Kelimeleri büyük harfle başlatmak:



    ü'den sonraki harfi de büyük yapıyor cunku ü ASCII dışı olduğu için Regex ondan sonraki harfi ayrı kelime olarak degerlendiriyor.
    Perl' ü duydum fakat hiç kullanma fırsatım olmadı. NodeJS' te aynı işlemi yaptım uzadı ister istemez, regex kullanmadan.

     
    require('fs').writeFile('./test.txt', 'ali bugün okula gitti'.split(' ').map(x => x.charAt(0).toUpperCase() + x.slice(1,x.length)).reverse().join(' '), (err) => err ? console.log(err) : require('fs').readFile('./test.txt', (err, txt) => console.log(err ? err : txt.toString())));


    Edit: regex ekleyince de uzuyor :p



    < Bu mesaj bu kişi tarafından değiştirildi ElwinVanDyke -- 9 Mayıs 2019; 9:56:43 >




  • 
Sayfa: 12
Sayfaya Git
Git
sonraki
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.