C/Visual C - Principiante en C necesita solucion para problema de Clase

 
Vista:

Principiante en C necesita solucion para problema de Clase

Publicado por Atton-10 (3 intervenciones) el 10/03/2011 18:08:44
Disculpen las molestias pero Necesito hallar la solucion del ejercicio y el problema que nos manda realizar es el siguiente.

1.- Se leera una cadena de caracteres del teclado.
2.- De igual manera se procederá a la lectura de un numero de telefono.

3.- La cadena de caracterese se comprimira de la siguiente forma :
El codigo ASCII destina 8Bit a la represntacion de las letras pero realmente se utilizan 7 por lo que realizaremos la comprension eliminando el octavo Bit del primero de los caracteres y lo ocupara el menos significativo del siguiente caracter. Con esto del segundo caracter sobraran dos bits, que seran ocupados con los dos bits menos significativos del tercercaracter.... y asi sucesivamente.

4.- Los numeros se guardaran como nible en orden inverso si el numero es, por ejmplo el 123456789, se guardara como 21436587F9 indicando el F el termino del numero y sirve para
completar el byte.

5.- Con todo ello se realizara una cadena que estará compuesta, en el orden que se indica por: la longitud de la cadena resultante, la primera de las cadenas comprimida y por fin el numero de telefono tratado comos e indico.

Este es el ejercicio completo, de veras me ayudarias con el problema si lo conseguimos sacar. Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Principiante en C necesita solucion para problema de Clase

Publicado por Oagimenez (15 intervenciones) el 10/03/2011 23:17:52
Hola.
En primer lugar quisiera saber cual compilador tenes. EN segundo lugar no se si tenes en claro como es el problema. El codigo Ascii usa 7 bits de los 8 del byte. Vos podes usar el menos significatico para colocar el mas significativo del caracter siguiente y asi sucesivamente. Por que en tu enunciado pones que lo ocupara el menos significativo del siguiente y me confunde. Por otro lado los numeros en el codigo ascii tambien podes agruparlos por nible e invertirlos y adoptar el caracter F para indicar el fin de los numeros. Te paso por las dudas para clarificarte un poco mas, si esta todo oks decime asi te paso un codigo ejemplo para orientarte.
Saludos

http://es.wikipedia.org/wiki/Archivo:ASCII_Code_Chart-Quick_ref_card.png

El código ASCII
El juego de caracteres ASCII (excluyendo los caracteres extendidos definidos por IBM) está dividido en cuatro grupos de 32 caracteres. Los primeros 32 caracteres, del código ASCII 0 hasta el ASCII 1Fh16 (3110) forman un juego especial de caracteres no imprimibles llamados caracteres de control ya que ejecutan varias operaciones de despliegue/impresión en lugar de mostrar símbolos, ejemplo de éstos son el retorno de carro que posiciona el llamado cursor al lado izquierdo de la actual línea de caracteres, avance de línea que mueve hacia abajo el llamado cursor una línea en el dispositivo de salida. Desafortunadamente, los diferentes caracteres de control ejecutan diferentes operaciones dependiendo del dispositivo de salida ya que existe poca estandarización al respecto.
El segundo grupo de caracteres comprende varios símbolos de puntuación, caracteres especiales y dígitos numéricos, los caracteres mas notables de éste grupo son el caracter de espacio (código ASCII 20h) y los dígitos numéricos (códigos ASCII 30h al 39h). Observe que los digitos numéricos difieren de sus respectivos valores sólo en el nibble de alto orden, restando 30h de un código numérico ASCII dado se obtiene el equivalente numérico.
El tercer grupo de caracteres ASCII está reservado a las letras mayúsculas. Los códigos ASCII para los caracteres "A" a la "Z" están en el rango comprendido entre 41h y 5Ah (65 al 90 decimal). Como éstos caracteres están definidos de acuerdo al alfabeto utilizado en el idioma inglés solo hay 26 diferentes caracteres alfabeticos utilizando los seis códigos restantes para varios símbolos especiales.
El cuarto y último grupo de caracteres ASCII está reservado a las letras minúsculas, cinco símbolos especiales adicionales y otro caracter de control (borrar). Los caracteres ASCII para las letras minúsculas utilizan los códigos 61h al 7Ah. Si Usted convierte a binario los códigos correspondientes a las letras mayúsculas y minúsculas observará que los símbolos para las mayúsculas difieren de sus respectivas minúsculas en una posición de bit. Las letras mayúsculas siempre contienen un cero en la posición cinco en tanto que las letras minúsculas contienen un uno en la misma posición, es posible utilizar éste hecho para convertir de mayúsculas a minúsculas y viceversa.
De acuerdo con lo ya expuesto podemos afirmar que los bits de posición seis y cinco determinan qué caracteres ASCII estamos utilizando de acuerdo a la siguiente tabla:
Bit 6 Bit 5 Grupo
0 0 Caracteres de control
0 1 Dígitos y puntuación
1 0 Letras mayúsculas y caracteres especiales
1 1 Letras minúsculas y caracteres especiales
Saludos nuevamente.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Principiante en C necesita solucion para problema de Clase

