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

 

 


Tema destacado: Entrar al Canal Oficial Telegram de elhacker.net


  Mostrar Mensajes
Páginas: 1 ... 15 16 17 18 19 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 ... 160
291  Programación / Programación C/C++ / Re: hola amigos necesito su ayuda en C en: 16 Agosto 2014, 17:23 pm
recién estoy empezando en c pues estoy viendo cursos en youtube y ahí hacen un ejemplo del primer programa usan estos códigos ellos les dan en compilar y se les compila en mi caso no no me pasa eso le doy en el botón de  build y no pasa nada
Ya que se trata de C incluir otro encabezado como <iostream> de C++ o indicarlo con "stdio.h" no solucionara el problema.

Como ya te indicaron lo que debes hacer es verificar que el código fuente este completo y correcto (ahí tienes el ejemplo de vangodp ). A continuación trata de compilarlo y si "no pasa nada" entonces indica el compilador o IDE que estas utilizando y el mensaje de error que este genera.

Un saludo
292  Programación / Programación C/C++ / Re: Ayuda..Problema Con Funcion Que Retorne Pares Positivos En Dev C++... en: 15 Agosto 2014, 02:36 am
Lo primero que se debe cambiar en el programa es la definición de la función main y evitar el uso de la biblioteca conio de Borland. Mas información en el tema |Lo que no hay que hacer en C/C++. Nivel basico|.

Y si apenas empiezas tu aprendizaje del lenguaje C debes conseguir un buen curso o libro, para recomendaciones solo tienes que utilizar el motor de búsqueda de los foros.

En cuanto al programa hay demasiados errores, los mas importantes son 1) primero imprimes la serie y solo después la calculas cuando debería ser al revés y 2) la función que genera la serie de números pares positivos se debe rescribir desde cero. Para generar esa serie debes utiliza un bucle de esta forma:
Código
  1. int i;
  2.  
  3. for (i = 0; i < n; i++)
  4.   a[i] = (i + 1) * 2;

Un saludo
293  Programación / Programación C/C++ / Re: Espacios en concatenación strcat. en: 7 Agosto 2014, 20:05 pm
para concatenar las palabras usaría la función sprintf con lo que en con sólo una función concateno las palabras:

[...]

Código
  1. sprintf(cad, "%s%c%s", cad, ' ', pal);
Un problema con esa llamada a sprintf es indicar que la cadena debe imprimirse sobre si misma y en caso de utilizar el par strcpy/strcat se tiene el fastidio (con la segunda) de buscar el final de la primera cadena.

En su lugar se puede aprovechar el valor de retorno de sprintf, este es el numero de caracteres generados en base a la cadena de formato sin incluir el '\0'. Un ejemplo basado en el tuyo sin validaciones ni uso de memoria dinámica:
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <ctype.h>
  5.  
  6. #define MAX_PAL  50
  7.  
  8. char *funcion(char *frase);
  9.  
  10. int main(void)
  11. {
  12.   char frase[MAX_PAL * 20];
  13.  
  14.   printf("La frase es: \"%s\"\n", funcion(frase));
  15.  
  16.   return EXIT_SUCCESS;
  17. }
  18.  
  19. char *funcion(char *frase)
  20. {
  21.   char pal[MAX_PAL];
  22.   int nc;
  23.  
  24.   puts("Escribe una palabra ( n para salir ):");
  25.   scanf("%s", pal);
  26.   nc = sprintf(frase, "%s", pal);
  27.  
  28.   while (1){
  29.      puts("Escribe una palabra (n para salir):");
  30.      scanf("%s", pal);
  31.  
  32.      if (tolower(*pal) == 'n' && pal[1] == '\0')
  33.         break;
  34.  
  35.      nc += sprintf(frase + nc, " %s", pal);
  36.   }
  37.  
  38.   return frase;
  39. }

Un saludo
294  Programación / Programación C/C++ / Re: Sustituir cada palabra de 4 letras con asteriscos(lenguaje c) en: 7 Agosto 2014, 19:01 pm
Es que ese caracter nulo  ;D:

Edité el mensaje anterior, pero lo que modifiqué fue la línea:

Código
  1. if ( iNoEspacio == 4  && ( frase [ i+1 ] ==  ' ' || frase [ i+1 ]==  '\0') )

para tener en cuenta al nulo.  ;-)
Es mejor mantenerse con la versión con centinela ya que a cambio de dos asignaciones fuera del bucle te ahorras la comparación dentro de este.

Otra alternativa consiste en utilizar la función strcspn para encontrar el siguiente carácter igual a ' ' o '\0' y la función memset para imprimir los cuatro espacios (los prototipos de ambas en <string.h>).

Un saludo
295  Programación / Programación C/C++ / Re: Estructura switch¿? en: 1 Agosto 2014, 03:49 am
Basta con colocar la sentencia de selección "switch" dentro de un bucle que se repita hasta que la opcion sea valida.

En C y sin validaciones es mas o menos asi:
Código
  1. int opcion;
  2.  
  3. /* ... */
  4.  
  5. do {
  6.   puts("Introduce la opcion:");
  7.   scanf("%d", &opcion);
  8.  
  9.   switch (opcion){
  10.   case 1:
  11.      puts("1");
  12.      break;
  13.   case 2:
  14.      puts("2");
  15.      break;
  16.   case 3:
  17.      puts("3");
  18.      break;
  19.   default:
  20.      puts("Opcion fuera de rango");
  21.      break;
  22.   }
  23. }while (opcion < 1 || opcion > 3);

Y por favor la próxima vez indica el lenguaje de programación que  utilizas.

Un saludo
296  Programación / Programación C/C++ / Re: Extraña asignación en un array con -1 en: 28 Julio 2014, 21:18 pm
De ser así, porque al asignar la cadena s a una variable estática los caracteres posteriores al carácter nulo
En tu primer mensaje la función no tiene una variable con clase de almacenamiento estático, si actualizaste la función y te surge una duda por favor publica el código fuente completo.

Y si te interesa el tema de implementaciones propias de strtok puedes revisar varias de ellas en la discusión CRT personalizada.

Un saludo
297  Programación / Programación C/C++ / Re: Extraña asignación en un array con -1 en: 28 Julio 2014, 17:00 pm
luego de esta asignación la cadena s queda modificada no?
Si. El propósito de la función es buscar un único carácter y sustituirlo con un cero, si ello sucede se retorna el primer parámetro, caso contrario se retorna NULL.

A esa función se deberían realizar algunos cambios ya que si se busca un solo carácter no tiene caso que el segundo parámetro sea un puntero y ya que las variables "c" y "sc" (deberían ser de tipo char, no hay necesidad de declararlas con el tipo int) solo "pasan la cubeta" se pueden eliminar. Por ultimo no tiene en cuenta el caso donde el primer parámetro es una cadena nula.

Quedaría así:
Código
  1. char *mystrtok(char *s, char delim)
  2. {
  3.   char *p = s;
  4.  
  5.   do {
  6.      if (*s == delim){
  7.         *s = '\0';
  8.         return p;
  9.      }
  10.   }while (*s++);
  11.  
  12.   return NULL;
  13. }

Un saludo
298  Programación / Programación C/C++ / Re: Documentación del Compilador GCC (Xcode) en: 28 Julio 2014, 01:19 am
Las bibliotecas estándares de C y C++ no dependen del compilador utilizado sino al revés.

Una referencia en linea de la biblioteca estándar de C++ (C++98 y C++11) se encuentra en la pagina Standard C++ Library reference.

En la caso de C hay tres estándares, de los primeros dos referencias en linea cortesía de P. J. Plauger son C90, C99. En el caso de C11 no recuerdo una pagina con la descripción completa pero en su lugar y si se maneja con soltura el lenguaje se puede utilizar el ultimo borrador N1570.

Un saludo
299  Programación / Programación C/C++ / Re: BUSCAR EL VALOR MAXIMO Y MINIMO DEL ARBOL BINARIO en: 27 Julio 2014, 21:44 pm
Como ya te comentaron CalgaryCorpus y Blaster debes verificar (de ser necesario) el campo "left" para conocer el minimo y el campo "right" para el maximo.

Ademas se puede sacar la comprobacion de arbol vacio fuera de la funcion dejando esa verificacion para quien llame a la funcion (de forma similar al uso de pilas con las funciones pop e is_empty). De hacerlo las funciones se reducen a:
Código
  1. node *min(node *n)
  2. {
  3.   return n->left ? min(n->left) : n;
  4. }
  5.  
  6. node *max(node *n)
  7. {
  8.   return n->right ? max(n->right) : n;
  9. }

Por ultimo se deben realizar varios cambios al programa, por ejemplo hay que cambiar el tipo de retorno de las funciones "printPostOrden", "printInOrden" y "printRoot" a "void" ya que en ningun momento retornas o utilizas el valor.

Un saludo
300  Programación / Programación C/C++ / Re: [Solucionado] Problema en codigo C++, no se ejecuta el else en: 27 Julio 2014, 18:46 pm
Se deben evitar bucles como este:
Código
  1. for ( int i = 0, linea = 8; i < linea ; i++ ){
  2.   for ( int j = 0, linea = 8; j < linea ; j++ )
  3.      ( i % 2 != 0 && j == 0 ) ? ++linea, cout << ' ' : cout << '*' ;
  4.  
  5.   cout << endl ;
  6. }
Ya que abren la puerta a errores lógicos al tener tres variables con el mismo nombre "linea" pero con ámbito distinto.

Para explicarlo mejor el bucle es (en concepto) equivalente a:
Código
  1. {
  2.   int i = 0;
  3.   int linea = 8;
  4.   while (i < linea){
  5.      int j = 0;
  6.      int linea = 8;
  7.      while (j < linea){
  8.         ( i % 2 != 0 && j == 0 ) ? ++linea, cout << ' ' : cout << '*';
  9.  
  10.         j++;
  11.      }
  12.      cout << endl;
  13.  
  14.      i++;
  15.   }
  16. }

Ya que la intención es imprimir un espacio antes de las lineas pares se puede sacar la comprobación del bucle externo colocandola en el interno:
Código
  1. void imprime()
  2. {
  3.   linea = 8;
  4.  
  5.   for (int i = 0; i < linea; i++){
  6.      if (i % 2)
  7.         cout << ' ';
  8.  
  9.      for (int j = 0; j < linea; j++)
  10.         cout << '*';
  11.      cout << endl;
  12.   }
  13. }

Ya por ultimo el valor del campo "linea" debería definirse en otra función y utilizando la clase string se puede eliminar el bucle interno (en su lugar se crea previamente una cadena compuesta por asteriscos).

Todos esto espero se tome como una critica constructiva.

Un saludo
Páginas: 1 ... 15 16 17 18 19 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 ... 160
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines