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

 

 


Tema destacado: Tutorial básico de Quickjs


  Mostrar Mensajes
Páginas: 1 ... 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 [35] 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 ... 160
341  Programación / Programación C/C++ / Re: Hola necesito ayuda con cogigo en C en: 4 Mayo 2014, 07:44 am
solo un pequeño inconveniente se que (strcmp) se utiliza para comparar cadenas el problema es que no se como utilizarlo, ya que en mi código tengo que comparar mis respuestas [...] con mi arreglo donde tengo guardado mis respuestas correctas
Código
  1. int buenas[15]={0,1,0,0,1,2,1,0,1,0,2,1,2,2,1};
No se que estaba pensando (un lapsus) ya que no es necesario pedir la respuesta al usuario como una cadena. En su lugar cada pregunta la imprimes junto con las respuestas a elegir:
Código:
Cual es la capital de Mexico?
1) Ciudad de México
2) Buenos Aires
3) Tokio
Y la respuesta elegida por el usuario se lee como un entero (1, 2 o 3), a este le restas uno y lo comparas con la respuesta correcta almacenada en el array "buenas", de esta forma:
Código
  1. for (i = 0; i < 15; i++){
  2.   /* 1) Se presenta cada pregunta al usuario */
  3.   printf("Cual es la capital de %s?\n", preguntas[i]);
  4.   for (j = 0; j < 3; j++)
  5.      printf("%d) %s\n", j + 1, respuestas[i][j]);
  6.  
  7.   /* 2) Se obtiene la respuesta elegida (1 a 3) */
  8.   scanf("%d", &j);
  9.  
  10.   /* 3) Se verifica si es la respuesta correcta */
  11.   if (buenas[i] == j - 1){
  12.      puts("Correcta");
  13.   }else {
  14.      puts("Incorrecta");
  15.   }
  16. }

Solo falta validar que el numero ingresado por el usuario este en el rango valido (mayor o igual a uno y menor o igual a tres).

Un saludo
342  Programación / Programación C/C++ / Re: Problema con while en C en: 4 Mayo 2014, 06:56 am
Tu programa (el primero) no presenta los resultados correctos debido a la estructura del bucle:
Código
  1. while( grade != -1){ /* 4 */
  2.   puts( "Please type the grade and press enter. To finish type \"-1\"." );
  3.   scanf( "%d", &grade ); /* 1 */
  4.   total = total + grade; /* 2 */
  5.   counter = counter + 1; /* 3 */
  6. }
Para que este termine se debe:
1) Introducir el valor -1.
2) Ese valor se agrega al total.
3) Se incrementa el contador.
4) Al inicio de la siguiente iteración se verifica la condición "!= -1" y solo entonces termina el bucle.

Espero sea evidente que el problema se debe a que el valor de salida se considera uno de los números a procesar, para evitarlo sin expresiones repetidas se debe cambiar el bucle a:
Código
  1. while (1){
  2.   puts("Please type the grade and press enter. To finish type \"-1\"." );
  3.   scanf("%d", &grade);
  4.  
  5.   if (grade == -1)
  6.      break;
  7.  
  8.   total += grade;
  9.   counter++;
  10. }

Un saludo
343  Programación / Programación C/C++ / Re: Asignacion de asientos en C++ en: 3 Mayo 2014, 16:40 pm
Cuando publiques código fuente por favor utiliza las etiquetas de código. Estas se agregan mediante el cuadro desplegable con el texto "GeSHi" en la pagina de composición de mensajes, solo tienes que seleccionar ahí el lenguaje (C, C++, etc.).

----

Bueno ya pude hacerlo solo me falta que diga cuando un asiento ya esta ocupado
Eso ya lo tienes en tu programa: todos los asientos inician con el valor cero (libre), cuando se asigna toman el valor uno (asignado) y si se cancela se vuelve al valor cero (libre).

Aparte de eso hay que cambiar la definición de la función main y evitar el uso de la biblioteca conio de Borland, mas información en la pagina |Lo que no hay que hacer en C/C++. Nivel basico|.

Un saludo
344  Programación / Programación C/C++ / Re: Hola necesito ayuda con cogigo en C en: 3 Mayo 2014, 05:03 am
Cuando publiques código fuente por favor utiliza las etiquetas de código. Estas se agregan mediante el cuadro desplegable con el texto "GeSHi" en la pagina de composición de mensajes, solo tienes que seleccionar ahí el lenguaje (C, C++, etc.).

Y deberías evitar el uso de la biblioteca conio de Borland, mas informacion en la pagina |Lo que no hay que hacer en C/C++. Nivel basico|.

----

lo que no se hacer es como imprimir mis preguntas una por una y a la vez con su respuesta
Primero hay que reducir las cadenas del array "preguntas" quitando el texto duplicado "¿Cual es la capital de ", de esta forma:
Código
  1. char preguntas[15][50] = {
  2.   "Mexico",
  3.   "Canada",
  4.   "Estados Unidos Americanos",
  5. ...
  6. };
Para evitar el desperdicio de memoria lo mejor es utilizar un array de punteros pero como comentas que eres un principiante habrá que dejarlo para después.

A continuación modificas el bucle para que imprima la pregunta y pida la respuesta al usuario:
Código
  1. for (i = 0; i < 14; i++){
  2.   /* 1) Imprimir la pregunta */
  3.   printf("Cual es la capital de %s?\n", preguntas[i]);
  4.  
  5.   /* 2) Obtener la respuesta del usuario (scanf o fgets) */
  6.  
  7.   /* 3) Comparar la respuesta del usuario con la correcta (strcmp) y notificar */
  8. }

Un saludo
345  Programación / Programación C/C++ / Re: Duda con estructuras C en: 2 Mayo 2014, 23:12 pm
Falta entre otras cosas las directivas de inclusión y la declaración de la variable "Jugador", por favor publica el código fuente completo.

