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

 

 


Tema destacado: (TUTORIAL) Aprende a emular Sentinel Dongle By Yapis


  Mostrar Mensajes
Páginas: 1 2 [3] 4 5
21  Programación / Programación C/C++ / Re: Duda sentencia return en C en: 1 Mayo 2014, 22:08 pm
¿Lo probaste? Gran parte de las dudas se pueden resolver mediante la practica, igual te repito que deberias conseguir un libro o un tutorial, esta pregunta no tiene mucho sentido y es mejor arrancar con una base solida.

Eso no va a compilar...

Perdonad, es que hoy estoy un poco empanao. Es que yo suelo hacer los programas comenzando su escritura siempre por la función main y  una vez que termina esta pongo el código de las demás funciones y justamente estaba al revés, por lo que yo veía a la sentencia como global...  :-\

Lo siento por las molestias.

Un saludo y muchas gracias a ambos
22  Programación / Programación C/C++ / Re: Duda sentencia return en C en: 1 Mayo 2014, 21:44 pm
A la funcion que haya llamado (la funcion llamadora) a la funcion donde esta ese codigo (la funcion llamada). Te recomiendo que obtengas algun libro o en su defecto tutorial.

No me he explicado bien. Lo que quiero decir es cual es el efecto aue tiene un return cuando se pone por ejemplo global (fuera de cualquier función incluida main).

Un saludo
23  Programación / Programación C/C++ / Duda sentencia return en C en: 1 Mayo 2014, 21:09 pm
Hola, supongo que les sonará muy básico, pero no sé que hace el poner return en una sentencia como un if (por ejemplo):

Es decir, he visto códigos que ponen cosa como:
Código:
if (...){
   return ... ;
}

Mi duda principal es, ¿a dónde devuelven el valor? (suponiendo claro que esté fuera de cualquier función distinta de main. También lo he visto en sentencias globales a cualquier función)

Un saludo
24  Programación / Programación C/C++ / Re: Duda con estructuras C en: 30 Abril 2014, 17:21 pm
Solo agregar que en C la conversión explicita no es necesaria y si utilizas "sizeof *puntero" en la llamada a malloc:
Código
  1. puntero = malloc(N * sizeof *puntero);
Evitas indicar el tipo apuntado (lo que reduce errores lógicos).

Un saludo

Gracias por el detalle.

Pero en este fragmento de programa:

Código:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>

typedef char* String;

struct jugador{
String nombreJugador;
int nFichas;   // número de fichas que tiene el jugador
int posicion;   // NO ES REALMENTE UNA POSICIÓN SINO EL ORDEN EN QUE VA A JUGAR
String cara;
String palo;
};


struct jugador *Jugador;

Jugador = malloc(5 * sizeof *Jugador);   // definimos 5 jugadores

int main(void){

// codigo

}

Me da error en
Código:
struct jugador *Jugador;

Jugador = malloc(5 * sizeof *Jugador);   // definimos 5 jugadores

Y no sé cual puede ser el fallo.

Un saludo



Solo agregar que en C la conversión explicita no es necesaria y si utilizas "sizeof *puntero" en la llamada a malloc:
Código
  1. puntero = malloc(N * sizeof *puntero);
Evitas indicar el tipo apuntado (lo que reduce errores lógicos).

Un saludo

Perdona, ya vi que no funcionaba porque estaba definido como global.
Pero no sé porque.

Un saludo
25  Programación / Programación C/C++ / Duda con estructuras C en: 30 Abril 2014, 13:24 pm
Si por ejemplo tengo la siguiente estructura de datos:

Código:
struct nombre{
   // código
};

struct nombre array[N];   // siendo N un entero cualquiera

Esto lo entiendo; creo un array que contiene N estructuras.

Ahora lo que quiero es hacer lo equivalente a lo anterior pero con un puntero.
Yo he intentado esto, pero seguro que es erróneo:

Código:
struct nombre{
   // código
};

struct nombre *puntero;
puntero = (struct nombre*)malloc(N * sizeof(nombre));

Espero que me puedan ayudar. Un saludo.
26  Informática / Electrónica / Cargador se quemó (creo) en: 27 Abril 2014, 18:07 pm
Estaba el otro día programando cuando de repente oigo un pequeño chispazo proveniente de mi cargador de portátil. En ese momento se fue la luz. Despues, tras volver a poner los fusibles bien miré y comprobé que no cargaba el portátil.
Quería saber si podía haber dañado mi portátil. Aparentemente funciona, pero quiero descartar cualquier tipo de daño. Como dato el cargador es el que venía con el portátil.

