Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - bsantana

#1
Buenas, tengo una duda con unos requerimientos raros que tengo en un proyecto de la universidad.
Tengo mi programa listo para entregar, pero me solicitan entregar esto junto al programa.
Citar14.Construir un archivo separado llamado test.c donde se encuentre el procedimiento o función main a fin de demostrar el uso de sus funciones. Procure entregar resultados por pantalla sobre cada llamado.
15.Estructurar programa empleando archivos de cabecera (.h) y los códigos fuentes (.c)

Bueno la verdad no nos dan ningun ejemplo de como son estos archivos ni nada, por lo que les consulto si alguien tiene idea alguna de como hacerlos. Saludos
#2
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

               printf("as");
               else if (contador<=columDisponibles){

Y el segundo error correponde al de

           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:

char** definirDificultad(char ** nuevaMatriz,int N, int M ,int dificultad){
   int i,j,h,contador, filasDisponibles,columDisponibles;
   char caracter;
   char palabra[200];
   //palabra=(char*)malloc(sizeof(char));

   for(i=0;i<N;i++){
       for(j=0;j<M;j++){
           nuevaMatriz[i][j]='&';
       }
   }

   FILE *diccionario;
   diccionario=fopen("Diccionario.txt","r");

   posicion *posicionActual;
   posicionActual=malloc(sizeof(posicion));

   //Palabras horizontales
   if(dificultad==1){

       for(i=0;i<N;i++){
           for(j=0;j<M;j++){
               fscanf(diccionario,"%c",&caracter);
               if(feof(diccionario)){
                   break;
               }
               if (caracter!='\n'){
                   nuevaMatriz[i][j]=caracter;
               }
           }
       }

   }
   // Palabras verticales
   else if(dificultad==2){
       rewind(diccionario);
       h=0;
       while(!feof(diccionario)){
           fscanf(diccionario,"%c",&palabra[h]);
           h++;
       }
       palabra[h-1]='\0';
       h=0;
       j=0;
       int k=0;
       posicionActual->x=0;
       posicionActual->y=0;
       while(palabra[h]!='\0'){
           contador=0;
           while(palabra[h]!='\n'){
               contador++;
               h++;
           }
           k=h-contador;
           if(contador<=N && contador<=M && contador!=0){
               filasDisponibles=N-(posicionActual->x);
               columDisponibles=M-(posicionActual->y);
               if(contador<=filasDisponibles){
                   for(i=posicionActual->x;i<(contador+posicionActual->x);i++){
                       if(i>=N){
                           break;
                       }
                       else if(nuevaMatriz[i][j]=='&' || nuevaMatriz[i][j]==palabra[k]){
                           nuevaMatriz[i][j]=palabra[k];
                           k++;
                       }
                   }
                   i=posicionActual->x;
                   while(nuevaMatriz[i][j]!='&'){
                       j++;
                       if(j>=M){
                           j=0;
                           i++;
                       }
                   }
                   posicionActual->y=j;
                   posicionActual->x=i;
               }
               printf("as");
               else if (contador<=columDisponibles){
                   for(j=posicionActual->y;j<(contador+posicionActual->y);j++){
                       if(j>=M){
                           break;
                       }
                       else if(nuevaMatriz[i][j]=='&' || nuevaMatriz[i][j]==palabra[k]){
                           nuevaMatriz[i][j]=palabra[k];
                           k++;
                       }
                   }
                   j=posicionActual->y;
                   while(nuevaMatriz[i][j]!='&'){
                       j++;
                       if(i>=N){
                           i=0;
                           j++;
                       }
                   }
                   posicionActual->y=j;
                   posicionActual->x=i;
               }
           }
           if(palabra[h]=='\0'){
               break;
           }
           h++;
       }
   }
   //free(palabra);
   free(posicionActual);
   fclose(diccionario);
   return nuevaMatriz;
}
#3
Quiero asignar a un arreglo de arrays diferentes palabras, sacadas de un archivo de texto, sé que debo utilizar:

const char *arregloNombres[10];

Y mi idea es que el arreglo arroje:

arregloNombres[0]="Esteban"
arregloNombres[1]="Alexis"
etc...

Pero al leer el archivo con los nombres de esta manera:
fscanf(lectura,"%s %s %d", nombre1,nombre2,&aux);
arregloNombres[i]=nombre1; //i va en aumento


Lo unico que hace es dejarme todas las posiciones del arreglo con el mismo nombre.
¿Como puedo dejar una posicion con un nombre especifico obtenido de un archivo sin que despues se modifique?
Saludos