Ir a contenido



Foto

Crear un programa en C con ASCII



  • Tema Cerrado Este tema está cerrado
8 respuestas en este tema

#1 Fabian rivera

Fabian rivera

    Warian@ - NSI

  • Leecher
  • 2 mensajes
  • Pais:Chile
  • Sexo:Hombre

Escrito 18 de julio de 2012 - 20:18

necesito crear un programa en c este es el ejercicio que pide el profe
"Con propósitos de protección, un mensaje de texto se codifica
reemplazando cada vocal por el número (1 a 5) correspondiente al orden
natural de las vocales y cada consonante es codificada por la
consonante que le sigue en el abecedario. Por ejemplo, la consonante b
es codificada por la consonante c. Sin embargo, existen casos
especiales, por ejemplo, la consonante d debe ser codificada por la
consonante f y no por la vocal e (existen 5 de estos casos).
Escribir una función que lea, carácter a carácter, un texto finalizado
con un '.' e imprima, también carácter a carácter, el respectivo texto
codificado.

Ayudas:
--Estudie como leer caracteres en C (opción "%c" con la función scanf).
--Para facilitar la codificación puede utilizar el código ASCII"
  • 0

#2 AshWilliams

AshWilliams

    ₪ Moderador Groovy ₪

  • Ex- Staff
  • 3.067 mensajes
  • Pais:Chile
  • Sexo:Hombre
  • Lugar:Viña del Mar, en una tienda llamada S-Mart
  • Intereses:Conocimiento, Necronomicón, Batallar contra hordas de Deadites

Escrito 18 de julio de 2012 - 21:13

Se mueve a Aplicaciones de Escritorio ;)

PS: Está bastante fácil......pregunta, puedes usar arreglos????

Saludos :krider:
  • 0

There I was. Face-to-face with the mother of all ugly. So I say "Come get some", and BLAM, no more Mr. Nasty Face.
-Ashley 'Ash' J. Williams


stackoverflow.png
codecademy.png

Síganme en Twitter @JefeMaestro337

function dead_already(){
    if(is_tshirt_dirty(MAX)){
        alert('Yupikayey motherfucker!');
        return false;
    }else{
        return false
    }
}

:


#3 Fabian rivera

Fabian rivera

    Warian@ - NSI

  • Leecher
  • 2 mensajes
  • Pais:Chile
  • Sexo:Hombre

Escrito 18 de julio de 2012 - 23:17

siii se puede usar lo que sea pero tiene que ser c y se tiene que compilar en linux :D
  • 0

#4 AshWilliams

AshWilliams

    ₪ Moderador Groovy ₪

  • Ex- Staff
  • 3.067 mensajes
  • Pais:Chile
  • Sexo:Hombre
  • Lugar:Viña del Mar, en una tienda llamada S-Mart
  • Intereses:Conocimiento, Necronomicón, Batallar contra hordas de Deadites

Escrito 19 de julio de 2012 - 09:20

No te tinca hacer 2 arreglos....uno solo con vocales y el otro con consonantes...asi estaría super fácil el codificar el mensaje ;)

Saludos :krider:
  • 0

There I was. Face-to-face with the mother of all ugly. So I say "Come get some", and BLAM, no more Mr. Nasty Face.
-Ashley 'Ash' J. Williams


stackoverflow.png
codecademy.png

Síganme en Twitter @JefeMaestro337

function dead_already(){
    if(is_tshirt_dirty(MAX)){
        alert('Yupikayey motherfucker!');
        return false;
    }else{
        return false
    }
}

:


#5 quesozerowitz

quesozerowitz

    Warian@ - Normal

  • Warianos
  • 278 mensajes
  • Pais:Chile
  • Sexo:Mujer

Escrito 19 de septiembre de 2012 - 23:53

Lo pudiste hacer?
me gustaría saber cual es la solución, manda el código ps xD me pareció re entrete :P
  • 0

#6 known

known

    Warian@ - Pro

  • Warianos
  • 319 mensajes
  • Pais:Chile
  • Sexo:Hombre

Escrito 23 de septiembre de 2012 - 15:38

Haz una función que te diga si una letra es una vocal o no.
Haz otra función que te calcule la siguiente letra del alfabeto: si el caracter ingresado es 'd', 'h', 'n' o 't', que retorne caracter + 2 (2 teclas mas adelante), en caso contrario, retorna caracter+1. (En ascii, los caracteres son consecutivos en orden alfabetico, y tienen representación numérica (ej: a=97, b=98, c=99, etc), puedes comprobar esto escribiendo en tu código " char letra = 'a'; printf("%i",a); " ).

Por cada letra del texto, si es vocal (usamos la primera funcion), la reemplazamos por su numero equivalente (unos pares de if).
Por el contrario, si es consonante, hacemos uso de la segunda funcion.

saludos !
  • 0
Se hacen clases particulares de programación, $7.500 la hora.
Lenguajes de programación que manejo: C/C++, Java, C#, Php, Python.

También manejo tecnologías web: HTML, CSS, jQuery, Php y bases de datos Mysql.

Contacto:

Celular: 9 6636283 (Giovanni Benussi)
Email: giovanni.benussi@usach.cl
Msn: known_life@hotmail.com
Skype: giovannibenussi
Facebook: www.facebook.com/giovanni.benussi

#7 xomarx69

xomarx69

    Warian@ - Elite

  • Moderador
  • 603 mensajes
  • Pais:Peru
  • Sexo:Hombre
  • Lugar:Santiago de Chile

Escrito 25 de septiembre de 2012 - 09:25

Y si usas tablas hash?? http://developer.gno...ash-Tables.html
Suerte!
  • 0

#8 zafrada

zafrada

    Warian@ - Elite

  • Warianos
  • 689 mensajes
  • Pais:Chile
  • Sexo:Hombre

Escrito 01 de octubre de 2012 - 03:30

Por el enunciado del problema, yo creo que apunta a el uso del switch case múltiple. Es una paja, pero el código queda entendible.

void codificar(char *string ){
int i;
for(i=0;i<strlen(string);i++){
	 switch (*(string + i)){
		 //si son vocales, le asignamos el número correspondiente
		 case 'a':
		 case 'A':
			 *(string+i) = '1';
			 break;
		 case 'e':
		 case 'E':
			 *(string+i) = '2';
			 break;
		 case 'i':
		 case 'I':
			 *(string+i) = '3';
			 break;
		 case 'o':
		 case 'O':
			 *(string+i) = '4';
			 break;
		 case 'u':
		 case 'U':
			 *(string+i) = '5';
			 break;
		 //si son consonantes que preceden a una vocal, le sumamos 2 para saltar la vocal
		 case 'd':
		 case 'h':
		 case 'n':
		 case 't':
		 case 'D':
		 case 'H':
		 case 'N':
		 case 'T':
			 *(string+i) = *(string+i) + 2;
			 break;
		 //si es la z o Z, como precede a la "a", no basta con sumarle 1
		 case 'z':
			 *(string+i) = 'b';
			 break;
		 case 'Z':
			 *(string+i) = 'B';
			 break;
		 //también podríamos ver los símbolos que no son letras, esto es un ejemplo, pero lo conveniente
		 //sería verificar antres de entrar al switch case si el carácter es una letra o no
		 case ' ':
		 case '.':
		 case ',':
		 case '-':
			 break;
		 default:
			 *(string+i) = *(string+i) + 1;
			 break;
	 }
}
}
Entonces desde el main vas leyendo carácter a carácter y guardando en un buffer, y cuando te metan un punto, terminas de leer y llamas a la función pasándole como parámetro la cadena de carácteres. Como lo que le pasas es el puntero a la cadena, entonces te modifica la cadena automáticamente, por eso la función es void.

Un ejemplo de uso:

int main(){
    char palabra[100];
    printf("Ingrese palabra a codificar: ");
    scanf("%s", palabra);
    codificar(palabra);
    printf("\nPalabra codificada: %s\n", palabra);
    return 0;
}


Saludos ;)

Este tema ha sido editado por zafrada: 01 de octubre de 2012 - 03:37

  • 0

Imagen enviada

Imagen enviada



"Ateísmo es a religión, como abstinencia es a posición sexual"


Spoiler

#9 AshWilliams

AshWilliams

    ₪ Moderador Groovy ₪

  • Ex- Staff
  • 3.067 mensajes
  • Pais:Chile
  • Sexo:Hombre
  • Lugar:Viña del Mar, en una tienda llamada S-Mart
  • Intereses:Conocimiento, Necronomicón, Batallar contra hordas de Deadites

Escrito 01 de octubre de 2012 - 19:37

Cerrado.....ahora que recuerdo hace tiempo vimos este tema con el user y lo solucionamos vía email...se me había olvidado cerrarlo ;)

Saludos :krider:
  • 0

There I was. Face-to-face with the mother of all ugly. So I say "Come get some", and BLAM, no more Mr. Nasty Face.
-Ashley 'Ash' J. Williams


stackoverflow.png
codecademy.png

Síganme en Twitter @JefeMaestro337

function dead_already(){
    if(is_tshirt_dirty(MAX)){
        alert('Yupikayey motherfucker!');
        return false;
    }else{
        return false
    }
}

:





0 usuario(s) viendo este foro

0 miembros, 0 invitados, 0 usuarios anónimos

Ocultar Publicidad