elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Numeros Romanos
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 3 Ir Abajo Respuesta Imprimir
Autor Tema: Numeros Romanos  (Leído 12,674 veces)
05K4R1N

Desconectado Desconectado

Mensajes: 7

Desarrollo e Investigación


Ver Perfil
Numeros Romanos
« en: 3 Junio 2013, 21:42 pm »

Para matar mi aburrimiento tuve que hacer esto y ahora ya me tuvo encerrado esto... ayudenme a corregirlo... donde esta el error?? !!
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <conio.h>
  4.  
  5. main(){
  6.       char romano[]={};
  7.       printf("Ingrese Numero Romando: ");
  8.       scanf("%s",&romano);
  9.       fflush(stdin);
  10.  
  11.       char rom[]={' ','I','V','X','L','C','D','M'};
  12.       int valor[]={0,1,5,10,50,100,1000};
  13.  
  14.       convertidor(romano,rom,valor);
  15. }
  16. void convertidor(char rom1[],char rom2[],int v[]){
  17.     int suma=0,anterior=0;
  18.     char letra=' ';
  19.     int i,j;
  20.     for(i=0;i<rom1.length;i++){
  21.                                letra=rom1[i];
  22.                                for(j=0;j<rom2.length;j++){
  23.                                                           if(letra==rom2[j]){
  24.                                                                              suma=suma+v[j];
  25.                                                                              if(anterior<valor[j]){
  26.                                                                                                    suma=suma-anterior*2;
  27.                                                                                                    anterior=valor[j];
  28.                                                                              }
  29.                                                                              else{
  30.                                                                                   anterior=valor[j];
  31.                                                                              }
  32.                                                           }
  33.                                }
  34.     }
  35.     printf("Numero: %d",suma);
  36. }
  37.  


« Última modificación: 3 Junio 2013, 22:58 pm por simorg » En línea

amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: Numeros Romanos
« Respuesta #1 en: 3 Junio 2013, 22:09 pm »

Ese código no compila y tiene algunos errores que me cuesta entender que sean por accidente... No será para que te hagamos la tarea no?  :silbar:


En línea

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
05K4R1N

Desconectado Desconectado

Mensajes: 7

Desarrollo e Investigación


Ver Perfil
Re: Numeros Romanos
« Respuesta #2 en: 3 Junio 2013, 22:11 pm »

no nada que ver... solo entiendo que dice incompatibilidad de las variables del metodo convertidor, a parte parece que toy manejando mal los arreglos char... comenzando dsd alli los estoy manipulando bien?.... pienso q radica mi error alli...
En línea

pacoperico

Desconectado Desconectado

Mensajes: 100


Ver Perfil
Re: Numeros Romanos
« Respuesta #3 en: 3 Junio 2013, 22:22 pm »

A ver, explicanos detalladamente como funciona el programa y que errores te da el compilador.
En línea

05K4R1N

Desconectado Desconectado

Mensajes: 7

Desarrollo e Investigación


Ver Perfil
Re: Numeros Romanos
« Respuesta #4 en: 3 Junio 2013, 22:32 pm »

Funciona así:

Usuario ingresa un número romano y para que pueda convertir mas sencillo de romano a decimal hice un arreglo char que solo alberga romanos y otro con numeros decimales.

Pasando ya todo al metodo convertidor con variables que serán fundamentales para la conversion el char del cual ingresa el usuario un numero romano, el otro arreglo de romanos que hice mas un arreglo de enteros, cree tres variables, suma para el cual se sumaran de forma acumulativa por medio del ciclo for que cree, una variable char letra que servirá para comparar la posición de cada letra con los 2 arreglos que cree en un principio digamos XVII
primero va X, entonces recorrera primero mediante el chat buscar X y luego su posición sera igual para el metodo de enteros que hice y me asigna a un valor entero para lo cual despues se acumulará con el siguiente que sera V y sucesivamente--.-
10 + 5....
En el caso espeial si tuviera CXC.... cree la condicion
if(anterior<v[j]) asi restará en lugar de sumar con el valor que almacenará con el valor anterior...

ERROR: está en que dice conflicting types for "convertidor"....
En línea

dato000


Desconectado Desconectado

Mensajes: 3.034



Ver Perfil
Re: Numeros Romanos
« Respuesta #5 en: 3 Junio 2013, 22:42 pm »

Ese código no compila y tiene algunos errores que me cuesta entender que sean por accidente... No será para que te hagamos la tarea no?  :silbar:

vamos

Vamos, has hecho tareas más dificiles no te hagas de rogar viejo XDDDD  :laugh: :laugh: :xD :xD ;-) ;-) :silbar: :silbar:

Mira te corregi el error de la longitud del arreglo, no puede usarse "length()" en un arreglo de caracteres, para ello, esta el "strlen()" que hace lo mismo, devuelve un numero entero con la longitud en un arreglo, puede usarse en un char, char[] y en string, funciona perfectamente.

Pero dejame decirte que hay algunas cosas te falta corregir, como la asignacion de la letra, y que pasa si es digamos un numero romano con una letra que antecede a una letra de un valor mayor, ahi no se suma sino que se resta, como cuando tienes "IV" o "IX", me entiendes

sigue trabajando, estamos para ayudarte, pero si quieres aprender a hacerlo bien, tienes que sufrir y llorar sangre, amchacon ha dejado guias que realmente te dejan dolores de cabeza XDDDDDD pero funcionan, no se que le pasa el día de hoy, sera por el lunes  :silbar: :silbar:

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <conio.h>
  4.  
  5. main(){
  6.       char romano[]={};
  7.       printf("Ingrese Numero Romando: ");
  8.       scanf("%s",&romano);
  9.       fflush(stdin);
  10.  
  11.       char rom[]={' ','I','V','X','L','C','D','M'};
  12.       int valor[]={0,1,5,10,50,100,1000};
  13.  
  14.       convertidor(romano,rom,valor);
  15. }
  16. void convertidor(char rom1[],char rom2[],int valor[]){
  17.     int suma=0,anterior=0;
  18.  
  19.     // aqui hay un error, letra es un char
  20.     char letra=' ';
  21.     int i,j;
  22.  
  23.     printf("longitud char romano rom1: %d \n", strlen(rom1));
  24.     printf("longitud char romano rom2: %d \n\n", strlen(rom2));
  25.  
  26.     //strlen(<cadena>): Devuelve la longitud de la cadena sin tomar en cuenta
  27.     //el caracter de final de cadena.
  28.  
  29.     for(i=0; i<strlen(rom1) ;i++){
  30.        letra=rom1; //aqui tratas de asignar letra como un arreglo de caracteres
  31.  
  32.        for(j=0; j<strlen(rom2); j++){
  33.  
  34.           if(letra==rom2[j]){
  35.              suma=suma+valor[j];
  36.  
  37.              if(anterior<valor[j]){
  38.                suma=suma-anterior*2;
  39.                anterior=valor[j];
  40.              }
  41.              else{
  42.                anterior=valor[j];
  43.              }
  44.  
  45.           }
  46.        }
  47.     }
  48.     printf("Numero: %d", suma);
  49. }
  50.  
En línea


05K4R1N

Desconectado Desconectado

Mensajes: 7

Desarrollo e Investigación


Ver Perfil
Re: Numeros Romanos
« Respuesta #6 en: 3 Junio 2013, 22:45 pm »

jajajajaja me mataste de risa con tu comentario ;-) ;-) ;-) ;-) xD!!!! bueno toy iniciando en C pa que lo sepas ya que he estado muy pegado a tecnologia java y desarrollo de programacion movil jajaja y eso era lo que necesitaba del char con strlen jejeje no sabia pa serte sincero... bueno gracias con esto es mas que suficiente...  ;-)
En línea

amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: Numeros Romanos
« Respuesta #7 en: 3 Junio 2013, 23:05 pm »

vamos

Vamos, has hecho tareas más dificiles no te hagas de rogar viejo XDDDD  :laugh: :laugh: :xD :xD ;-) ;-) :silbar: :silbar:

Código
  1. #include <stdio.h>
  2. #include "Herramientas.h"
  3.  
  4. int main()
  5. {
  6. InitPistola(MUNICION_INFINITA);
  7.  
  8. char acierto = DispararPistola(dato000);
  9.  
  10. while (!acierto)
  11.  {
  12.    acierto = DispararPistola(dato000);
  13.  }
  14.  
  15.  puts("Muahahaha ^^");
  16.  
  17.  return 0;
  18. }

Mis disculpas, esque hay un cierto "personaje" que hacia eso a menudo (ponía código inconexo para que al final le hiciéramos la tarea).

amchacon ha dejado guias que realmente te dejan dolores de cabeza XDDDDDD pero funcionan, no se que le pasa el día de hoy, sera por el lunes  :silbar: :silbar

 :silbar: :silbar: :silbar: :silbar: :silbar:

 :silbar: :silbar: :silbar: :silbar: :silbar:
« Última modificación: 3 Junio 2013, 23:10 pm por amchacon » En línea

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
05K4R1N

Desconectado Desconectado

Mensajes: 7

Desarrollo e Investigación


Ver Perfil
Re: Numeros Romanos
« Respuesta #8 en: 3 Junio 2013, 23:13 pm »

por ultima vez no espero que me lo hagan ¬¬ !!!!
En línea

leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: Numeros Romanos
« Respuesta #9 en: 3 Junio 2013, 23:40 pm »

por ultima vez no espero que me lo hagan ¬¬ !!!!

Una pequeña variante operativa, sin el cero que no tiene sentido en los números romanos:

Código
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. int main(){
  5.    char romano [100]={0};
  6.    printf("Ingrese Numero Romano: ");
  7.    scanf ("%s",romano);
  8.    printf ("Romano: %s\n",romano);
  9.    char rom[8]={'I','V','X','L','C','D','M'};
  10.    int valor[7]={1,5,10,50,100,500,1000};
  11.    convertidor(romano, rom, valor);
  12.    return 0;
  13. }
  14. void convertidor ( char romano [], char rom [9],int valor [8])
  15. {
  16.    int suma=0,i,j;
  17.    for (i=0;i<strlen(romano);i++)
  18.        for (j=0;j<9;j++){
  19.            if (romano[i]==rom[j]){
  20.                suma+=valor [j];
  21.                break;
  22.            }
  23.            else
  24.                continue;
  25.        }
  26.    printf ("Numero: %d",suma);
  27. }
  28.  

Saluditos!!. ....
En línea

Páginas: [1] 2 3 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Calculadora que suma numeros romanos
Programación C/C++
miiku 1 10,025 Último mensaje 13 Agosto 2012, 03:50 am
por farresito
verificar numeros romanos « 1 2 »
Programación C/C++
m@o_614 15 10,111 Último mensaje 22 Agosto 2013, 08:46 am
por rir3760
Pasar numeros enteros arábigos a romanos, por donde empezar. « 1 2 3 »
Programación C/C++
Caster 21 11,686 Último mensaje 18 Mayo 2014, 18:38 pm
por Blaster
[Aporte]Convertidor de números decimales a romanos
Programación C/C++
0xFer 0 3,022 Último mensaje 24 Mayo 2015, 19:00 pm
por 0xFer
Conversor de números arábigos a números romanos
Programación C/C++
perico1995 0 1,690 Último mensaje 19 Diciembre 2017, 17:54 pm
por perico1995
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines