Keresés
Hírlevél
 
Kiemelt témák
»Hogy viszonyul ehhez a család?
»Legjobb metodika emberi relációk tárolására
»A programozó hibája, hogy törik a programját?
»Jogosultság kezelés mezőszinten
Állás/munka
»Wordpress szakértőt keresünk
»Kamu álláshirdetők listája
»Front-end fejlesztő / Sitebuilder
»DataStore Developer
»PHP programozó, webfejlesztő munkát keres
» több téma
Tudástár
?HTML-ben a Flash átméretezés torzul
Eredeti mezőnevek lekérdezése
?Input mezőből visszakapott adat probléma
Oldalon keresés 8x írja ki az eredményt
?XML-ből sok szövegmező
TinyMCE és az ékezetek
?Rengeteg hasonló kép betöltése gyorsan (PHP)
Ékezetes kar. nem minden táblában jól
?Shelltreeview gond
Grafikon rajzolás probléma
?Onclick= php függvény
?Egyenes megrajzolása
?Access-ből adott xml fájl kinyerése
Listázás időpont szerint
Exportálás változó könyvtárba
» több téma
Társalgó
»A programozásból jól meg lehet élni?
»MFC tanulás
»Könyvet adok-veszek
»Hogy viszonyul ehhez a család?
»Nintendo wii
»Letölthető az új Rad Studio XE és Delphi XE
»Weblap véleményezés
»Játékmotor elmélet
»Informatikai bulvárlap
»Delphi-ről C++-ra váltás
» több téma
ASP  |  C#  |  C++  |  CSS  |  Delphi  |  Flash  |  HTML  |  Java  |  JavaScript  |  Pascal  |  Perl  |  PHP  |  Python  |  Visual Basic  |  Visual C++  |    »    

Tudástár

»

C interpreter kiíratás hiba

»

C interpreter kiíratás hiba

nyitotta: csendi89, idő: 2010.03.14., moderátor: moderator
  Értesítés változás esetén Felvétel kedvencekhez Küldés emailben Nyomtatható verzió

Kategóriák:Programozási nyelvek » C

Sorrend:
Időzóna:
Blokkméret:
Ez egy interpreter lenne és az a bajom első sorban hogy ha beírom pl hogy if[x:=4]while erre azt kéne kiírnija hogy
<utasítás>= if
<k.kzj>= [
az x re nem találtam ki semmit csak annyi hogy karakter de ebben az esetben nem az szal arra is kéne valami..:S
<értékadás>= :=
<konstans>= 4
<K.zzj>= ]
<utasítás>= while
ehelyett a két utasítást az elejére veszi és annyiszor írja ki azt a szót hogy karakter ahány betű van benne nem csak az x re írja...:S Valakinek valami ötlet??
#include <stdio.h>
#include <stdlib.h>
#define HOSSZ 50

char *read()
{
  int k;
  char *s = (char*) calloc (HOSSZ, sizeof(char));
*s='\0';
while((k=getchar()) != '\n')
strcat(s,(char*) &k);
return s;
}




int main(int argc, char *argv[])
{
      printf("Gepelje be a forraskodot!\n\n");
     
      char *szoveg;
      szoveg = read();
     
       int x=0,n,jelek;
       x=strlen(szoveg);
       for (n=0;n<x-1;n++) {
             if ((szoveg[n]=='i') && (szoveg[n+1])=='f')               
            printf("<UTASITAS>\n");   
            }
     
     
       for (n=0;n<x-1;n++) {
             if ((szoveg[n]=='f') && (szoveg[n+1])=='o' && (szoveg[n+2])=='r')                 
            printf("<UTASITAS>\n");   
            }
     
     
       for (n=0;n<x-1;n++) {
               if ((szoveg[n]=='w') && (szoveg[n+1])=='h' && (szoveg[n+2])=='i'
               && (szoveg[n+3])=='l' &&(szoveg[n+4])=='e')                 
              printf("<UTASITAS>\n");   
              }
     
     
       for (n=0;n<x-1;n++) {
                if ((szoveg[n]=='e') && (szoveg[n+1])=='l' && (szoveg[n+2])=='s'
                &&(szoveg[n+3])=='e')           
               printf("<UTASITAS>\n"); 
               }
       
       
       for (n=0;n<x;n++) {
              if(szoveg[n]=='[') printf("<K.KZJ>\n");
              if(szoveg[n]==']') printf("<K.ZZJ>\n");
              if(szoveg[n]=='(') printf("<S.KZJ>\n");
              if(szoveg[n]==')') printf("<S.ZZJ>\n");
              if(szoveg[n]=='{') printf("<C.KZJ>\n");
              if(szoveg[n]=='}') printf("<C.KZJ>\n");
              if((szoveg[n]==':')&& (szoveg[n+1])=='=') printf("<ERTEKADAS>\n");
              if((szoveg[n]=='<')&& (szoveg[n+1])=='=') printf("<KISEBBEGYENLO>\n");
              if((szoveg[n]=='>')&& (szoveg[n+1])=='=') printf("<NAGYOBBEGYENLO>\n");
              if(szoveg[n]=='+') printf("<OSSZEADAS>\n");
              if(szoveg[n]=='-') printf("<KIVONAS>\n");
              if(szoveg[n]=='/') printf("<OSZTAS>\n");
              if(szoveg[n]=='*') printf("<SZORZAS>\n");
              if(
                 (szoveg[n]=='0')||(szoveg[n]=='1')||(szoveg[n]=='2')
                 ||(szoveg[n]=='3')||(szoveg[n]=='4')||(szoveg[n]=='5')
                 ||(szoveg[n]=='6')||(szoveg[n]=='7')||(szoveg[n]=='8')
                 )
             printf("<KONSTANS>\n"); 
             }
            for (n=0;n<x;n++){
                if((szoveg[n]>='A' && szoveg[n]<='Z') ||
                   (szoveg[n]>='a' && szoveg[n]<='z'))
                printf("<KARAKTER>\n");
               
}               
               

 
  system("PAUSE");
  return 0;
}
ennel a resznel egy hiba :


for (n=0;n<x-1;n++) {
             if ((szoveg[n]=='f') && (szoveg[n+1])=='o' && (szoveg[n+2])=='r')                 

helyette :



for (n=0;n<x-2;n++) {
             if ((szoveg[n]=='f') && (szoveg[n+1])=='o' && (szoveg[n+2])=='r')                 
Ha egy kicsit érthetőbben magyaráznád, talán tudnánk segíteni is.
itt is hiba

  for (n=0;n<x-1;n++) {
                if ((szoveg[n]=='e') && (szoveg[n+1])=='l' && (szoveg[n+2])=='s'
                &&(szoveg[n+3])=='e')           
               printf("<UTASITAS>\n");
               }

helyette :

if(x > 4)
  for (n=0;n<x-5;n++) {
                if ((szoveg[n]=='e') && (szoveg[n+1])=='l' && (szoveg[n+2])=='s'
                &&(szoveg[n+3])=='e')           
               printf("<UTASITAS>\n");
               }

szerk. a ciklusban mindig tulleped a karakterek szamat.

    for (n=0;n<x-1;n++) {
                if ((szoveg[n]=='e') && (szoveg[n+1])=='l' && (szoveg[n+2])=='s'
                &&(szoveg[n+3])=='e')           
               printf("<UTASITAS>\n");
               }
       

helyette :

if(x > 3)
    for (n=0;n<x-4;n++) {
                if ((szoveg[n]=='e') && (szoveg[n+1])=='l' && (szoveg[n+2])=='s'
                &&(szoveg[n+3])=='e')           
               printf("<UTASITAS>\n");
               }
       
Mi ezen az érthetetlen?? Nem abban a sorrendben irja ki a dolgokat ahogy kéne... az utasitasokat mindig az elejére rakja... hiába a forrás kód közepén van...if[x:=4]while nah ennél nem úgy elemezné hogy utasitas k.kzj x értékadás konstans k.zzj utasitas hanem az elejére kiirja 2x hogy utasitas... Igy érthetőbb??:) De most nem otthon vok de holnap megnézem ezeket a javitásokat.
Mi ezen az érthetetlen??

Hát pl. ez:
Ez egy interpreter lenne és az a bajom első sorban hogy ha beírom pl hogy if[x:=4]while erre azt kéne kiírnija hogy

Vagy ez:
az x re nem találtam ki semmit csak annyi hogy karakter de ebben az esetben nem az szal arra is kéne valami..:S

De ez is:
ehelyett a két utasítást az elejére veszi és annyiszor írja ki azt a szót hogy karakter ahány betű van benne nem csak az x re írja...:S Valakinek valami ötlet??

Ezek, szerinted, magyarul vannak? Volt neked fogalmazás órád általános iskolában?
Nem abban a sorrendben irja ki a dolgokat ahogy kéne...

abban a sorrendben irja, ahogy irtad a kodba

Vagyis vegigmegy egyszer a szovegen (kodon), amit beadol es elsonek az 'if'-et keresi ki, ahany 'if' van, annyiszor fogja neked jelezni, aztan vegigmegy a szovegen megegyszer es
keresi a 'for' szot, aztan megint elorol nezi a szoveget es keresi a 'while' szot...

peldaul egy ilyen kodba :

if
for
for
if
while
if

a kimenetbe elsonek a 3 'if'-et jelzi, aztan a 2 'for'-t es vegul 1 'while'-t
Vagy mit kezd a programod ezzel:

for ()
// ez egy megjegyzés, de benne van a for szó. Most mi lesz?
Ahogy Norbert is felhívta rá a figyelmedet, nem szabad többször végigmenni a beolvasott forráskódon. Csak egyszer kell végigmenni karakterenként, de közben folyamatosan elemezni (értelmezni), mit kaptál.
Volt fogalmazás órám... viszont most már értem mi a baj akkor végül ezt a 3 for ciklust egyé kéne csinálnom?? szal hogy egyszer menjen végig a karaktersorozaton és akkor ellenőrizze le mindet?? ugye?
És ezt hogy lehet kiküszöbölni?? mert most úgy néz ki hogy az if-es a foros a while os meg az else-es rész egy forciklusban van... vagy az egészet egy for ciklusba kéne rakni??
#include <stdio.h>
#include <stdlib.h>
#define HOSSZ 50

char *read()
{
  int k;
  char *s = (char*) calloc (HOSSZ, sizeof(char));
*s='\0';
while((k=getchar()) != '\n')
strcat(s,(char*) &k);
return s;
}




int main(int argc, char *argv[])
{
      printf("Gepelje be a forraskodot!\n\n");
     
      char *szoveg;
      szoveg = read();
     
       int x=0,n,jelek;
       x=strlen(szoveg);
       
       for (n=0;n<x-1;n++) {
             if ((szoveg[n]=='i') && (szoveg[n+1])=='f')               
            printf("<UTASITAS>\n");   
           
     
             if ((szoveg[n]=='f') && (szoveg[n+1])=='o' && (szoveg[n+2])=='r')                 
            printf("<UTASITAS>\n");   
           
     
               if ((szoveg[n]=='w') && (szoveg[n+1])=='h' && (szoveg[n+2])=='i'
               && (szoveg[n+3])=='l' &&(szoveg[n+4])=='e')                 
              printf("<UTASITAS>\n");   
             
   
                if ((szoveg[n]=='e') && (szoveg[n+1])=='l' && (szoveg[n+2])=='s'
                &&(szoveg[n+3])=='e')           
               printf("<UTASITAS>\n");
               }
       
       
       for (n=0;n<x;n++) {
              if(szoveg[n]=='[') printf("<K.KZJ>\n");
              if(szoveg[n]==']') printf("<K.ZZJ>\n");
              if(szoveg[n]=='(') printf("<S.KZJ>\n");
              if(szoveg[n]==')') printf("<S.ZZJ>\n");
              if(szoveg[n]=='{') printf("<C.KZJ>\n");
              if(szoveg[n]=='}') printf("<C.KZJ>\n");
              if((szoveg[n]==':')&& (szoveg[n+1])=='=') printf("<ERTEKADAS>\n");
              if((szoveg[n]=='<')&& (szoveg[n+1])=='=') printf("<KISEBBEGYENLO>\n");
              if((szoveg[n]=='>')&& (szoveg[n+1])=='=') printf("<NAGYOBBEGYENLO>\n");
              if(szoveg[n]=='+') printf("<OSSZEADAS>\n");
              if(szoveg[n]=='-') printf("<KIVONAS>\n");
              if(szoveg[n]=='/') printf("<OSZTAS>\n");
              if(szoveg[n]=='*') printf("<SZORZAS>\n");
              if(
                 (szoveg[n]=='0')||(szoveg[n]=='1')||(szoveg[n]=='2')
                 ||(szoveg[n]=='3')||(szoveg[n]=='4')||(szoveg[n]=='5')
                 ||(szoveg[n]=='6')||(szoveg[n]=='7')||(szoveg[n]=='8')
                 )
             printf("<KONSTANS>\n"); 
             }
           /* for (n=0;n<x;n++){
                if((szoveg[n]>='A' && szoveg[n]<='Z') ||
                   (szoveg[n]>='a' && szoveg[n]<='z'))
                printf("<KARAKTER>\n");
               
}            */   
               

 
  system("PAUSE");
  return 0;
}
az egészet egy for ciklusba kéne rakni??

Igen. Belerakod es ertelmezed a szoveget, hogy ez most ciklus vagy ertekadas stb.

Szerintem ne egybol a kodirassal kezd. Elsonek lapon gondold vegig, hogy kene hozzaallni, ha ez megvan, akkor johet a kodolas.
Most raktam minden for ciklus elé olyan if(x>...) de az az igazság nem is igazán értem ezek minek oda?!:S Mi szükség van rájuk...:S
#include <stdio.h>
#include <stdlib.h>
#define HOSSZ 50

char *read()
{
  int k;
  char *s = (char*) calloc (HOSSZ, sizeof(char));
*s='\0';
while((k=getchar()) != '\n')
strcat(s,(char*) &k);
return s;
}


int main(int argc, char *argv[])
{
      printf("Gepelje be a forraskodot!\n\n");
     
      char *szoveg;
      szoveg = read();
     
       int x=0,n,jelek;
       x=strlen(szoveg);
       
       for (n=0;n<x-1;n++) {
             if ((szoveg[n]=='i') && (szoveg[n+1])=='f')               
            printf("<UTASITAS>\n");   
            }
       if(x>2)
       for (n=0;n<x-2;n++) {
             if ((szoveg[n]=='f') && (szoveg[n+1])=='o' && (szoveg[n+2])=='r')                 
            printf("<UTASITAS>\n");   
            }
    if(x>4)
       for (n=0;n<x-4;n++) {
               if ((szoveg[n]=='w') && (szoveg[n+1])=='h' && (szoveg[n+2])=='i'
               && (szoveg[n+3])=='l' &&(szoveg[n+4])=='e')                 
              printf("<UTASITAS>\n");   
              }
    if(x>3)
    for (n=0;n<x-3;n++) {
                if ((szoveg[n]=='e') && (szoveg[n+1])=='l' && (szoveg[n+2])=='s'
                &&(szoveg[n+3])=='e')           
               printf("<UTASITAS>\n");
               }
               
       
       
       for (n=0;n<x;n++) {
              if(szoveg[n]=='[') printf("<K.KZJ>\n");
              if(szoveg[n]==']') printf("<K.ZZJ>\n");
              if(szoveg[n]=='(') printf("<S.KZJ>\n");
              if(szoveg[n]==')') printf("<S.ZZJ>\n");
              if(szoveg[n]=='{') printf("<C.KZJ>\n");
              if(szoveg[n]=='}') printf("<C.KZJ>\n");
              if((szoveg[n]==':')&& (szoveg[n+1])=='=') printf("<ERTEKADAS>\n");
              if((szoveg[n]=='<')&& (szoveg[n+1])=='=') printf("<KISEBBEGYENLO>\n");
              if((szoveg[n]=='>')&& (szoveg[n+1])=='=') printf("<NAGYOBBEGYENLO>\n");
              if(szoveg[n]=='+') printf("<OSSZEADAS>\n");
              if(szoveg[n]=='-') printf("<KIVONAS>\n");
              if(szoveg[n]=='/') printf("<OSZTAS>\n");
              if(szoveg[n]=='*') printf("<SZORZAS>\n");
              if(
                 (szoveg[n]=='0')||(szoveg[n]=='1')||(szoveg[n]=='2')
                 ||(szoveg[n]=='3')||(szoveg[n]=='4')||(szoveg[n]=='5')
                 ||(szoveg[n]=='6')||(szoveg[n]=='7')||(szoveg[n]=='8')
                 )
             printf("<KONSTANS>\n"); 
             }
           /* for (n=0;n<x;n++){
                if((szoveg[n]>='A' && szoveg[n]<='Z') ||
                   (szoveg[n]>='a' && szoveg[n]<='z'))
                printf("<KARAKTER>\n");
               
}            */   
               

 
  system("PAUSE");
  return 0;
}
Elsonek ne igy kezd, lapon dolgozd ki mit akarsz, aztan johet mondjuk a kiiratas megoldasa, aztan a valtozok deklaralas/ertekadasa, aztan matematikai muveletek, aztan meg johetnek a feltetelek meg a ciklusok.



Rendben hát akkor ezt már szerintem elhalasztom estig... viszont még annyit kérdeznék hogy nagyon sok a hiba benne? messze állok a megoldástól??:S
Ezt probald ki, lehet lesz benne par szintaktikai hiba, azt javisd ki.
#include <stdio.h>
#include <stdlib.h>
#define HOSSZ 50

char *read()
{
  int k;
  char *s = (char*) calloc (HOSSZ, sizeof(char));
*s='\0';
while((k=getchar()) != '\n')
strcat(s,(char*) &k);
return s;
}




int main(int argc, char *argv[])
{
      printf("Gepelje be a forraskodot!\n\n");
     
      char *szoveg;
      szoveg = read();
     
       int x=0,n,jelek;
       x=strlen(szoveg);
       
       for (n=0;n<x;n++) {
          if((x - n) >= 2) /* ez azert kell, hogy ne lepje tul az indexet*/
             if ((szoveg[n]=='i') && (szoveg[n+1])=='f')               
            printf("<UTASITAS>\n");   
           
          if((x - n) >= 3) /* ez azert kell, hogy ne lepje tul az indexet*/
             if ((szoveg[n]=='f') && (szoveg[n+1])=='o' && (szoveg[n+2])=='r')                 
            printf("<UTASITAS>\n");   
           
           if((x - n) >= 5) /* ez azert kell, hogy ne lepje tul az indexet*/
               if ((szoveg[n]=='w') && (szoveg[n+1])=='h' && (szoveg[n+2])=='i'
               && (szoveg[n+3])=='l' &&(szoveg[n+4])=='e')                 
              printf("<UTASITAS>\n");   
             
             if((x - n) >= 4) /* ez azert kell, hogy ne lepje tul az indexet*/
                if ((szoveg[n]=='e') && (szoveg[n+1])=='l' && (szoveg[n+2])=='s'
                &&(szoveg[n+3])=='e')           
               printf("<UTASITAS>\n");
             
       
       
   
              if(szoveg[n]=='[') printf("<K.KZJ>\n");
              if(szoveg[n]==']') printf("<K.ZZJ>\n");
              if(szoveg[n]=='(') printf("<S.KZJ>\n");
              if(szoveg[n]==')') printf("<S.ZZJ>\n");
              if(szoveg[n]=='{') printf("<C.KZJ>\n");
              if(szoveg[n]=='}') printf("<C.KZJ>\n");
              if((szoveg[n]==':')&& (szoveg[n+1])=='=') printf("<ERTEKADAS>\n");
              if((szoveg[n]=='<')&& (szoveg[n+1])=='=') printf("<KISEBBEGYENLO>\n");
              if((szoveg[n]=='>')&& (szoveg[n+1])=='=') printf("<NAGYOBBEGYENLO>\n");
              if(szoveg[n]=='+') printf("<OSSZEADAS>\n");
              if(szoveg[n]=='-') printf("<KIVONAS>\n");
              if(szoveg[n]=='/') printf("<OSZTAS>\n");
              if(szoveg[n]=='*') printf("<SZORZAS>\n");
              if(
                 (szoveg[n]=='0')||(szoveg[n]=='1')||(szoveg[n]=='2')
                 ||(szoveg[n]=='3')||(szoveg[n]=='4')||(szoveg[n]=='5')
                 ||(szoveg[n]=='6')||(szoveg[n]=='7')||(szoveg[n]=='8')
                 )
             printf("<KONSTANS>\n");
          }
           /* for (n=0;n<x;n++){
                if((szoveg[n]>='A' && szoveg[n]<='Z') ||
                   (szoveg[n]>='a' && szoveg[n]<='z'))
                printf("<KARAKTER>\n");
               
}            */   
 

a kod meg nezzen ki igy :

2+5
if(3 <= 2)
for

ez lesz a kimenet :
<OSSZEADAS>
<UTASITAS>
<KISEBBEGYENLO>
<UTASITAS>
Rendben Nagyon szépen köszönöm! Egy zárójel hiba volt benne csak:) Majd még lehet jelentkezek..:P Köszi még egyszer, és elnézést az értetlenkedésem miatt:(
Szivesen
Belépés
E-mail cím:
Jelszó:

RSS források
-Hírek
-Cikkek
-Fórumok
-Állás/munka
Top pontgyűjtők
»Micu1.030
»Interlock280
»mezofi150
»Pitta_100
»Frostech0100
»szbzs.2100
»Hack100
»Riha60
»Akhiles50
»mrchandra50
Top wikieditorok
»Sting
»Doi
»FlamingClaw
»Argathron
»Csaboka2
»Vodka
»Joexy
»Ivn
»Balucinho
»Kelemzol
» ugrás a wikire
A nap kifejezései
»Algoritmus
»Hogyan kezdjem el
»Perl
» ugrás a wikire
Hírek
»Megérkezett a PostgreSQL 9.0 kiadásra jelölt változata
»Letölthető az új Rad Studio XE és Delphi XE
»Function-X digitális művészeti találkozó és demoscene party
»Webfejlesztőknek szóló közösségi oldalt indított a Microsoft
»Letölthető a hardvergyorsított Chrome 7 első fejlesztői kiadása
» több hír
PC Fórum hírek
»Itt az első kép az AMD nyolcmagos processzoráról
»"Szuperdizájnos" érintő-egeret mutatott be a Microsoft
»Szabadalmaztatta a számítógép kikapcsolását a Microsoft
»Vírusriadót váltott ki a webezőknél a Google
»Ingyen iWiW-ezhetnek mobiljaikról a T-Mobile-osok
»Automatikusan kiválogatja legfontosabb leveleink a Google
»OOo4Kids - ingyenes Office csomag gyerekeknek
»Új, gyorsabb Core i3 és Pentium processzorokat jelentett be az Intel
Tagi blogok
»PSP
»Első Programozó
»USB
»PHP, mint sablonmotor egyszerűen