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

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


  Mostrar Mensajes
Páginas: 1 ... 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 46 47 48 ... 160
321  Programación / Programación General / Re: Entero por coma flotante en: 15 Mayo 2014, 04:22 am
Para que la función retorne el resultado correcto debes cambiar su prototipo y definición indicando que su tipo de retorno es float:
Código
  1. float Recursivo(int v[],int i, float N, float p);

También debes cambiar el cuerpo de la función (ya que solo retorna un valor en una de las ramas de ejecución) a:
Código
  1. float Recursivo(int v[], int i, float N, float p)
  2. {
  3.   if (i<N){
  4.      p=p+v[i];
  5.      p=Recursivo(v,i+1,N,p);
  6.   }else
  7.      p=p/N;
  8.  
  9.   return p;
  10. }

O bien:
Código
  1. float Recursivo(int v[], int i, float N, float p)
  2. {
  3.   return (i < N) ? Recursivo(v, i + 1, N, p + v[i]) : p / N;
  4. }

Por ultimo si tienes alguna duda o problema con un programa en C/C++ utiliza el foro Programación C/C++.

Un saludo
322  Programación / Programación C/C++ / Re: Algo raro con system("title") en: 13 Mayo 2014, 16:34 pm
Debes utilizar secuencias de escape donde el primero carácter es '^' seguido del carácter en cuestión, por ejemplo:
Código
  1. system("title ^<Titulo^>");

Para conocer a detalle que caracteres deben escaparse en esa forma revisa la documentación del interprete de comandos.

Un saludo
323  Programación / Programación C/C++ / Re: Ayuda nuevamente con este simple codigo en: 13 Mayo 2014, 03:29 am
sin embargo si introduces los números 15 y 1, el total es 16 por lo tanto al dividir 15/16 en los alumnos aprobados el resultado es 0.9... lo que redondea a 1
No, como ya te comento Blaster en la división entera la parte decimal se descarta, el resultado de 15 / 16 es 0.

Un saludo
324  Programación / Programación C/C++ / Re: dudas a la hora de programar en: 11 Mayo 2014, 20:36 pm
nose si  sabes de algun libro que me recomiendes donde vengane stos temas de estructuras, sockets, manejo de archivos, memoria dinamica, threads y semafros.
Primero enfocate en aprende C estándar ya que esa es la base garantizada sin importar el compilador. Recomendaciones hay varias en la base de datos de los foros, solo es cuestión de utilizar el motor de búsqueda.

Después de eso ya puedes enfocarte en temas particulares del compilador/plataforma como sockets, threads, semaforos, etc.

Y por ultimo no es molestia. Cada uno aporta su granito de arena a la comunidad.

Un saludo
325  Programación / Programación C/C++ / Re: Duda LECTURA ARCHIVOS BINARIOS en: 11 Mayo 2014, 20:24 pm
Por cierto en ese bucle:
Código
  1. while (!Datos.eof())
  2.   if ( Datos.read((char*)&Load, sizeof(Load)) )
  3.      InsertarFinal(Lista, Load);
No es necesario utilizar la función miembro eof, se puede acortar a:
Código
  1. while (Datos.read((char *) &Load, sizeof(Load)))
  2.   InsertarFinal(Lista, Load);

Un saludo
326  Programación / Programación C/C++ / Re: dudas a la hora de programar en: 11 Mayo 2014, 20:07 pm
Los dos ejemplos que pones de calloc son idénticos.

Me refería a que en la sentencia:
Código
  1. cuno = (char *) calloc(sizeof(char), sizeof(char));
La conversión "(char *)" no es necesaria, ademas "sizeof(char)" siempre es igual a uno. Hay que cambiar esa llamada a:
Código
  1. cuno = calloc(1, 1);

De todos modos las llamadas a calloc resultan inútiles ya que lo siguiente que haces en el programa es utilizar realloc, para el caso mejor utilizar una sola llamada a función (a malloc).

Un saludo
327  Programación / Programación C/C++ / Re: AYUDA lectura de fiche en c en: 11 Mayo 2014, 19:59 pm
Porque en C los indices validos van de 0 a N-1 con N igual al numero de elementos. Si tu declaras un array:
Código
  1. int a[10];
Este tiene 10 elementos y se accede a ellos con a[0], a[1], ... a[9].

Un saludo
328  Programación / Programación C/C++ / Re: AYUDA lectura de fiche en c en: 11 Mayo 2014, 18:14 pm
El error que mencionas se debe a que el numero de elementos de los arrays están mal:
Código
  1. n_dias dia[2];
  2.  
  3. /* ... */
  4.  
  5. destinos destino[4];

Hay que cambiar esas dos lineas a:
Código
  1. n_dias dia[3];
  2.  
  3. /* ... */
  4.  
  5. destinos destino[5];

Un saludo
329  Programación / Programación C/C++ / Re: dudas a la hora de programar en: 11 Mayo 2014, 17:47 pm
aun que intente de varias formas al ultimo se soluciono con asignarle la misma direccion de memoria que la de la primera estructura.
lo que no entiendo bien es si lo que hace es tener  la misma direccion de memoria que la  primera estructura, no se supone que  tiene acceso a esas datos  por lo tanto al momento de decirle que agrege  a la variable nom el nombre se debera de modificar lo valores de hay.
o acaso lo unico que sucede es que al aiganarle la misma direccion  de memoria pero lo que hace es usarla para almacenare la estructura pero con sus respectivas variables nose si me puedas explicar bien esto.
Lo primero que debes hacer es explicarte de una forma mas clara ya que apenas se entiende ese texto y por favor (y lo digo en buen plan) consigue un libro de calidad, no hay mejor forma de aprender que esa.

Código
  1. struct datos uno, dos;
  2. struct da *d;
  3. d = &dos;
Ahí declaras un puntero, una variable que debe almacenar una dirección en memoria, eso lo consigues con la asignación "d = &dos". Después de eso al aplicar indirección con "*d." o "d->" ya no estas trabajando con la dirección en memoria de "dos" sino con el objeto "dos". En resumen puntero + indirección == objeto apuntado.

como hago para que el texto si se pueda ver en el archivo, bueno yo revise el codigo y no encuentro esos errores menores que dices y por lo tanto no los e podido corregir  nose si me pdrias decir mis errores para intentar corregirlos.
Las partes a cambiar en tu ultimo programa sobre archivos son:
* Reservas memoria en dos ocasiones consecutivas cuando una sola basta.
* En C las conversiones explicitas al utilizar malloc, calloc y realloc no son necesarias y no se recomiendan.
* Si ocurre un error al tratar de abrir un archivo no tienes porque generar el mensaje manualmente, deja que perror lo haga.
* No hay necesidad de vaciar el bufer correspondiente con fflush.
* Abres al archivo en modo "a", ello implica que todas las operaciones de escritura se realizaran al final del archivo sin importar si utilizas fseek directa o indirectamente (via rewind).

Para almacenar las dos lineas en modo texto lo usual es fprint, por ejemplo:
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. #define NOM_ARCHIVO  "hola"
  5.  
  6. int main(void)
  7. {
  8.   FILE  *archivo;
  9.   char a[]= "Primera linea";
  10.   char b[]= "Segunda linea";
  11.   char c[sizeof a];
  12.  
  13.   if ((archivo = fopen(NOM_ARCHIVO, "a")) == NULL){
  14.      perror(NOM_ARCHIVO);
  15.      return EXIT_FAILURE;
  16.   }
  17.   fprintf(archivo, "%s\n", a);
  18.   fprintf(archivo, "%s\n", b);
  19.   fclose(archivo);
  20.  
  21.   if ((archivo = fopen("hola", "r")) == NULL){
  22.      perror(NOM_ARCHIVO);
  23.      return EXIT_FAILURE;
  24.   }
  25.  
  26.   puts("Las lineas en el archivo son:");
  27.   while (fgets(c, (int) sizeof c, archivo) != NULL)
  28.      printf("%s", c);
  29.   fclose(archivo);
  30.  
  31.   return EXIT_SUCCESS;
  32. }
Si al ejecutarlo ocurre un error al abrir el archivo la función perror te dará (al menos en teoría) una idea de cual es.

Un saludo
330  Programación / Programación C/C++ / Re: dudas a la hora de programar en: 11 Mayo 2014, 03:03 am
pero intente hacer esto.
Código
  1. struct da *d;   /* 1 */
  2.  
  3. /* ... */
  4.  
  5. d->nom = "sfa"; /* 2 */
pero al ejecutarlo me  dice violacion de segmento segun yo es lo mismo que en el ejemplo anterio pero no se por que me da error
El programa revienta porque el valor inicial de la variable "d" es no definido o basura (1), despues cuando aplicas indireccion con el operador "->" (2) resulta en "(*BASURA).nom" y eso genera UB (en tu caso el programa revienta).

buen con respecto al siguiente codigo ya lo intente de varias formas manejado memoria dinamica arays,  y nadamas con puro texto enviado por la funciones como fprintf, fputs, y fwrite y ninguna imprime el segunda linea.
Acabo de ejecutar ese programa y aun con los detalles menores (por supuesto se deben corregir) se crea el archivo "hola" en el directorio actual y este contiene los 30 bytes, que no se vean como texto es normal.

Un saludo
Páginas: 1 ... 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 46 47 48 ... 160
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines