Título: Duda ejercicio Publicado por: fjcamaraac en 19 Junio 2018, 00:31 am Hola.
Tengo que hacer un programa que realiza un encuesta, seleccionando aleatoriamente una pregunta de un documento de texto. Os enseño lo que llevo: /* Trabajo obligatorio. Estructura de datos. Francisco Javier Cámara Acedo*/ #include <stdio.h> #include<stdlib.h> #include<time.h> #define BUFFER 81 /*Longitud de línea*/ int main(void){ /* Aquí defino las variables, donde conta,contb,contc y contd contarán las veces que se marcarán las respuestas a,b,c y d respectivamente. nusu y npreg hacen referencia al número de usuarios que harán la encuesta, así como el número de preguntas que tendrá cada uno.*/ int conta,contb,contc,contd,nusu,npreg,num,contusua,contpreg,eleccion,suma; int i; /* Defino los porcentajes de las respuestas como números reales*/ float porcenta,porcentb,porcentc,porcentd; char v[5]; char Texto[BUFFER]; /* A continuación, indico y abro el archivo que contiene las preguntas*/ FILE *archivo; char* preguntas = "C:\\preguntas.txt"; archivo=fopen(preguntas,"r"); /* Utilizo un comprobador para ver si he abierto bien el fichero*/ if(archivo==NULL) { printf("\nNo se pudo abrir el fichero...\n"); }else{ printf("\nEl fichero se abrió correctamente\n"); fclose(archivo); } i=0; /* Con un bucle while, recupero la línea de caracteres del archivo y mientras esta sea distinta de NULL, entonces el bucle se seguirá ejecutando*/ while (fgets(Texto,BUFFER,archivo)!=NULL){ /* Aquí lo que hago es que guardo en un vector que he definido previamente como variable caracter lo que hay en la determinada línea del archivo*/ scanf("%s",&v); printf("Pregunta %s\n",v); i++; } /* Pregunto al usuario cuántos usuarios realizarán la encuesta*/ printf("Dime el numero de usuarios que realizarán la encuesta\n"); scanf("%d",&nusu); /*Pregunto el número de preguntas que tendrá la encuesta*/ printf("Dame el numero de preguntas que tendrá la encuesta\n"); scanf("%d",&npreg); /* Inicializo a cero todos los contadores de las respuestas*/ conta=0; contb=0; contc=0; contd=0; /*Inicializo a 0 el número de usuarios que realizarán la encuesta*/ contusua=0; /* Ahora mediante un bucle while realizará la encuesta siempre y cuando no se hayan completado el número de usuarios que se indicó anteriormente*/ while(contusua<nusu){ contusua=contusua+1; /*Inicializo a 0 el número de preguntas*/ contpreg=0; while(contpreg<npreg){ contpreg=contpreg+1; /*Mediante la función rand, genero un número aleatorio entre 1 y el valor que se haya añadido de npreg. Nota: Al usar la función módulo, el número que se obtiene, será entero*/ num=1+rand()%(npreg-1); printf("La pregunta es %s\n",v[num]); printf("Elige la respuesta\n"); /* Ahora muestro las opciones y pido al usuario que elija una*/ printf("1) Muy bueno\n"); printf("2) Bueno\n"); printf("3) Malo\n"); printf("4) Muy malo\n"); printf("Marca 1,2,3 o 4\n"); scanf("%s",&eleccion); /* En función de qué respuesta elija, o bien conta,contb,contc o contd, se incrementarán en una unidad*/ if (eleccion=1){ conta=conta+1; }else if (eleccion=2){ contb=contb+1; }else if(eleccion=3){ contc=contc+1; }else if(eleccion=4){ contd=contd+1; } } contusua=contusua+1; } /* Una vez que hemos realizado todo, hallamos las estadísticas*/ /*Porcentaje de respuestas dadas*/ suma=conta+contb+contc+contd; porcenta=(conta/suma)*100; porcentb=(contb/suma)*100; porcentc=(contc/suma)*100; porcentd=(contd/suma)*100; printf("El porcentaje de a es: %d\n",porcenta); printf("El porcentaje de b es: %d\n",porcentb); printf("El porcentaje de c es: %d\n",porcentc); printf("El porcentaje de d es: %d\n",porcentd); return 0; getch(); } Yo creo que el problema lo tengo en la función fgets. A ver si me podéis ayudar por favor, para que me imprima por pantalla la pregunta Un saludo y gracias de antemano. Título: Re: Duda ejercicio Publicado por: kub0x en 19 Junio 2018, 03:47 am Ayudaría si formateases el código con la etiqueta de código Geshi para C.
|