Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - amchacon

#1071
Te has planteado hacer una estructura tal que así:

Código (cpp) [Seleccionar]
struct datos
{
      string nombre;
      string telefono;
      string direccion;
      string notas;
};


Haces un array de esa estructura y listo.

Si le quieres añadir más tarde datos extra, se los puedes añadir sin modificar el codigo apenas. Podrías incluso poner array de strings dentro...
#1072
Programación C/C++ / Re: Indice de H
21 Marzo 2013, 17:07 PM
Primero saca los numeros, después ya los sumaras...
#1073
Él habla de matrices no de vectores...
#1074
No solo es una buena práctica de programación, sino que debes hacerlo en programas más grandes cuando ya no necesites esa matriz (o malgastaras memoria).

Si para reservar la matriz tienes que hacer esto:

Código (cpp) [Seleccionar]
int** Matriz = new int*[n];

for (int i = 0; i < n;i++)
    Matriz[i] = new int[n];


Para borrarla tendrás que hacerlo al reves:

Código (cpp) [Seleccionar]
for (int i = 0; i < n;i++)
      delete[] Matriz[i];

delete[] Matriz;
#1075
Ah saltate la sesión 1, creo que no tenía nada que ver con C++.

Aún conservo todas las soluciones de los ejercicios por si lo quieres mirar (los tengo que buscar).
#1076
Hardware / Re: [Duda] Notebook para programar
20 Marzo 2013, 23:38 PM
Cita de: Wofo en 20 Marzo 2013, 12:57 PM
-¿Vale la pena pagar más por un procesador un poco mejor? Por ejemplo, el i5 3230M.
No, yo tengo un i5 2400 y me vale para jugar y ver videos HD. Asi que...

Cita de: Wofo en 20 Marzo 2013, 12:57 PM-¿Es necesario 8GB de memoria o con 4GB/6GB está bien?
4 GB es más que suficiente para su uso. Yo también tengo 4 GB y solo uso el 30-50%.
#1077
Cita de: Khronos14 en 20 Marzo 2013, 22:15 PM
amchacon, el bucle está perfecto. Lo que hace es comprobar que el carácter actual es distinto de 0, que es el terminador de cadena.

Yo creo que el problema puede estar en que para cadena_temporal reservas 255 bytes y si contenido_linea tiene más caracteres = Segmentation Fault.


void eliminar_espacios(char *contenido_linea) {
char *cadena_temporal = (char *)malloc(strlen(contenido_linea) + 1);

while(*contenido_linea) {
if((*contenido_linea != 32) && (*contenido_linea != '\t')) {
contenido_linea++;
} else {
*cadena_temporal = *contenido_linea;
*(++cadena_temporal) = '\0';
}
}

return (void)contenido_linea;
}



Saludos.
Estas añadiendo caracteres nulos en cada iteración? Oo

Solo tienes que añadirselo al final.

Cita de: x64Core en 20 Marzo 2013, 22:46 PM
Por cierto, alguien me puede explicar que es esto:

void eliminar_espacios(char *contenido_linea) {
...
return (void)contenido_linea;




Pues es una buena pregunta, al pasar un cast como void nos quedaría algo así:

void eliminar_espacios(char *contenido_linea) {
...
return;


Es decir, no devuelves nada.
#1079
El fallo está en la condición del while:

while(*contenido_linea)
Esa condición siempre va a ser cierta, incluso aunque se sobrepase la cadena (no tienes garantía que haya un NULL al final!).

Está es la alternativa que te propongo:

# include <stdio.h>
# include <stdlib.h>
# include <string.h>

int main()
{
   char* contenido_linea = "Cosita linda y hermosa";
   char* cadena_temporal = (char *)malloc(255);
   int tamanyo = strlen(contenido_linea);
   int i = 0;
   int posicion = 0;

for (i = 0; i < tamanyo;i++)
{
if((contenido_linea[i] != 32) && (contenido_linea[i] != '\t')) {
cadena_temporal[posicion] = contenido_linea[i];
posicion++;
}
}
   cadena_temporal[posicion] = '\0'; // Añadimos el caracter nulo al final
   printf("%s",cadena_temporal);
   return 0;
}

#1080
Cita de: Miky Gonzalez en 20 Marzo 2013, 15:23 PMEstoy pensando como solucionar el problema que calcular elementos del array. Yo probé con:

unsigned int array[] = {0x00, 0x01, 0x02, 0x03, 0x04};
num_elementos = sizeof(array) / 4;

pero no devuelve el tamaño total del array, siempre devuelve 4. Según la especificación de C si llamo a sizeof(xxxx) me devuelve el tamaño de la variable, pero no lo hace.
No se pueden pasar array a funciones, lo que haces es crear un puntero al primer elemento del vector. De modo que esta declaración:

Código (cpp) [Seleccionar]
void Ejecutar_Programa(unsigned int array[])

Es una convección sintáctica, lo que en realidad quiere decir:

Código (cpp) [Seleccionar]
void Ejecutar_Programa(unsigned int* array)

Y el tamaño de un puntero unsigned int* es efectivamente de 4 bytes.

CitarEn cuanto a no colocar halt en el programa como fin de la ejecución por ello el código halt tiene como código OP: 0x00. Se supone que si se ejecuta una sección fuera del tamaño de variable finalizará.
Eso ocurriría si todos los elementos estuviesen inicializados a cero, pero no hay garantía.

En la implementación en C++ he resuelto esto pidiendole al usuario que te de cuantas instrucciones tiene su programa. Además así puedo implementar el goto sin problemas.