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

#981
Cita de: avesudra en  7 Febrero 2013, 19:31 PM
El mismo efecto no tiene, aparentemente sí, pero en cadena[1] sigue estando la 'e' y así sucesivamente hasta el carácter nulo de final de cadena.
Mi comentario fue en respuesta al mensaje inmediatamente anterior (de rod00x3), en el utiliza esa función en la forma:
memset(cadena, 0, 1); /* <==aqui */
Por eso comente que no tiene caso utilizar una llamada a función cuando la asignación basta.

Solo un comentario, si lo primero que se piensa hacer con un array es almacenar en el una cadena:
memset(cad, 0, 100);
sprintf(cad, "El numero actual es: %dapresiamos", p);

No es necesario colocar primero (con la función memset) todos los caracteres a cero.

Un saludo
#982
Cita de: rod00x3 en  7 Febrero 2013, 18:03 PMPara evaluar que la cadena es nula basta con un:

if(cadena==NULL){//hacer algo}

o tengo que evaluar de alguna otra forma??
No tiene caso utilizar memset en la forma indicada ya que tiene el mismo efecto que la asignación:
cadena[0] = '\0';

Para verificar si el array almacena una cadena vacía basta con verificar el valor de su primer elemento:
if (cadena[0] == '\0'){
   /* Cadena vacia */
}else {
   /* Al menos un caracter */
}


Un saludo
#983
La forma mas sencilla para solucionar el problema es utilizando la función scanf con el especificador de formato " %c", de esta forma:
puts("Escribe una frase:");
gets(cadena);

puts("Caracter para cambiar:");
scanf(" %c", &cambiar);

puts("Caracter sustituto:");
scanf(" %c", &sustituir);

Con ello primero se descarta el espacio blanco (en este caso el '\n' de la linea anterior) y solo entonces se lee el carácter.

Y por supuesto se debe eliminar el uso de gets.

Un saludo
#984
Programación C/C++ / Re: alinear texto
7 Febrero 2013, 16:21 PM
Para imprimir un triangulo rectángulo (o un pirámide, o un rombo, son casos similares) se deben imprimir dos secuencias: la primera de caracteres de espacio para alinear y la segunda el relleno.

El problema aquí es la falta de una función que imprima de forma repetida un determinado carácter. La excepción es utilizar la función printf con los especificadores de anchura de campo y "*" para conseguir la repetición de espacios.

Un ejemplo que imprime un triangulo de dígitos (y nada mas) es:
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
   int num;
   int i;
   int j;
   
   puts("Dame un digito (1-9):");
   if (scanf("%d",&num) != 1)
      return EXIT_FAILURE;
   
   for (i = 0; i < num; i++){
      /* Secuencia de espacios (alineacion) mas un caracter */
      printf("%*d", num - i, i + 1);
     
      /* Caracteres restantes (relleno) */
      for (j = 0; j < i; j++)
         putchar('1' + i);
      putchar('\n');
   }
   
   return EXIT_SUCCESS;
}


Un saludo
#985
Cita de: NikNitro! en 31 Enero 2013, 18:51 PM
La verdad es que si, pero como ya dije son ejercicios de clase, y aún no hemos dado métodos
El problema: ya los están utilizando al llamar a la función miembro "size" de los objetos "pal1" y "pal2".

La mejor solución ya la dio Alex Mtx, si debido a los requisitos en clase solo deben utilizar arrays de caracteres deben tener cuidado con esto:
Código (cpp) [Seleccionar]
anag = (array1==array2);
Ello porque en el caso de los arrays (de cualquier tipo) cuando se utiliza el operador "==" no se comparan sus contenidos, se comparan sus direcciones en memoria, en tu caso esa comparación siempre resultara en el valor false.

Un saludo
#986
Programación C/C++ / Re: Ayuda con Archivos
4 Febrero 2013, 17:16 PM
Un error de diseño: solo puedes indicar que un nombre de usuario no es valido después de verificar todos los nombres, esa comprobación la debes colocar después del bucle donde lees todos los pares nombre + contraseña.

Por otra parte si se crea el archivo de datos el programa funciona correctamente salvo los detalles mencionados como fflush(stdin).

Tal vez el error se deba al contenido de tu archivo "accesobanco.txt", revisalo.

Un saludo
#987
Cita de: Puredepapas en  3 Febrero 2013, 04:19 AMse que se escapa del tema pero... si uso

notas=new float[contador];
notas=new float[contador*2];


el segundo new funcionaria como realloc?
No.

Cita de: Puredepapas en  3 Febrero 2013, 04:19 AMcomo haria la reasignación de memoria cuando ya invoque a new antes ?
En C++ evitas la reasignación, en su lugar utilizas un contenedor, por ejemplo la clase vector.

Un saludo
#988
Cuando declaras un objeto de la clase string su valor inicial es una cadena vacía, esto no es necesario:
Código (cpp) [Seleccionar]
string mens2="";
Basta con la declaración:
Código (cpp) [Seleccionar]
string mens2;

Un saludo
#989
Cita de: 0x3c en 31 Enero 2013, 03:39 AMal menos no hasta que lo termine puesto que la version que estoy leyendo es la 'introduccion' a C luego seguire con la version que le sigue...
Supongo con "version" en realidad te refieres a "Capitulo", ¿Correcto?

Cita de: 0x3c en 31 Enero 2013, 03:39 AMNo, no dejare de usar este libro para aprender C, no lo cambiare por otro, [...] si me decido a cambiar de libro seria como retroceder pues me gusta el ritmo y la forma como los temas son explicados
No vas a perder tiempo empezando de nuevo (con un libro de calidad) pero a cambio vas a tener que malgastar tiempo (debido a los errores). Yo me iría por lo primero pero, bueno, cada quien decide. Suerte.

Un saludo
#990
Cita de: avesudra en 30 Enero 2013, 19:29 PMno sé donde notas la actitud de pedantería si es por lo de "hacerlo bien no mata a nadie", solo me remito a lo que ya se ha hablado en el foro.
No me refería a ti, me refería a mi en el sentido de "entrar de metiche" y corregir "a diestra y siniestra". A veces me pasa. ;)

Un saludo