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 - Blaster

#81
Programación C/C++ / Re: COnsulta
18 Mayo 2014, 22:12 PM
Cita de: i.montecinossolar en 18 Mayo 2014, 20:54 PM
Hola buenas ! una duda ¿Cómo recorrer una cadena de caracteres carácter por carácter en lenguaje C? gracias!

Puedes usar un bucle for para recorrer cada indice de la cadena, un ejemplo:

Código (cpp) [Seleccionar]
char cadena[] = "Hola Mundo";
for (i = 0; cadena[i]!='\0'; i++)
  printf("%c", cadena[i]);


Saludos
#82
Cita de: ++c en 18 Mayo 2014, 20:47 PM
Es el último bucle for el que no llego a interpretarlo para que me imprima satisfactoriamente.

La inicialización cambiala por esta

Código (cpp) [Seleccionar]
k = (nivel * 2 - i) - 1;

Saludos
#83
Cita de: Caster en 18 Mayo 2014, 18:25 PM
Y ya aprovecho para preguntar una cosa, ¿es mejor inicializar siempre las variables para que no se llenen de basura y que den resultados inesperados?

Si, siempre debes inicializarlas te cuento por que el espacio de memoria "reservado" para tu variable pudo haber sido usado previamente por otro programa o aplicación, la cual libera ese espacio de memoria para el uso de otros programas, pero no necesariamente "borra" el contenido del mismo. Ese contenido no borrado en esa memoria liberada es lo que se llama "basura".

Por lo que una variable sin inicializar puede contener un valor arbitrario que puede generarte un resultado inesperado. Por eso es que se le asigna siempre un valor inicial, para que los resultados sean predecibles.

Saludos
#84
La variable i la debes inicializar a cero, si le pasas al programa un cinco el programa revienta por que en ese ambito el valor i es deconocido, contiene basura y al utilizarlo como indice sobrescribis otras direcciones de memoria

Saludos
#85
Cita de: Caster en 18 Mayo 2014, 16:39 PM
Ya tengo el código y creo que funciona bien, solo me queda saber como hacer para que desaparezcan esos caracteres basura que aparecen en el array, lei sobre la

Solo debes inicializarlo de esta manera

Código (cpp) [Seleccionar]
char digito_romano[20] = "";

Saludos
#86
Segun lo que entendi podrias hacerlo algo asi, suponiendo que ya tenemos ubicado el elemento a mover con las coordenadas (x, y) y con un if verificamos si el movimiento que el usuario quiere hacer no exceda el limite de la matriz  
Editado:

Código (cpp) [Seleccionar]
switch(mov)
{
     case 'N':
         if (x - pasos >= 0)
           m[x-pasos][y] = m[x][y], m[x][y] = '.';
     break;
     case 'S':
         if (x + pasos <= f-1)
           m[x+pasos][y] = m[x][y], m[x][y] = '.';
     break;
     case 'E':
         if (y - pasos >= 0)
           m[x][y-pasos] = m[x][y], m[x][y] = '.';
     break;
     case 'O':
 if (y + pasos <= c-1)
           m[x][y+pasos] = m[x][y], m[x][y] = '.';
     break;
}


Saludos
#87
Cita de: Caster en 12 Mayo 2014, 23:41 PM
Al dividir 15/35 da 0.4... por lo tanto lo redondea a 0 y después al multiplicarlo por 100 sigue dando cero, ¿no?

Correcto, como ya sabes todo número multiplicado por cero da cero

Saludos
#88
Cita de: Caster en 12 Mayo 2014, 22:58 PM
¿Y por qué el resultado es 0 haciendo las operaciones sin paréntesis?

En el codigo de Spiderboot al dividir el número de aprobados por el total, el resultado siempre es cero ya que en C siempre se trunca cualquier valor real donde interviene el tipo int pasandolo al entero mas cercano y luego al multiplicarlo por cien da el cero que mencionas

Saludos



#89
Para sacar el porcentaje de aprobados y reprobados del total, la operación la debes cambiar a esta

Código (cpp) [Seleccionar]
paprobados = (alaprobados*100)/total;
preprobados = (alreprobados*100)/total;


Utiliza el tipo float para obtener resultados mas precisos

Saludos.
#90
Cita de: Drewermerc en 11 Mayo 2014, 03:37 AM
bueno ya pude corregirlo.
y bueno 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.

La estructura datos y da son dos estructuras diferentes por lo tanto el puntero d de tipo da debe apuntar a una instancia de la estructura da en tu caso la asignas a una instancia de datos eso es una asignación incompatible, debe tirarte una warning

Saludos