Un saludo.
27  Programación / Programación C/C++ / Re: Ejercicio compila pero no se ejecuta en: 20 Abril 2014, 22:47 pm
Como ya te comentaron el problema principal se debe a que tratas de almacenar todas las lineas cuando lo único que haces con ellas es obtener (mediante atoi) un entero. Es mejor declarar un solo array de caracteres (ya lo haces, el array "nAlumnos") y reutilizar este cada vez que debas leer una linea de la entrada estándar.

Si con todo quieres utilizar memoria dinámica debes reservar primero la memoria del bloque principal y a continuación la memoria para cada linea. Antes de terminar el programa liberas la memoria de cada linea y por ultimo la del bloque principal. De esta forma:
Código
  1. /* ... */
  2.  
  3. #define TAMANIO  10
  4.  
  5. /* ... */
  6.  
  7. char nAlumnos[TAMANIO];
  8. int alumnos;
  9. int longitud;
  10. int x;
  11. int i;
  12. char **notas;
  13.  
  14. /* ... */
  15.  
  16. /* 1) Obtienes el numero de alumnos */
  17.  
  18. /* 2) Reservas el bloque de memoria principal */
  19. notas = malloc(alumnos * sizeof *notas);
  20.  
  21. /* 3) Reservas el bloque de memoria para cada alumno */
  22. for (i = 0; i < alumnos; i++)
  23.   notas[i] = malloc(TAMANIO);
  24.  
  25. /* 4) Realizas las operaciones del programa */
  26.  
  27. /* 5) Liberas la memoria utilizada por cada alumno */
  28. for (i = 0; i < alumnos; i++)
  29.   free(notas[i]);
  30.  
  31. /* 6) Liberas el bloque principal */
  32. free(notas);

Un saludo

Lo voy pillando poco a poco.
Muchas gracias por curraros tanto las respuestas :)

Un saludo.
28  Programación / Programación C/C++ / Re: Ejercicio compila pero no se ejecuta en: 11 Abril 2014, 10:51 am
Cambia:
Código
  1. *notas = malloc(alumnos * sizeof (char));

Por:
Código
  1. notas = malloc(alumnos * sizeof (char));

Una última cosa y ya doy por solucionada la duda.
Para liberar la memoria que uso cuando reservo con malloc tendré que usar free así no?
Código:
free(notas[i]);
después del
Código:
while(x == 0);
O uso
Código:
free(notas)
solamente?

Un saludo.
29  Programación / Programación C/C++ / Re: Ejercicio compila pero no se ejecuta en: 10 Abril 2014, 23:01 pm
Es otra alternativa a la que puede ponerse el pero de que algún compilador no la acepte. En general la uso para matrices normalitas. Si el tamaño es importante uso asignación dinámica de memoria.

Salu2!.


Una última cosa, el compilador me da (en modo estricto) el siguiente warning:
Citar
54 9 [Warning] 'notas' is used uninitialized in this function [-Wuninitialized]

Respecto a:
Código:
char **notas;
*notas = malloc(alumnos * sizeof (char));

Un saludo.
30  Programación / Programación C/C++ / Re: Ejercicio compila pero no se ejecuta en: 10 Abril 2014, 20:50 pm
Todo el mal radica en cómo declaras notas y el char que usas.

Ya que usas array de longitud variable en:


Código
  1. int notasEnteras[alumnos];

no sé por qué no haces lo mismo con notas:

Código
  1. char *notas[alumnos];

Pero si lo quieres hacer con malloc, entonces:

Código
  1. char **notas;
  2. *notas=malloc(alumnos * sizeof (char));

¡¡¡¡ Saluditos! ..... !!!!




Funciona!!! Muchísimas gracias.
Aunque no comprendo muy bien lo de punteros a punteros, pero eso es cuestión de estudiarlo mejor.

Ya que me lo dijiste, ¿es mejor hacer
Código:
int notasEnteras[alumnos];
como un array dinámico? Sólo lo uso para almacenar enteros. (perdona mi ignorancia)

Un saludo
Páginas: 1 2 [3] 4 5
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines