elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda con función (Errores raros)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con función (Errores raros)  (Leído 2,088 veces)
bsantana

Desconectado Desconectado

Mensajes: 10


Ver Perfil
Ayuda con función (Errores raros)
« en: 12 Abril 2016, 04:49 am »

En esta funcion me arroja dos errores:
1)expected '}' before 'else'
2)break statement not within loop or switch

El primer error corresponde a la linea del
 
Código:
                printf("as");
                else if (contador<=columDisponibles){
Y el segundo error correponde al de
Código:
            if(palabra[h]=='\0'){
                break;
            }

Es como si perdiera la referencia del while o de los if, siendo que revisando cada llave, estan bien segun yo. Dejo el codigo de la funcion completa:

Código
  1. char** definirDificultad(char ** nuevaMatriz,int N, int M ,int dificultad){
  2.    int i,j,h,contador, filasDisponibles,columDisponibles;
  3.    char caracter;
  4.    char palabra[200];
  5.    //palabra=(char*)malloc(sizeof(char));
  6.  
  7.    for(i=0;i<N;i++){
  8.        for(j=0;j<M;j++){
  9.            nuevaMatriz[i][j]='&';
  10.        }
  11.    }
  12.  
  13.    FILE *diccionario;
  14.    diccionario=fopen("Diccionario.txt","r");
  15.  
  16.    posicion *posicionActual;
  17.    posicionActual=malloc(sizeof(posicion));
  18.  
  19.    //Palabras horizontales
  20.    if(dificultad==1){
  21.  
  22.        for(i=0;i<N;i++){
  23.            for(j=0;j<M;j++){
  24.                fscanf(diccionario,"%c",&caracter);
  25.                if(feof(diccionario)){
  26.                    break;
  27.                }
  28.                if (caracter!='\n'){
  29.                    nuevaMatriz[i][j]=caracter;
  30.                }
  31.            }
  32.        }
  33.  
  34.    }
  35.    // Palabras verticales
  36.    else if(dificultad==2){
  37.        rewind(diccionario);
  38.        h=0;
  39.        while(!feof(diccionario)){
  40.            fscanf(diccionario,"%c",&palabra[h]);
  41.            h++;
  42.        }
  43.        palabra[h-1]='\0';
  44.        h=0;
  45.        j=0;
  46.        int k=0;
  47.        posicionActual->x=0;
  48.        posicionActual->y=0;
  49.        while(palabra[h]!='\0'){
  50.            contador=0;
  51.            while(palabra[h]!='\n'){
  52.                contador++;
  53.                h++;
  54.            }
  55.            k=h-contador;
  56.            if(contador<=N && contador<=M && contador!=0){
  57.                filasDisponibles=N-(posicionActual->x);
  58.                columDisponibles=M-(posicionActual->y);
  59.                if(contador<=filasDisponibles){
  60.                    for(i=posicionActual->x;i<(contador+posicionActual->x);i++){
  61.                        if(i>=N){
  62.                            break;
  63.                        }
  64.                        else if(nuevaMatriz[i][j]=='&' || nuevaMatriz[i][j]==palabra[k]){
  65.                            nuevaMatriz[i][j]=palabra[k];
  66.                            k++;
  67.                        }
  68.                    }
  69.                    i=posicionActual->x;
  70.                    while(nuevaMatriz[i][j]!='&'){
  71.                        j++;
  72.                        if(j>=M){
  73.                            j=0;
  74.                            i++;
  75.                        }
  76.                    }
  77.                    posicionActual->y=j;
  78.                    posicionActual->x=i;
  79.                }
  80.                printf("as");
  81.                else if (contador<=columDisponibles){
  82.                    for(j=posicionActual->y;j<(contador+posicionActual->y);j++){
  83.                        if(j>=M){
  84.                            break;
  85.                        }
  86.                        else if(nuevaMatriz[i][j]=='&' || nuevaMatriz[i][j]==palabra[k]){
  87.                            nuevaMatriz[i][j]=palabra[k];
  88.                            k++;
  89.                        }
  90.                    }
  91.                    j=posicionActual->y;
  92.                    while(nuevaMatriz[i][j]!='&'){
  93.                        j++;
  94.                        if(i>=N){
  95.                            i=0;
  96.                            j++;
  97.                        }
  98.                    }
  99.                    posicionActual->y=j;
  100.                    posicionActual->x=i;
  101.                }
  102.            }
  103.            if(palabra[h]=='\0'){
  104.                break;
  105.            }
  106.            h++;
  107.        }
  108.    }
  109.    //free(palabra);
  110.    free(posicionActual);
  111.    fclose(diccionario);
  112.    return nuevaMatriz;
  113. }


« Última modificación: 12 Abril 2016, 04:59 am por engel lex » En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Ayuda con función (Errores raros)
« Respuesta #1 en: 12 Abril 2016, 05:06 am »

la primera si observas bien es un poco obvia, estás rompiendo el flujo del if

Código
  1. }
  2.                printf("as");
  3.                else if (contador<=columDisponibles){


el if debe ser
Código
  1. if(x){
  2. a();
  3. }else if(y){
  4. b();
  5. }

tu estás rompiendo el if al hacer

Código
  1. if(x){
  2. a();
  3. }//rompes el flujo
  4. algo_fuera_de_lugar();
  5. else if(y){
  6. b();
  7. }

el segundo probablemente es heredado por el primero (rompiste el flujo y no sabe ya donde va que)



En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
bsantana

Desconectado Desconectado

Mensajes: 10


Ver Perfil
Re: Ayuda con función (Errores raros)
« Respuesta #2 en: 12 Abril 2016, 05:24 am »

la primera si observas bien es un poco obvia, estás rompiendo el flujo del if

Código
  1. }
  2.                printf("as");
  3.                else if (contador<=columDisponibles){


el if debe ser
Código
  1. if(x){
  2. a();
  3. }else if(y){
  4. b();
  5. }

tu estás rompiendo el if al hacer

Código
  1. if(x){
  2. a();
  3. }//rompes el flujo
  4. algo_fuera_de_lugar();
  5. else if(y){
  6. b();
  7. }

el segundo probablemente es heredado por el primero (rompiste el flujo y no sabe ya donde va que)
Mmh gracias no tenia claridad con eso, pero puse ese printf porque la funcion no ingresa al "else if", no realiza nada de lo que está dentro de él.
Pero gracias me sirve para comprender mejor el elif.
En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Ayuda con función (Errores raros)
« Respuesta #3 en: 12 Abril 2016, 05:28 am »

te recomiendo que para resolver errores de tiempo de ejecución (no entra al else) uses el debugger de tu IDE, seguramente si buscas en google "debugger [el nombre de tu IDE]" consigues como usarlo y puede ser sumamente practico
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
bsantana

Desconectado Desconectado

Mensajes: 10


Ver Perfil
Re: Ayuda con función (Errores raros)
« Respuesta #4 en: 12 Abril 2016, 05:42 am »

te recomiendo que para resolver errores de tiempo de ejecución (no entra al else) uses el debugger de tu IDE, seguramente si buscas en google "debugger [el nombre de tu IDE]" consigues como usarlo y puede ser sumamente practico

Ya resolvi todos los problemas, y gracias por el dato, investigaré!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Errores raros :S
Java
Luisango 4 3,239 Último mensaje 5 Junio 2007, 15:13 pm
por alvk4r
función de seguimiento de errores « 1 2 »
Programación C/C++
@synthesize 11 4,660 Último mensaje 21 Junio 2010, 03:51 am
por @synthesize
errores raros de visual basic
Programación Visual Basic
leliCabello 0 1,508 Último mensaje 30 Octubre 2010, 23:08 pm
por leliCabello
ayuda de consulta de caracteress raros
Desarrollo Web
landerzx 3 2,013 Último mensaje 30 Enero 2014, 20:23 pm
por #!drvy
Errores raros después de una compilación normal
Programación C/C++
jeanmlduarte 5 2,691 Último mensaje 27 Febrero 2017, 20:22 pm
por ivancea96
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines