η εφαρμογη αντιμετωπισε προβλημα και επρεπε να τερματιστει

Συζητήσεις για την γλώσσα C και C++

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
fodass
Δημοσιεύσεις: 5
Εγγραφή: 22 Δεκ 2010 18:54

η εφαρμογη αντιμετωπισε προβλημα και επρεπε να τερματιστει

Δημοσίευση από fodass » 22 Δεκ 2010 19:37

καλησπερα παιδια.
λοιπον αντιμετωπιζω το εξης προβλημα:ο κωδικας μου κατα το compile δεν περιεχει λαθη ομως οταν τρεχω το .εχε επειτα απο καποιο σημειο σταματαει και εμφανιζει το μηνυμα:η εφαρμογη αντιμετωπισε προβλημα και επρεπε να τερματιστει η λειτουργια της.επειδη ειμαι αρκετα καινουριος στην c δεν μπορω να εντοπισω ποιο ειναι το λαθος στο κωδικα μου και εχοντας περασει αρκετες ωρες κοιταζοντας ασκοπα την οθονη του pc ζητω την βοηθεια σας.
συνοπτικα το προγραμμα αυτο διαβαζει ενα αριθμο(ν ψηφιων) .στο καθε ψηφιο αντιστοιχουν καποια γραμματα(στο 2-a,b,c sto 3 d,e,f ktl) και υπολογιζει με μια αναδρομικη συναρτηση ολους τους πιθανους συνδιασμους λεξεων που θα προκειψουν.παρακατω ο κωδικας μ.[/code]
#include <stdio.h>
#include <stdlib.h>


void sundiasmoi(char *arithmos,int pos);

char array[9][2]={{'x','x','x'},{'x','x','x'},{'a','b','c'},{'d','e','f'},{'g','h','i'},
{'j','k','l'},{'m','n','o'},{'p','r','s'},{'t','u','v'},{'w','x','y'}};

int pl_ps;

char *arithmos;

void main(void){

int x;



printf("dwse to plhthos twn psifiwn tou arithmou:\n");
scanf("%d",&pl_ps);


printf("dwse ton arithmo:\n");

arithmos=(char*)malloc(pl_ps*sizeof(char));


gets(x);
gets(arithmos);

sundiasmoi(arithmos,0);


system("pause");
}


void sundiasmoi(char *arithmos,int pos){
int i,o,j,r;
int k=0;
int m=0;
char lekseis[pow(3,pl_ps)][pl_ps];
r=pos;
while (arithmos[r]!='\0'){
for(i=2;i<=9;i++)
{
if (arithmos[r]=='i')
{
for(o=0;o<=pow(3,pl_ps)/3;o++)
{

for (j=0;j<=2;j++)
{
lekseis[m][k]='array[j]';

m=m+1;

}
}
k=k+1;
}
}

sundiasmoi(arithmos,pos+1);

for(i=2;i<=9;i++)
{
if (arithmos[r]=='i')
{
for(o=0;o<=pow(3,pl_ps);o++)
{

for (j=0;j<=2;j++)
{
lekseis[m][k]='array[j]';

m=m+1;

}
}
k=k+1;
}

}

r++;
}

}







αν εχετε ορεξη και μπορεσετε να εντοπισετε τι παιζει και μου βγαζει την ψυχη...let me know... thnx ek twn proterwn
ps:sorry gia ta or8ografika :lol:

Άβαταρ μέλους
virxen75
Δημοσιεύσεις: 493
Εγγραφή: 18 Φεβ 2009 00:17
Τοποθεσία: ΗΡΑΚΛΕΙΟ ΚΡΗΤΗΣ

η εφαρμογη αντιμετωπισε προβλημα και επρεπε να τερματιστει

Δημοσίευση από virxen75 » 22 Δεκ 2010 21:16

πολλά λάθη θέλει δουλειά

Κώδικας: Επιλογή όλων

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

void sundiasmoi&#40;char *arithmos,int pos&#41;;

char array&#91;&#93;&#91;4&#93;=&#123;
    &#123;'x','x','x'&#125;,
    &#123;'x','x','x'&#125;,
    &#123;'a','b','c'&#125;,
    &#123;'d','e','f'&#125;,
    &#123;'g','h','i'&#125;,
    &#123;'j','k','l'&#125;,
    &#123;'m','n','o'&#125;,
    &#123;'p','r','s'&#125;,
    &#123;'t','u','v'&#125;,
    &#123;'w','x','y'&#125;
                 &#125;;

int pl_ps;

//char *arithmos;

int main&#40;void&#41;&#123;//panta int!!!
char arithmos&#91;100&#93;;
//int x;
    //printf&#40;"dwse to plhthos twn psifiwn tou arithmou&#58;\n"&#41;;
    //scanf&#40;"%d",&pl_ps&#41;;
    //getchar&#40;&#41;;//panta meta apo scanf!!!
    printf&#40;"dwse ton arithmo&#58;\n"&#41;;
    //arithmos=&#40;char*&#41;malloc&#40;pl_ps*sizeof&#40;char&#41;&#41;;
    //gets&#40;x&#41;;
    gets&#40;arithmos&#41;;
    pl_ps=strlen&#40;arithmos&#41;;
    sundiasmoi&#40;arithmos,0&#41;;
    system&#40;"pause"&#41;;
    return 0;
&#125;


void sundiasmoi&#40;char *arithmos,int pos&#41;&#123;
    int i,o,j,r;
    int k=0;
    int m=0;
    char lekseis&#91;&#40;int&#41;pow&#40;3,pl_ps&#41;&#93;&#91;pl_ps&#93;;//<-----αυτό μήπως πρέπει να είναι global?
    r=pos;
    while &#40;arithmos&#91;r&#93;!='\0'&#41;&#123;
        for&#40;i=2;i<=9;i++&#41;&#123;
            if &#40;arithmos&#91;r&#93;-'0'==i&#41;&#123;//<------------
                for&#40;o=0;o<=pow&#40;3,pl_ps&#41;/3;o++&#41;&#123;
                    for &#40;j=0;j<=2;j++&#41;&#123;
                        lekseis&#91;m&#93;&#91;k&#93;=array&#91;i&#93;&#91;j&#93;;//<---------
                        m=m+1;
                    &#125;
                &#125;
                k=k+1;
            &#125;
        &#125;
        sundiasmoi&#40;arithmos,pos+1&#41;;
        for&#40;i=2;i<=9;i++&#41;&#123;
            if &#40;arithmos&#91;r&#93;-'0'==i&#41;&#123;//<--------------
                for&#40;o=0;o<=pow&#40;3,pl_ps&#41;;o++&#41;&#123;
                    for &#40;j=0;j<=2;j++&#41;&#123;
                        lekseis&#91;m&#93;&#91;k&#93;=array&#91;i&#93;&#91;j&#93;;//<--------------
                        m=m+1;
                    &#125;
                &#125;
                k=k+1;
            &#125;
        &#125;
        r++;
    &#125;

&#125;

η αναδρομή δεν δουλευει σωστά σαν λογική δες το ξανά

fodass
Δημοσιεύσεις: 5
Εγγραφή: 22 Δεκ 2010 18:54

η εφαρμογη αντιμετωπισε προβλημα και επρεπε να τερματιστει

Δημοσίευση από fodass » 23 Δεκ 2010 12:25

φιλε ευχαριστω πολυ για την βοηθεια σου :D .θα το ξαναδουλεψω και θα ενημερωσω για την προοδο του κωδικα :roll:

fodass
Δημοσιεύσεις: 5
Εγγραφή: 22 Δεκ 2010 18:54

η εφαρμογη αντιμετωπισε προβλημα και επρεπε να τερματιστει

Δημοσίευση από fodass » 23 Δεκ 2010 13:16

λοιπον η παρουσα κατασταση του κωδικα μου ειναι τωρα αυτη :

Κώδικας: Επιλογή όλων


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

void sundiasmoi&#40;char *arithmos,int pos&#41;;

 char array&#91;&#93;&#91;2&#93;=&#123;&#123;'x','x','x'&#125;,
                  &#123;'x','x','x'&#125;,
                  &#123;'a','b','c'&#125;,
                  &#123;'d','e','f'&#125;,
                  &#123;'g','h','i'&#125;,
                  &#123;'j','k','l'&#125;,
                  &#123;'m','n','o'&#125;,
                  &#123;'p','r','s'&#125;,
                  &#123;'t','u','v'&#125;,
                  &#123;'w','x','y'&#125;&#125;;
        
 int pl_ps;  
 
   
 int main&#40;void&#41;&#123;
     char arithmos&#91;100&#93;;
       
         
       
       printf&#40;"dwse ton arithmo&#58;\n"&#41;;
       
      
      
       gets&#40;arithmos&#41;;
       
       pl_ps=strlen&#40;arithmos&#41;;
       
       
       sundiasmoi&#40;arithmos,0&#41;;
       
       
       
       system&#40;"pause"&#41;;
       return 0;
       &#125;
       
       
 void sundiasmoi&#40;char *arithmos,int pos&#41;&#123;
      
 int i,o,j;
 int k=0;
 int m=0;
 char lekseis&#91;&#40;int&#41;pow&#40;3,pl_ps&#41;&#93;&#91;pl_ps&#93;;
 
      if&#40;arithmos&#91;pos&#93;=='\0'&#41;
      
      printf&#40;"%s",lekseis&#41;;
      
      else
         
          for&#40;i=2;i<=9;i++&#41;
          &#123;
                            if &#40;arithmos&#91;pos&#93;-'0'==i&#41;
                            &#123;
                                                   for&#40;o=0;o<=pow&#40;3,pl_ps&#41;/3;o++&#41;
                                                   &#123;
                                                        
                                                        for &#40;j=0;j<=2;j++&#41;
                                                        &#123;
                                                                     lekseis&#91;m&#93;&#91;k&#93;=array&#91;i&#93;&#91;j&#93;;
                                                                       
                                                                     m=m+1;
                                                                     
                                                        &#125;      
                                                        m=m+1;        
                                                   &#125;
                                                   k=k+1;
                           &#125;
         &#125;
         
      sundiasmoi&#40;arithmos,pos+1&#41;;
     system&#40;"pause"&#41;;
&#125; 
 
εξακολουθει βεβαια να μην λεει να λειτουργισει :cry: .
καμια αλλη προταση??? ευχαριστω :oops:

Άβαταρ μέλους
virxen75
Δημοσιεύσεις: 493
Εγγραφή: 18 Φεβ 2009 00:17
Τοποθεσία: ΗΡΑΚΛΕΙΟ ΚΡΗΤΗΣ

η εφαρμογη αντιμετωπισε προβλημα και επρεπε να τερματιστει

Δημοσίευση από virxen75 » 23 Δεκ 2010 14:19

μήπως να το γράψεις σωστά?

Κώδικας: Επιλογή όλων

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

void sundiasmoi&#40;char *arithmos,int pos&#41;;

char array&#91;&#93;&#91;3&#93;=&#123;
    &#123;'x','x','x'&#125;,
    &#123;'x','x','x'&#125;,
    &#123;'a','b','c'&#125;,
    &#123;'d','e','f'&#125;,
    &#123;'g','h','i'&#125;,
    &#123;'j','k','l'&#125;,
    &#123;'m','n','o'&#125;,
    &#123;'p','r','s'&#125;,
    &#123;'t','u','v'&#125;,
    &#123;'w','x','y'&#125;
                 &#125;;

int pl_ps;

int main&#40;void&#41;&#123;
char arithmos&#91;100&#93;;
    printf&#40;"dwse ton arithmo&#58;\n"&#41;;
    gets&#40;arithmos&#41;;
    pl_ps=strlen&#40;arithmos&#41;;
    sundiasmoi&#40;arithmos,0&#41;;
    system&#40;"pause"&#41;;
    return 0;
&#125;


 void sundiasmoi&#40;char *arithmos,int pos&#41;&#123;
 if&#40;pos < pl_ps&#41;&#123;    
    int i;
    char chDigit=arithmos&#91;pos&#93;;
    int Digit = chDigit - '0';  
    for&#40;i=0;i<3;i++&#41;&#123;
        char Letter = array&#91;Digit&#93;&#91;i&#93;;
            if&#40;Letter != 0&#41;&#123;
              arithmos&#91;pos&#93; = Letter;
              sundiasmoi&#40;arithmos, pos + 1&#41;;
              arithmos&#91;pos&#93; = chDigit;
            &#125;
    &#125;
&#125;else&#123;
            printf&#40;"\n%s",arithmos&#41;;
    &#125;
&#125; 


fodass
Δημοσιεύσεις: 5
Εγγραφή: 22 Δεκ 2010 18:54

η εφαρμογη αντιμετωπισε προβλημα και επρεπε να τερματιστει

Δημοσίευση από fodass » 23 Δεκ 2010 19:38

φιλε και παλι ευχαριστω για την παντηση σου,το εκτιμω.μοιπος ομως θα μπορουσες να μου εξιγησεις λιγο την λογικη της αναδρομης σου γιατι οπως ειπα ειμαι αρκετα καινουριος και δεν μπορω να καταλαβω ακριβως που δουλευει η συναρτηση σου :-?

Άβαταρ μέλους
virxen75
Δημοσιεύσεις: 493
Εγγραφή: 18 Φεβ 2009 00:17
Τοποθεσία: ΗΡΑΚΛΕΙΟ ΚΡΗΤΗΣ

η εφαρμογη αντιμετωπισε προβλημα και επρεπε να τερματιστει

Δημοσίευση από virxen75 » 24 Δεκ 2010 00:17

fodass έγραψε:φιλε και παλι ευχαριστω για την παντηση σου,το εκτιμω.μοιπος ομως θα μπορουσες να μου εξιγησεις λιγο την λογικη της αναδρομης σου γιατι οπως ειπα ειμαι αρκετα καινουριος και δεν μπορω να καταλαβω ακριβως που δουλευει η συναρτηση σου :-?
πάρε χαρτί και μολύβι
ακολούθα γραμμή γραμμή το πρόγραμμα και θα το καταλάβεις μόνος σου.
Δεν είναι δα και το τεράστιο πρόγραμμα!
έτσι μόνο θα το καταλάβεις και θα σου μείνει για το επόμενο.

fodass
Δημοσιεύσεις: 5
Εγγραφή: 22 Δεκ 2010 18:54

η εφαρμογη αντιμετωπισε προβλημα και επρεπε να τερματιστει

Δημοσίευση από fodass » 24 Δεκ 2010 12:00

οκ φιλε ευχαριστω και παλι.[/quote]

Απάντηση

Επιστροφή στο “C, C++”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες