Bir stringin diğer bir stringin substringi olup olmadığını bulan C kodu

Pazar, 19 Ekim 2008 13:36 by celebi

Bir stringin diğer bir stringin substringi olup olmadığını bulan, eğer substringi ise bu substringin string içersinde kaç numaralı harften başladığını bulan C kodunu aşağıda sizinle paylaşıyorum. İnceleyebilir, çalıştırabilir ya da kullanabilirsiniz.

 

 

#include <stdio.h>
#include <string.h>
int  myfunc(char *str1,char *str2);
int main()
{
 char s1[100];
 char s2[100];


 printf("first string:\n");
 gets(s1);
 
 printf("second string:\n");
 gets(s2);
  
 printf("(%s) stringi (%s) stringinin %d inci indexinde!!\n",s2,s1,myfunc(s1,s2));
 return 0;

}

int  myfunc(char *string,char *substring)
{
 int counter = 0;
 int index = 0;
 int len2 = strlen(substring);
 int i = 0, k, m;

 while(*(string + i) != '\0'){
  if(*(string + i) == substring[0])
   for(k = i, m= 0; substring[m]!= '\0'; k++,m++)
    if(*(string + k) == *(substring + m))
     counter++;
  
  if(counter == len2)
   return k - counter;

  counter = 0;
  k = i;
  i++;
 }
 return 0;
 
}

 

NOT: Kodu direk bir text dosyasına kopyalayabilirsiniz, C dosyasının adını dosyanınadı.C şeklinde kayıt türünü de tüm dosyalar olarak seçerek kaydedebilirsiniz. Artık C dosyanız çalışmaya hazır.

 

input olarak girilen bir stringin harflerini farklı şekillerde karıştırarak bize geri veren program

Pazar, 19 Ekim 2008 13:26 by celebi

Programa input olarak girilen bir string'in harflerini karıştırarak bize geri veren C kodunu aşağıda veriyorum. C kodunun yaptığı işlem scramble oyununun yaptığı işe benziyor. Kodu ayrıntılı olarak inceleyebilirsiniz. 

 

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

void scramble(char * s)
{
 int len = strlen(s);
 int i,j;
 char temp;
 
 for(i= 0; i < len; i++){
   j = rand() % len;

   while(i==j)
    j = rand() % len;

   temp = s[i];
   s[i] = s[j];
   s[j] = temp;
   
   
 }
 printf("%s",s);
 
}

int main()
{
 char s[100];
 int k;
 srand(time(0));
 printf("enter a string\n");
 gets(s);
 for(k = 1; k< 10; k++){
  scramble(s);
  printf("\n");
 }
 return 0;
}

 

NOT: Kodu direk bir text dosyasına kopyalayabilirsiniz, C dosyasının adını dosyanınadı.C şeklinde kayıt türünü de tüm dosyalar olarak seçerek kaydedebilirsiniz. Artık C dosyanız çalışmaya hazır.

 

Girilen bir stringteki boşlukları (space) kaldıran C kodu

Pazar, 19 Ekim 2008 12:48 by celebi

Bir string içersindeki boş(space) karakterlerini kaldıran C kodumu aşağıda size sunuyorum. Programa "ali gel buaraya git oraya" stringini input olarak girecek olursanız, program size "aligelburayagitoraya" stringini döndürecektir. Bir nevi bir çok programlama dilinde kullanılan trim() fonksiyonunun görevini yerine getirmektedir aşağıda yazdığım kodum.

 

#include <stdio.h>
char *remove_space(char *str)
{
 int i = 0,k = 0;
 char *temp = str;

 while(*(str + i) != '\0'){

  while(*(str + i) == ' ')
   i++;

  temp [k] = *(str+i);
  i++;
  k++;

  
 }
 temp[k] = '\0';
 return temp;


}


int main()
{
 char str[50];
 printf("enter a string\n");
 gets(str);
 printf("%s\n",remove_space(str));
 return 0;
}

 

NOT: Kodu direk bir text dosyasına kopyalayabilirsiniz, C dosyasının adını dosyanınadı.C şeklinde kayıt türünü de tüm dosyalar olarak seçerek kaydedebilirsiniz. Artık C dosyanız çalışmaya hazır.

 

Belli bir sayı aralığındaki asal sayıları bulan C kodu

Pazar, 19 Ekim 2008 12:19 by celebi

Asal sayılar, kendileri ve 1 sayısı dışında pozitif tam sayı bölenleri olmayan sayılardır. En küçük asal sayı 2'dir. 2 sayısı hem asal hem de çift olan tek sayıdır. Aşağıda yazdığım C kodu, belirtilen bir sayı aralığındaki tüm asal sayıları bize vermektedir. Programımı çalıştırdığınızda sizden bir sayı aralığı girmenizi isteyecek. Sırayla 0 ve 1000 sayılarını girdiğinizi varsayalım. Programın size vereceği sonuç 0 ile 1000 arasındaki asal sayılar olacaktır.

#include <stdio.h>

int isprime(int val)
{
 int k;

 if (val == 0 || val == 1)
  return 0;

 if (val % 2 == 0)
  return val == 2;

 if (val % 3 == 0)
  return val == 3;

 if (val % 5 == 0)
  return val == 5;

 for (k = 7; k * k <= val; k += 2)
  if (val % k == 0)
   return 0;
 return 1;
}

int main()
{
 int low, high;
 int k;
 int prime_counter = 0;

 printf("aralik degerlerini giriniz : ");
 scanf("%d%d", &low, &high);
 
 for (k = low; k <= high; ++k)
  if (isprime(k)) {
   if (prime_counter && prime_counter % 5 == 0)
    printf("\n");
   printf("%d ", k);
   prime_counter++;
  }

 printf("\ntoplam %d asal sayi bulundu!\n", prime_counter);

 return 0;
}

 

NOT: Kodu direk bir text dosyasına kopyalayabilirsiniz, C dosyasının adını dosyanınadı.C şeklinde kayıt türünü de tüm dosyalar olarak seçerek kaydedebilirsiniz. Artık C dosyanız çalışmaya hazır.

 

En küçük pozitif tamsayı değerine sahip hipotenüsten, hipotenüsü verdiğiniz bir tamsayıya kadar olan tüm dik üçgenleri bulan C kodu

Pazar, 19 Ekim 2008 09:58 by celebi

 

 Dik üçgenlerdeki en uzun kenara hipotenüs adı verilir. Soldaki resimdeki dik üçgene bakacak olursak c kenarı, hipotenüstür. Hipotenüs uzunluğunun karesi, diğer kenar uzunluklarının kareleri toplamına eşittir. c*c = a*a + b*b. Aşağıda verdiğin C kodu,hipotenüsü sıfır olan dik üçgenden hipotenüsü girdiğiniz herhangibir pozitif tamsayı değere kadar olan tüm dik üçgenlerde olabilecek kenar uzunluklarını sıralar. Örneğin programa input olarak girdiğiniz sayı 16 ise programın size verdiği sonuç:

3  4   5

6  8   10

5  12  13

9  12  15

4 tane üçgen bulundu.

Yukarıdaki resimdeki dik üçgeni ele alacak olursak, program sırasıyla olabilecek tüm dik üçgenlerin kenar uzunluklarını "a b c"  şeklinde veriyor ve sonrasında toplamda kaç tane dik üçgen bulunduğunu söylüyor.

C kodu:

 

#include <stdio.h>

int main()
{
 int a, b, c;
 int hipo_siniri;
 int counter = 0;
 printf("hipotenüs sinirini giriniz!\n");
 scanf("%d",&hipo_siniri);
 
 for(c = 1; c <= hipo_siniri; c++)
  for(a = 1; a <= c; a++)
   for(b = 1; b <= a; b++)
    if(c * c == (a * a + b * b)){
     printf("%2d %2d %2d\n",b, a, c);
     counter++;
    }

 printf("%d tane ücgen bulundu",counter);

 return 0;
}

NOT: Kodu direk bir text dosyasına kopyalayabilirsiniz, C dosyasının adını dosyanınadı.C şeklinde kayıt türünü de tüm dosyalar olarak seçerek kaydedebilirsiniz. Artık C dosyanız çalışmaya hazır.

 

Girilen iki sayının o.k.e.k 'ini (ortak katların en küçüğü) bulan C kodu

Pazar, 19 Ekim 2008 09:47 by celebi

 O.k.e.k (ortak katların en küçüğü), iki ya da daha fazla sayının ortak katlarının en küçüğüne verilen addır. 25 ve 10 sayılarını ele alalım, bu sayıları asal çarpanlarına ayırırsak 25=5*5, 10=5*2, o.k.e.k (ortak katların en küçüğü) 50 dir. 50 yi asal parçanlarını ayırırsak bunu daha iyi göreceğiz. 50=5*5*2; 50 içerisinde hem 5*5'i hem de 5*2 yi barındırıyor ama daha fazlasını barındırmıyor, yani 50 sayısı 25 ve 10 sayılarının en küçük ortak katıdır. Aşağıda verdiğim C kodu girilen iki sayının o.k.e.k 'ini (ortak katların en küçüğü) hesaplıyor.

#include <stdio.h>
int okek(int a, int b);
int main()
{
 int num1,num2;


 printf(" iki sayi giriniz ==>>");
 scanf("%d %d", &num1,&num2);


 printf("okeki > %d\n",okek(num1,num2));

 return 0;

}

int okek(int a, int b)
{
 int k;
 int max = a;
 int min = b;
 if ( max < min ){
  max = b;
  min = a;
 }

 for (k = max;  ; k += max)
  if(k % min == 0)
   return k;
}

NOT: Kodu direk bir text dosyasına kopyalayabilirsiniz, C dosyasının adını dosyanınadı.C şeklinde kayıt türünü de tüm dosyalar olarak seçerek kaydedebilirsiniz. Artık C dosyanız çalışmaya hazır.

 

Girilen iki sayının o.b.e.b (ortak bölenlerin en büyüğünü) bulan C kodu

Pazar, 19 Ekim 2008 00:49 by celebi

O.b.e.b (ortak bölenlerin en büyüğü) iki ya da daha fazla sayının bölenlerinden en büyüğüne verilen addır. Örneğin 10 ve 12 sayılarını ele alalım. 10 u asal çarpanlarına ayırırsak, 10=2.5, 12=2.2.3 . Görüldüğü üzere 10 ve 12 sayılarının o.b.e.b'i 2'dir. Aşağıda yazdığım kod girilen iki sayının O.b.e.b'ini (ortak bölenlerin en büyüğü) vermektedir.

#include <stdio.h>
int get_gcd(int a, int b)
{
 int k;
 int min = a;

 if (b < min)
  min = b;

 for (k = min; k > 1; k--)
  if (a % k == 0 && b % k == 0)
   return k;
 return 1;
}

int main()
{
 
 int x, y;

 printf("iki sayi girin : ");
 scanf("%d%d", &x, &y);
 printf("%d ve %d icin o.b.e.b = %d\n", x, y, get_gcd(x, y));
 
  
 return 0;
}

NOT: Kodu direk bir text dosyasına kopyalayabilirsiniz, C dosyasının adını dosyanınadı.C şeklinde kayıt türünü de tüm dosyalar olarak seçerek kaydedebilirsiniz. Artık C dosyanız çalışmaya hazır.

 

Girdiğiniz bir sayının asal olup olmadığını söyleyen C kodu

Cumartesi, 18 Ekim 2008 23:42 by celebi

Herhangi bir sayıyı girdiğinizde bu sayının asal olup olmadığını söyleyen program aşağıdadır. Deneyebilirsiniz...

 

#include <stdio.h>


int isprime(int val)
{
       int k;
    if(val == 0 || val == 1)
     return 0;
    if(val % 2 == 0)
     return val ==2;
       if(val % 3 == 0)
     return val == 3;
    if(val % 5 == 0)
     return val ==5;

       for(k = 7; k*k <= val; k+=2)
     if(val % k == 0)
    return 0;

  
       return 1;
}


int main()
{
 int  num;
 printf("bir sayi giriniz = >");
 scanf("%d",&num);
  if (isprime(num))
   printf("asaldir\n");
  else
   printf("asal degildir\n");

 return 0;
}

 

NOT: Kodu direk bir text dosyasına kopyalayabilirsiniz, C dosyasının adını dosyanınadı.C şeklinde kayıt türünü de tüm dosyalar olarak seçerek kaydedebilirsiniz. Artık C dosyanız çalışmaya hazır.

 

Bir string'in diğer bir string'in sonunda olup olmadığını kontrol eden C kodu

Cumartesi, 18 Ekim 2008 23:28 by celebi

Aşağıdaki C kodununda input olarak iki tane string alıyorum ve ikinci stringim ilk aldıpım stringin sonunda yer alıyor mu diye bakıyorum. Örneğin ilk girdiğim string kalamar ikinci girdiğim string ar ise ar stringinin kalamar stringinin içersinde ve stringin sonunda yer aldığını bana söylüyor bu C kodu...

 

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

int is_at_the_end(char*s1,char*s2)
{
 int len1 = strlen(s1);
 int len2 = strlen(s2);
 if(len2 > len1)
  return 0;
 s1 += len1 -1;
 s2 += len2 -1;
 while(len2--){
  if(*s1 != *s2)
   return 0;
  s1--;
  s2--;
 }

 return 1;
}
int main()
{
 char s1[100];
 char s2[100];
 printf("first string:\n");
 gets(s1);
 printf("second string:\n");
 gets(s2);

 if(is_at_the_end(s1,s2))
  printf("%s in sonunda %s var\n",s1,s2);
 else
  printf("bulunamadi\n");

 return 0;
}

NOT: Kodu direk bir text dosyasına kopyalayabilirsiniz, C dosyasının adını dosyanınadı.C şeklinde kayıt türünü de tüm dosyalar olarak seçerek kaydedebilirsiniz. Artık C dosyanız çalışmaya hazır.

 

 

bir tam sayıyı stringe çeviren C kodu

Cumartesi, 18 Ekim 2008 19:18 by celebi

Bu bazen çok lazım olan bir program olabiliyor, aşağıdaki C kodu, herhangi bir tamsayıyı stringe çevirmeye yarıyor.

/*integer bir sayiyi stringe dönüstürüyo*/

#include <stdio.h>


char *integertostring(char * str,int x)
{
 int index = 0,len,k,temp;
 while(x){
  str[index] = x % 10 + '0';
  x /= 10;
  index++;
 }
 str[index] = '\0';
 
 len = index;


 for(k = 0; k < len /2; ++k){
  temp = str [k];
  str[k] = str[len - k -1];
  str[len - k -1] = temp;
 }

 return str;


}
int main()
{
 int x;
 char str[100];
 printf("bir sayi gir:\n");
 scanf("%d",&x);
 printf("%s",integertostring(str,x));
 return 0;
}

NOT: Kodu direk bir text dosyasına kopyalayabilirsiniz, C dosyasının adını dosyanınadı.C şeklinde kayıt türünü de tüm dosyalar olarak seçerek kaydedebilirsiniz. Artık C dosyanız çalışmaya hazır.