Un saludo
346  Programación / Programación C/C++ / Re: [AYUDA] Programa Sencillo: Representación de un Array en: 2 Mayo 2014, 19:19 pm
Casi lo tienes, solo hay que realizar cambios menores a la función. En pseudocodigo:

1) Imprimir '['
2) (Bucle) Imprimir los primeros N-1 elementos (N == numero de elementos del array) en la forma "i, ".
3) Imprimir el ultimo elemento (si existe) seguido del carácter ']'.

No es difícil, lo resuelves en unos minutos.

Un saludo
347  Programación / Programación C/C++ / Re: programacion c basico en: 2 Mayo 2014, 06:35 am
Cuando publiques un texto tan extenso por favor indica que esperas en respuesta (simple aportación, critica constructiva, etc.).

Si ese tutorial es "tuyo" (o lo conseguiste en Internet) lo primero a comentar es: buena parte de los ejemplos se "copiaron" del Curso de C de Gorka Urrutia lo que es, siendo muy diplomáticos, políticamente incorrecto.

Un saludo
348  Programación / Programación C/C++ / Re: problema con una lista en: 2 Mayo 2014, 06:11 am
Tengo la siguiente función que se llama crearArchivoTABSIM() la cual se encuentra dentro de un ciclo en el main, y cada vez que entra al ciclo se le asigna a la funcion una cadena que se llama etiqueta(char *etiqueta).
Problemas con la función "crearArchivoTABSIM" hay varios:
* No cierras el archivo.
* Solo abres el archivo para agregar una linea de texto al final de el, en ese caso ábrelo en el modo "a" y ya que se trata de modo texto se pueden sustituir las dos llamadas a fwrite por una sola a fprintf:
Código
  1. fprintf(tb, "%s\n", etiqueta);
* No liberas la memoria reservada para la lista.

Si le mando las etiquetas ET1, ET2,ET3,ET4

deberia imprimir

1) ET1
2)ET1    ET2
3)ET1   ET2    ET3
4)ET1   ET2    ET3     ET4

pero el problema que tengo es que solo me esta imprimiendo el primer nodo
Completamente normal ya que:
1) La función "crearListaEtiquetas" tiene un nombre errado: no crea etiquetas, crea solo una.
2) Las variables declaradas en una función se destruyen al terminar esta, para preservar sus valores estos se deben comunicar a la función llamante (main en tu caso en relación a "crearArchivoTABSIM") mediante parámetros de salida o su valor de retorno, como no utilizas ninguno el resultado es: cuando termina la función "crearArchivoTABSIM" la lista (con un solo nodo) se pierde.

Un saludo
349  Programación / Programación C/C++ / Re: dudas con strncpy y strncat en: 1 Mayo 2014, 20:03 pm
bueno estuve revisando la wiki y me encontre con lo que no se debe de hacer en c y solo hay algo que no se a que se refere espero que me puedan decir a que se refiere.

el texto es este.
- Tanto strncpy o strncat no proveen un valor de retorno que pueda implicar un error o el exito de la cadena resultante, si no que devuelven un puntero al buffer destino. Por lo tanto requiere un esfuerzo extra por parte del programador.
Me parece que esta bien explicado.

El valor de retorno de ambas funciones es su primer argumento y es inútil porque, por razones obvias, ya lo conoce quien llama a la función.

El problema con strncpy es:
A) Si copia el máximo de caracteres indicados no agrega el '\0', este se debe agregar de forma manual.
B) Si no copia el máximo de caracteres los restantes se colocan a '\0' sin importar su numero.

Por ello generalmente es mejor utilizar sprintf en lugar de strncpy.

Un saludo
350  Programación / Programación C/C++ / Re: dudas sobre memoria dinamica. en: 1 Mayo 2014, 04:24 am
yo no sabia que que realloc se podia usar solo y bueno queria saber si ese metodo es igual de efectivo que usar malloc y realloc juntos.
Una llamada a realloc con su primer argumento igual a NULL tiene el mismo efecto que llamar a malloc:
Código
  1. char *p;
  2.  
  3. p = realloc(NULL, 100); /* Equivalente a "p = malloc(100);" */

tambien queria saber por que si guardo datos usando scanf al imprimir los valores me resultados erroneos asi.(aclaro esto es solo cuando se usa realloc solo.)
Código
  1. Elemento 5
  2. 154512
  3. presiona uno para continuar 0 para salir
Porque estas imprimiendo la dirección del bloque, si se trata de eso debes utilizar el especificador "%p" y convertir explícitamente la dirección al tipo "void *":
Código
  1. printf("%p\n", (void *) lista);

O si se trata de imprimir los valores almacenados en el bloque debes utilizar un bucle, por ejemplo:
Código
  1. {
  2.   int j;
  3.  
  4.   for (j = 0; j < i; j++)
  5.      printf("%d\n", lista[j]);
  6. }

veo que la mayoria usa
Código
  1. //aceder a los datos
  2. *(lista+i-1) = 5;
  3. //guardar datos con scanf
  4. &*(lista)
No tiene caso utilizar "&*(lista)" ya que el efecto de los operadores se cancela, en otras palabras en lugar de "&*(lista)" basta con utilizar "lista".

Código
  1. //si en un programa pongo esto da error al llegar a los 6 registros
  2. realloc(lista,i+1*sizeof(int));
No funciona porque el operador "*" tiene mayor prioridad que "+" y por ello la expresión se evalúa asi:
Código:
i + (1 * sizeof(int))

cual seriamas conveniente usar memoria dinamica o las otras opciones o depende del programa que se desallorre.
Depende del programa.

Un saludo
Páginas: 1 ... 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 [35] 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 ... 160
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines