Forum Forum ZKP Strona Główna

Generator kodu BrainFuck (podstawowy)

 
Napisz nowy temat   Odpowiedz do tematu    Forum Forum ZKP Strona Główna -> Ciekawe źródła i kody
Autor Wiadomość
Razi
Książe postów
Książe postów



Dołączył: 17 Sie 2006
Posty: 936
Przeczytał: 0 tematów

Ostrzeżeń: 0/5

PostWysłany: Pon 18:02, 29 Gru 2008    Temat postu: Generator kodu BrainFuck (podstawowy)

Kod:
#include <stdio>
#include <iostream>

int abs(int a){
   if(a>0) return a;
   return (-a);
}

int dzielnik(int a){
   int c=a/2, z=0;
   int n[c], m=0;
   for(int i=1; i<c>2) return n[c+1];
   if(m>1) return n[c];
   if(a>3) return dzielnik(a-1);
   return 0;
}
int adzielnik(int a){
   int c=dzielnik(a);
   if(c>0)
      return a%c;
   return 0;
}

int znak(char a){
   return (int)(a);
}
//32-spacja

void typ1(char ciag[]){
   int a=0;
   int i=0;
   char bf[255*255];
   char *z=&bf[0];
   while(ciag[i]>20){
      while(a<znak>znak(ciag[i])){ *z='-'; a--; z++;}
      *z='.';
      z++;
      i++;
   }
   printf("Mózgojeb: %s\n\n", bf);
}

void typ2(char ciag[]){
   printf("Mózgojeb: ");

   //typ 2: 2 komórki: 0-iteracyjna, 1: znaku
   int a=0, b, c=0, d=0;
   int i=0;
   int dzielnik1, dzielnik2;
   /*
   a - aktualny znak
   b - aktualna wartosc
   c - różnica
   */

   while(ciag[i]>19){b=a; a=0; //printf("i=%d~~~!~~", i);
      while(a<znak>znak(ciag[i])){a--;}
      c=abs(a-b);
      dzielnik1=dzielnik(c);
   if(dzielnik1>0)
      dzielnik2=(c-adzielnik(c))/dzielnik1;
      c-=dzielnik1*dzielnik2;
      d=a-b;
//pisanie kodu

   if(dzielnik1>0){
      printf(">");
      while(dzielnik1>0){
         printf("+");
         dzielnik1--;
         }
      printf("[</pocz>0){
         if(d>0) printf("+");
         else printf("-");
         dzielnik2--;
         }
   //koniec pętli
      printf(">-]<while>0){
         if(d>0) printf("+");
         else printf("-");
         c--;
         }
//koniec

      printf(".");
      i++;
   }
   

}




int main(){
   char ciag[255];

   printf("\n\nPodaj ciag znakow (max 255 znakow): ");
   printf("  ::: %d\n", adzielnik(11));
   int i=0;
   do{
   scanf("%c", &ciag[i]);
   }while(ciag[i++]>20);

   int typ;
   do{
      printf("Podaj typ konwersji: \n");
      printf("      1. po kolei-jedna komorka\n");
      printf("      2. jedna pętla\n");

      printf("wybor: ");
      scanf("%i", &typ);
   }while(typ<1>2);

   switch(typ){
      case 1: typ1(ciag); break;
      case 2: typ2(ciag); break;
   }
   return 0;
}


Też radzę dodać conio.h i getch(); na koniec.

Robi kod łopatologiczny, oraz używając jednej pętli


Post został pochwalony 0 razy
Powrót do góry
Zobacz profil autora
Wyświetl posty z ostatnich:    Zobacz poprzedni temat : Zobacz następny temat  
Napisz nowy temat   Odpowiedz do tematu    Forum Forum ZKP Strona Główna -> Ciekawe źródła i kody Wszystkie czasy w strefie CET (Europa)
Strona 1 z 1

 
Skocz do:  
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach

fora.pl - załóż własne forum dyskusyjne za darmo
Regulamin