C dilinde verilen cümleyi tersten yazmak

Başlatan M4DMAX, 13 Aralık 2015 - 18:02:42

« önceki - sonraki »

0 Üyeler ve 2 Ziyaretçi konuyu incelemekte.

M4DMAX

Array kullanmadan verilen cümlenin harflerini tersten yazan bir program olucak Array yerine Recursion kullanılcak.Nasıl yapılcagınıın mantıgını anlatabilir misiniz?

Örnek : hello world!! -----> !!dlrow olleh  şeklinde boşluklar dahil.

Amenofis

Null dan bir önceki index ile fonksiyonu çağır. Sonra fonksiyon kendisini index - 1 ile çağırsın. Bu işlem index 0' dan büyük ya da eşit olduğu sürece devam etsin.

M4DMAX

Biraz daha açıklayıcı şekilde yazabilir misiniz?

natgho

for(i=sayi.length ; i>=0 ; i--)
{
printf(sayi);
}

C uzun zamandır kullanmıyorum ama C'dede her string kendi içerisinde diziydi yanılmıyorsam.
Hayır ben Windows Düşmanı Değilim,Bu Yüzden Linux Kullanmıyorum, Ben Sadece Benim Donanımımda At Koşturacaksa Bir Yazılım, her Adımını Bilme Sorumluluğunu Hisseden Bir Teknologtan Fazlası olmadığım İçin Linux Kullanıcısıyım.

Sh4oTT

Bu işini görürmü?

#include <stdio.h>
#include <string.h>

/* function prototypes */
void reverse(char *string);
void reverseWorker(char *string, int start, int end);

int main(int argc, const char *argv[]) {
  char string[] = "Hello, world.";
  printf("string (original) = %s\n", string);
  /*
  reverse(string);

  Or, to reverse each word in the string...
  */

  char *ptr = strtok(string, " ");
  while(ptr != NULL) {
    reverse(ptr);
    ptr = strtok(NULL, " ");
    if(ptr != NULL)
      *(ptr-1)=' ';
  }

  /* the rest is the same */

  printf("string (reversed) = %s\n", string);
  return 0;
}

void reverse(char *string) {
  reverseWorker(string, 0, strlen(string)-1);
}

void reverseWorker(char *string, int start, int end) {
  /* terminal condition */
  if(start>=end)
    return;
  /* swap */
  char temp = string[start];
  string[start]=string[end];
  string[end]=temp;
  /* recursive step */
  reverseWorker(string,start+1,end-1);
}

http://stackoverflow.com/questions/27754181/void-functionno-printing-reverse-a-string-using-recursion

7hr33l3t73r

dc -e '[q]sa[ln0=aln256%Pln256/snlbx]sb207356256404211981204295703670388snlbxq'
https://www.getgnu.org/gnulinux/gnulinux-ipuclari/nasil-akillica-soru-sorulur.html

M4DMAX

Alıntı yapılan: ShaoDownLiNuP - 13 Aralık 2015 - 19:00:04
Bu işini görürmü?

#include <stdio.h>
#include <string.h>

/* function prototypes */
void reverse(char *string);
void reverseWorker(char *string, int start, int end);

int main(int argc, const char *argv[]) {
  char string[] = "Hello, world.";
  printf("string (original) = %s\n", string);
  /*
  reverse(string);

  Or, to reverse each word in the string...
  */

  char *ptr = strtok(string, " ");
  while(ptr != NULL) {
    reverse(ptr);
    ptr = strtok(NULL, " ");
    if(ptr != NULL)
      *(ptr-1)=' ';
  }

  /* the rest is the same */

  printf("string (reversed) = %s\n", string);
  return 0;
}

void reverse(char *string) {
  reverseWorker(string, 0, strlen(string)-1);
}

void reverseWorker(char *string, int start, int end) {
  /* terminal condition */
  if(start>=end)
    return;
  /* swap */
  char temp = string[start];
  string[start]=string[end];
  string[end]=temp;
  /* recursive step */
  reverseWorker(string,start+1,end-1);
}

http://stackoverflow.com/questions/27754181/void-functionno-printing-reverse-a-string-using-recursion


mantık bu ama 2kelimeyi ayrı değil birleşik yani bi cümle şekilinde alıcak ben bu kodları biraz inceleyim düzeltmesini yaparım