Publicado por Atton-10 (3 intervenciones) el 11/03/2011 15:12:07
El compilador que utilizo es el CodeBlocks generalmente pero tambien puedo utilizar el CCS para compilar en cualquiera de los dos casos.
Respondiendo a lo otro si tengo claro como actua el codigo ASCII y quizas mi duda es sobre el problema porque no lo tengo del todo claro como deberia de ir como bien as comentado tu.
En el ejercicio te viene un ejemplo de la comprension de la cadena "hello"
A la que la "h"= 68, e= 65, l=6C, l=6C, o=6F y sus binarios son
1101000 / 1100101 / 1101100 / 1101100 / 1101111
Pues de aqui se empieza eliminando el bit 1 d la "e" y se le añade como bit 8 a la "h" y la "e" te queda en binario 110010 lo cual aora le acen falta 2 bits el 7 y el 8 y se cogen del bit 1 y 2 de la "l" y quedaria 00110010 con lo que tanto la "h" y la "e" quedarian comprimidas en E8 y 32. y asi luego serian 3 bits... 4 bits y sucesivamente siempre añadiendolos del bit 8 para atras.
Espero poder aber aclarado tu duda. Yo aora lo veo algo mas claro pero aun asi me cuesta programar algo asi.
Y el apartado de los numeros es como bien explicas el agruparlos como nible e invertirlos pero es algo que no se acer y menos indicar con la F el ultimo numero.
Gracias de nuevo . Espero poder aberte ayudado en la aclaracion .
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Principiante en C necesita solucion para problema de Clase

Publicado por Oagimenez (15 intervenciones) el 11/03/2011 20:16:45
Si oks. ahora me quedo claro..
ya te voy a escribir un codigo fuente...
Lo voy a hacer en dos partes.. Una voy a generar un array donde se almacenen los datos con el resultado de la compresion. Y otra un archivo donde se graben dichos datos del resultado. supongo que los transmitiran por un ports serial pero a lo mejor sea otra etapa.
Para el lunes te voy a poner el codigo con la idea. despues podes mejorarlo seguramente.
Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Principiante en C necesita solucion para problema de Clase

Publicado por Atton-10 (3 intervenciones) el 15/03/2011 11:35:30
No conteste antes porque estuve estudiando sobre el trabajo.
Espero tu codigo para ver como es y poder mejorarlo.
Graciasss y Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Principiante en C necesita solucion para problema de Clase

Publicado por daniel (1 intervención) el 28/03/2011 17:21:30
hola necesito pasar el codigo de pseint a c++ pero estoy iniciando a estudiar programacion y necesito al menos este paso para ir entendiendo, es una tarea y es urgentemente, e leido muchos tutoriales pero esto es cuestion de tiempo, aqui les va el codigo en pesint:
Proceso conversor_de_monedas// nombre asignado a la utilidad
Repetir
Escribir "";
Escribir "CONVERSOR DE MONEDAS:";
Escribir "*******************************************************************************";
Escribir "A CONTINUACION SU MENU DE OPCIONES "; // permitira la interaccion maquina-usuario segun la necesidad del mismo
Escribir "*******************************************************************************";
Escribir "OPCION 1. CONVERTIR DE $ a Bs.F"; // $= dolares Bs.F= Bolivares Fuertes Venezolanos
Escribir "OPCION 2. CONVERTIR DE Bs.F a $";
Escribir "OPCION 3. CONVERTIR DE PESOS COLOMBIANOS A Bs.F";
Escribir "OPCION 4. CONVERTIR DE Bs.F A PESOS COLOMBIANOS";
Escribir "OPCION 5. CONVERTIR DE EUROS A Bs.F";
Escribir "OPCION 6. CONVERTIR DE Bs.F A EUROS";
Escribir "OPCION 7. Salir";
Escribir "______________________________________________________";
Escribir "SELECCIONE EL NUMERO DE LA OPCION QUE DESEE UTILIZAR:";
leer opcion;
Segun OPCION Hacer
1:
Escribir "¿Cuantos Calculos Desea Realizar Para Esta Opcion?";//se solicita el Numero de veces q desee utilizar la misma opcion.
Leer NUM_CALCULOS;// variable de tipo entero para n calculos
Para CONTAR<-1 Hasta NUM_CALCULOS Con Paso 1 Hacer
Escribir "POR FAVOR INGRESE LA CANTIDAD DE DOLARES ($) A CONVERTIR";// se solicita el valor a convertir
Leer dolares;// variable de tipo carácter numérico real.
Escribir "POR FAVOR INGRESE EL VALOR DE DOLAR en Bs.F PARA EL DIA DE HOY";// se solicita el valor de la moneda
Leer valor_d_en_bsf// variable de tipo carácter numérico real.
cal2<-dolares*valor_d_en_bsf;// expresion compuesta que nos realiza el calculo matematico usando operadores aritmeticos
Escribir "*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/";
Escribir "VALOR DE LA MONEDA:", valor_d_en_bsf,"Bs.f el Dolar";// se muestra en pantalla al usuario (finalizando resultados)
Escribir "VALOR DE LA CANTIDAD A CONVERTIR:",dolares, "Dolares ($)";// se muestra en pantalla al usuario (finalizando resultados)
Escribir "SU TOTAL DEL CAMBIO ES:",cal2,"Bs.f";// Resultado obtenido y mostrado en panatalla
Escribir "*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/";
FinPara
2:
Escribir "¿Cuantos Calculos Desea Realizar Para Esta Opcion?";
Leer NUM_CALCULOS;
Para CONTAR<-1 Hasta NUM_CALCULOS Con Paso 1 Hacer
Escribir "POR FAVOR INGRESE LA CANTIDAD DE Bs.F A CONVERTIR";
Leer bsf;
Escribir "POR FAVOR INGRESE EL VALOR DEL DOLAR($) en Bs.F PARA EL DIA DE HOY";
Leer valor_d_en_bsf;
cal1<-bsf/valor_d_en_bsf;
Escribir "*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/";
Escribir "VALOR DE LA MONEDA:", valor_d_en_bsf, " Bsf el Dolar";
Escribir "VALOR DE LA CANTIDAD A CONVERTIR:", bsf, " Bs.F";
Escribir "SU TOTAL DEL CAMBIO ES:",cal1," Dolares ($)";
Escribir "*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/";
FinPara
3:
Escribir "¿Cuantos Calculos Desea Realizar Para Esta Opcion?";
Leer NUM_CALCULOS;
Para CONTAR<-1 Hasta NUM_CALCULOS Con Paso 1 Hacer
Escribir "POR FAVOR INGRESE LA CANTIDAD DE PESOS COLOMBIANOS A CONVERTIR";
Leer p_c;
Escribir "POR FAVOR INGRESE EL VALOR DEL PESO EN Bsf PARA EL DIA DE HOY";
Leer valor_p_en_bsf;
cal3<-p_c*valor_p_en_bsf;
Escribir "*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/";
Escribir "VALOR DE LA MONEDA:", valor_p_en_bsf,"Bs.F el Peso Colombiano";
Escribir "VALOR DE LA CANTIDAD A CONVERTIR:", p_c, "Pesos colombianos";
Escribir "SU TOTAL DEL CAMBIO ES:",cal3, "Bs.F";
Escribir "*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/";
FinPara
4:
Escribir "¿Cuantos Calculos Desea Realizar Para Esta Opcion?";
Leer NUM_CALCULOS;
Para CONTAR<-1 Hasta NUM_CALCULOS Con Paso 1 Hacer
Escribir "POR FAVOR INGRESE LA CANTIDAD DE Bs.F A CONVERTIR";
Leer bsf;
Escribir "POR FAVOR INGRESE EL VALOR DEL PESO COLOMBIANO en Bs.F PARA EL DIA DE HOY";
Leer valor_p_en_bsf;
cal4<-bsf/valor_p_en_bsf;
Escribir "*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/";
Escribir "VALOR DE LA MONEDA:", valor_p_en_bsf,"Bsf el Peso Colombiano";
Escribir "VALOR DE LA CANTIDAD A CONVERTIR:", bsf,"Bs.F";
Escribir "SU TOTAL DEL CAMBIO ES:",cal4, "Pesos";
Escribir "*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/";
FinPara
5:
Escribir "¿Cuantos Calculos Desea Realizar Para Esta Opcion?";
Leer NUM_CALCULOS;
Para CONTAR<-1 Hasta NUM_CALCULOS Con Paso 1 Hacer
Escribir "POR FAVOR INGRESE LA CANTIDAD DE EUROS A CONVERTIR";
Leer e;
Escribir "POR FAVOR INGRESE EL VALOR DEL EURO en Bs.F PARA EL DIA DE HOY";
Leer valor_e_en_bsf;
cal5<-e*valor_e_en_bsf;
Escribir "*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/";
Escribir "VALOR DE LA MONEDA:", valor_e_en_bsf,"Bsf el euro";
Escribir "VALOR DE LA CANTIDAD A CONVERTIR:", e,"EUROS";
Escribir "SU TOTAL DEL CAMBIO ES:",cal5, "Bs.F";
Escribir "*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/";
FinPara
6:
Escribir "¿Cuantos Calculos Desea Realizar Para Esta Opcion?";
Leer NUM_CALCULOS;
Para CONTAR<-1 Hasta NUM_CALCULOS Con Paso 1 Hacer
Escribir "POR FAVOR INGRESE LA CANTIDAD DE Bs.F A CONVERTIR";
Leer bsf;
Escribir "POR FAVOR INGRESE EL VALOR DEL EURO en Bs.F PARA EL DIA DE HOY";
Leer valor_e_en_bsf;
cal6<-bsf/valor_e_en_bsf;
Escribir "*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/";
Escribir "VALOR DE LA MONEDA:", valor_e_en_bsf,"bsf el Euro ";
Escribir "VALOR DE LA CANTIDAD A CONVERTIR:", e,"EUROS";
Escribir "SU TOTAL DEL CAMBIO ES:",cal6, "EUROS";
Escribir "*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/";
FinPara
7:
Escribir "_________________________________________________________________________";
Escribir "HASTA LUEGO, GRACIAS POR USAR EL CONVERSOR DE MONEDAS.";
Escribir "_________________________________________________________________________";
Escribir "autores: .Torres Duran Daniel V-20200464";
Escribir ". .Peña Marcos V-22986158";
Escribir ". .Mercado Rafael V-20847920";
Escribir "Ingenieria Informatica. seccion B. IUTE";
Escribir "_________________________________________________________________________";
De Otro Modo:
Escribir "OPCION INVALIDA";// en caso contrario a elegir otra opcion q no exista a las 7 que estan planteando.
Escribir "______________________________________________________________________";
FinSegun
Hasta Que OPCION=7
FinProceso
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar