Mostrar Mensajes

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


Mensajes - Mayen Olivares

Páginas: 1 [2] 3
21
Aprender a programar desde cero / Re:Ayuda Con BC y C++
« en: 03 de Febrero 2013, 22:07 »
Hola, te pongo aquí un código que al menos a mí me funciona, no sé qué compilador estás usando así que a lo mejor tienes que hacerle alguna adaptación para poder ejecutarlo con tu compilador

Veo en tu código cosas que no se entienden

encrip=cadena;
cadena=encrip+2;


Si encrip es un número no puedes asignarle una cadena

Aquí te dejo el código, a ver si te sirve, ten en cuenta que las cadenas son arrays de caracteres, de ahí que tengas que usar bucles o bien for o bien do while

Código: [Seleccionar]
#include<stdio.h>
#include<string.h>

int main() {

int encrip=0;
int i=0;
typedef char TipoCadena[40]; //Declaramos el TipoCadena


TipoCadena cadena; //Declaramos la variable cadena


printf("ingrese el texto a encriptar \n");
scanf("%s",&cadena);

printf("El numero de caracteres en la cadena es %d \n",strlen(cadena));


typedef char TipoCadEncriptada[strlen(cadena)]; //Declaramos el tipo CadenaEncriptada
TipoCadEncriptada cadenaEncriptada;


do {

printf("Caracter extraido: %c con valor ascii %d \n",cadena[i], int(cadena[i]));
encrip = int(cadena[i]) +2;
cadenaEncriptada[i] = char(encrip);
printf("Caracter encriptado: %c con valor ascii %d \n",cadenaEncriptada[i], int(cadenaEncriptada[i]));

i=i+1;

} while (i < strlen(cadena));

printf("El texto encriptado es ");
for (int j=0; j<strlen(cadena); j++) {
printf("%c", cadenaEncriptada[j]);
}


return 0;

}


22
Hola!!! Igualmente felices fiestas!!! Al ver tu respuesta he caído en que al estar usando code::blocks, este entorno y compilador tiene integrada tanto la compilación en c como en c++. Yo estaba compilando en C, ahora al ver tu respuesta y que estabas utilizando c++ he pensado que probablemente sea debido a esto. c y c++ son muy parecidos pero tambien hay algunas pequeñas diferencias y a lo mejor es eso lo que me estaba ocurriendo, voy a intentar investigarlo a ver si efectivamente era eso, porque es muy raro que el mismo código compile y se ejecute en un entorno y en otro no. Voy a ir haciendo pruebas. Saludos!

23
Sí que te capto, me queda claro, si el compilador lo hace así pues así será. Ahora el problema que tengo es que cuando intento compilar el código que me has pasado tú me aparece un error:

PruebaForo4.cpp Línea 8 Columna 6. Elemento no esperado. Se esperaba:   Id |

El caso es que si comento la línea #include <alloc.h> el programa sí compila y logro ejecutarlo. Estoy usando code::blocks pero como lo instalé hace bastante tiempo y he estado cacharreando con los archivos de sistema a lo mejor lo tengo dañado y quizás lo mejor es que me lo instale otra vez.

Pero también me he ido a compiladores on-line y también me dicen que el código no es compilable, por ejemplo el compilador on-line codepad me dice Line 18: error: alloc.h: No such file or directory.

¿Con qué programa estás compilando y ejecutando tú?

Si dejo la línea comentada el resultado no me parece bueno. Por ejemplo si hago esta ejecución:

Ingrese el numero de caracteres de la cadena:3

Se ha reservado espacio de memoria para 3 caracteres
Ingrese la cadena:paco
El valor almacenado en la variable de la cadena es paco
Pulsar cualquier tecla para continuar.


Si he reservado espacio para 3 caracteres no creo debiera mostrar paco, sino pac.

24
Te agradezco que me estés echando una mano  ;D

Hay una cosa que no acabo de entender. Me comentas

3ro) Cuando haces referencia al puntero en las funciones printf y scanf deben ir sin el
       operador indirección (*)


Por ejemplo aquí:

printf("\nIngrese la cadena:");
scanf("%[^\n]",puntcadena);

printf("El valor almacenado en la variable de la cadena es %s", puntcadena);

En el scanf sí veo lógico escribir puntcadena sin más, puesto que puntcadena es un puntero que contiene la dirección de memoria donde está alojada la variable. En teoría sería lo mismo que hacer scanf("%[^\n]", &*puntcadena); pero esto último sería un poco tonto, porque sería como rescatar el contenido de la posición de memoria con * para luego volver a obtener la posición de memoria usando &.

En cambio aquí no lo veo tan lógico: printf("El valor almacenado en la variable de la cadena es %s", puntcadena); porque si puntcadena es un puntero, esta instrucción la veo como si estuviéramos diciendo que nos imprima por pantalla un puntero, y un puntero es una referencia a una posición de memoria y esto no tendría sentido imprimirlo por pantalla, aquí lo que yo vería lógico sería desreferenciar el puntero así: printf("El valor almacenado en la variable de la cadena es %s", *puntcadena); de esta manera lo que imprimiríamos por pantalla es el contenido de la variable a la que apunta el puntero. ¿No es así?

Espero no haberme liado demasiado


25
Hola iván, gracias por responder  :D Te cuento: estoy intentando ejecutar esto:

#include <stdio.h>
#include <stdlib.h>
//#include <malloc.h>

int main(){

int n;
char* puntcadena;
printf("Ingrese el numero de caracteres de la cadena:");
scanf("%d",&n);
puntcadena=(char*)malloc(n*sizeof(char));
printf("\nSe ha reservado espacio de memoria para %d caracteres", &n);
printf("\nIngrese la cadena:");
scanf("%s", &*puntcadena);
printf("El valor almacenado en la variable de la cadena es %s", &*puntcadena);

return 0;
}

Tengo un par de problemas:

Primer problema, que si dejo la línea #include <malloc.h> me salta un error de compilación.

Segundo problema: si dejo esa línea comentada, me compila pero al ejecutar me pasa por ejemplo esto

Ingrese el numero de caracteres de la cadena: 3

Se ha reservado espacio de memoria para 2293564 caracteres

Ingrese la cadena

Pero claro, ¡yo lo que esperaba era que me dijera que se había reservado espacio de memoria para 3 caracteres, no sé de donde sale el 2293564!

26
Hola Mastermind veo más o menos claro cómo se puede hacer el programa en c una vez has puesto la estructura del programa lo que no me parece tan facil es saber como llegar a esa estructura

27
Gracias Alastor, entonces por lo que entiendo malloc nos sirve para reservar un espacio de memoria para una variable referenciada por un puntero. Pero ¿esas variables p ó s sobre las que has realizado la asignación tienen algún contenido? Me refiero al si al escribir

p=(char*)malloc(n*sizeof(char)); /*Reserva memoria para 10 caracteres*/

¿La variable p tiene algún contenido como diez caracteres vacíos o su contenido es null?

28
Hola Alastor, agradezco tu esfuerzo pero me siento un poco perdido:

Trato de interpretar línea por línea:

Primera línea: declaramos una variable de tipo int denominada n
Segunda línea: declaramos un puntero a una variable de tipo char y a ese puntero lo denominamos s
Línea 3: pedimos al usuario que introduzca un número ¿Es esto correcto? (prefiero tener esto claro antes de tratar de pasar a la línea 4)

29
Hola ¿alguien podría explicar y poner un ejemplo sencillo de uso de la función malloc en C?

30
Genial Alastor!!! Un montón de gracias por esa explicación y ese código de ejemplo. Para mí el concepto de puntero me resulta un poco complejo porque no llego a entender bien qué es una dirección de memoria, pero me has aclarado un montón. Mil gracias

31
Me refiero a un ejemplo donde se vea la diferencia entre variable y puntero

33
He estado leyendo sobre punteros en C y por más que lo leo y lo releo para mí un puntero es una variable con un asterisco al lado, sé que estoy equivodado pero no logro entenderlo

34
De todo un poco... / Re:Duda codificación
« en: 03 de Mayo 2012, 00:30 »
Ahora me entero de esto del BOM y sin BOM, hasta ahora ni siquiera sabía que existiera  :o

35
Comunidad / Re:Saludos de un novato
« en: 02 de Abril 2012, 08:31 »
PUes nada has llegado a un buen sitio para "Aprender" jejejeje ;D.

Ahora eso sí nosotros no podemos aprender por tí....

Un saludo y bienvenido.

36
Hola, he leído la noticia publicada sobre la edición de libros en formato ebook y me ha parecido interesante. Mi sugerencia es que se amplíe al resto de títulos que teneis en la página web, ya que creo que bastantes personas estaríamos interesados en algunos de ellos , gracias




37
Hola Lola, entiendo que dices que antes php pero no me queda muy claro lo de los aviones.

38
Hola, me han preguntado que qué es preferible estudiar primero para aprender creación web y la verdad es que no he sabido qué responder porque lo que veo por ahí es que se utilizan las dos cosas, pero no sé si una va o debe ir primero que la otra.

39
A ver si entiendo bien. ¿El uso de esta librería consistiría en lo siguiente?

- Tener la librería (sistema de archivos) en un directorio o carpeta
- Invocar la carga de la librería y llamar a una función disponible en la librería
- Al invocar la función, la función se ejecuta

Estoy pensando en que sea algo similar a como funciona la carga de librerías en C/C++.

40
Creo que ya te he entendio, sería una especie de visor de fotografías o imágenes

Páginas: 1 [2] 3

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".