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

#11
Programación C/C++ / Re: Problema con mi codigo
8 Noviembre 2014, 19:44 PM
aun que sus instruciones no son tan claras, pra mi eso funciona

ese codigo tiene varias complicaciones que no son necesarios, pero eso funciona. yo le recomendaria a hacerlo de nnuevo, y poner algo como

if n == X
    suma = 10
if n == I
    suma = 1

if memcmp(n, "XX", 2) == 0
    suma = 20

etc

suerte


    #include <stdio.h>
    char n;
    int suma=0;
    int a;
    int b;
    int main () {
    printf("Escribe un numero en romano \n");
    scanf("%c",&n);
       if (n=='I' || n=='V' || n=='X' || n=='L' || n=='C' || n=='D' || n=='M' || n=='\n')
      {
           // tiene que sacar eso, porque ese condicion va a ser infinito y no es nesecario
           //while (n!='\n')
           //{
               if (n=='I') {
                       a=1;
                       // a que refiere con "b"? b no tiene valor... seria mejor
                      // y menos codigo a simplamente escribir " suma = 1 "
                       if(b<a)
                      {
                         // aun que en ASM no tiene mucha diferencia, en C es mejor escribalo asi
                         // suma=suma+(a-b);
                         suma += (a - b)

                      }
                       else { suma=suma+(a+b);}
               }
               if (n=='V') {
                       a=5;
                       if(b<a) { suma=suma+(a-b); }
                       else { suma=suma+(a+b); }
               }
               if (n=='X') {
                       a=10;
                       if(b<a) { suma=suma+(a-b); }
                       else { suma=suma+(a+b); }
               }
               if (n=='L') {
                       a=50;
                       if(b<a) { suma=suma+(a-b); }
                       else { suma=suma+(a+b); }
               }
               if (n=='C') {
                       a=100;
                       if(b<a) { suma=suma+(a-b); }
                       else { suma=suma+(a+b); }
               }
               if (n=='D') {
                       a=500;
                       if(b<a) { suma=suma+(a-b); }
                       else { suma=suma+(a+b); }
               }
               if (n=='M') {
                       a=1000;
                       if(b<a) { suma=suma+(a-b); }
                       else { suma=suma+(a+b); }
               }
               b=a;
               scanf("%n",&n);
          // }
     
       }
       else {
           fprintf(stderr,"ERROR: El numero introducido no es correcto \n");
           return -1;
       }
    printf("Este es el numero: %i",suma);
       return 0;
    }


#12
Hola amiga, estaba aburrido hoy y trabaje un poquito en eso. Espero ayudarla con lo siguiente (eso solo es mi opinion en como yo lo haria, puede hacer como quiera):

Es proyecto tiene 2 objectivo principales:

1. Aceptar input del teclado del "stdin" y guardar el input en una manera en que la programa puede analizarla

2. Analiza la informacion para identificar

   A. La temperatura mas alta

   B. La humedad mas baja

Con eso dicho, su codigo y instruciones tienen varias problemas. Primera, no hay "tuplas" en C ni C++. Eso es de python. Segunda, su codigo no esta analizando los temp y humedades mas bajas/altas. Tercera, no esta inicializando sus variables para guardar el input para analizar. Hay otros problemas tambien, muchos, y en mi opinion es mejor impesar de nuevo porque ese codigo no lograra los objectivo principales de su proyecto.

Aun que en es caso (windows espacio usuario) la estatica inicializacion puede funcionar - no es buen habito. Cuando inicializa un variable estatica, los bytes van en el stack, en en muchas sistemas (kernel, embedido, y mas) su tamano de stack es limitada. Por eso, yo voy a usar alocaciones dinamicas. Estoy usando malloc/free estilo C, pero si quiere hacerlo estila C++ puede poner new/delete.

Yo he hecho mas o menos 30-40% del proyecto, y no hare todo porque usted tiene que aprender a hacerlo. Ese codigo puede aceptar el input por zona y temperatura, y averiguar la temp mas baja. Aun tiene que poner la humedad, y averiguar la humedad mas alta. Suerte.

pd - Cuando acepta cualquier tipo de input, es muy muy importante a hacer un checkeo de errores para evitar buffer overflows, para que no le chingan ; )




#include <iostream>
#include <conio.h>


int main ()
{
   
       int Conta = 0;
       // A - K
       int NumeroDeEntradas = ('L' - 'A');
       int NumeroDeElementos = (sizeof(char**) * 5);

char** Zona = (char**)malloc(NumeroDeElementos);
char** Temp  = (char**)malloc(sizeof(int**) * NumeroDeEntradas);
char** Humedad  = (char**)malloc(sizeof(int**) * NumeroDeEntradas);

for (int i = 0; i < NumeroDeEntradas; i++)
{
           Zona[i] = (char*)malloc(4);
           Temp[i] = (char*)malloc(4);
       
           printf("Introduzca la zona:\n");
       
           // despues de cada llama a scanf tiene que checkear por errores, algo asi
           // si Zona[i] > 4, libera y salga
           scanf("%[^\n]%*c", Zona[i]);
           //fgets(Zona[i], 2, stdin);
       
           //if (memcmp(Zona[i], (char*)'@', 1) == 0)
           //goto FINAL;
       
TEMPDENUEVO:        
           printf("Introduzca la temp:\n");
           scanf("%[^\n]%*c", Temp[i]);
           int VerificaTemp = atoi(Temp[i]);

           if (VerificaTemp < 0 || VerificaTemp > 100)
           {
               printf("[!] Temperatura Invalido. Introduzcala de nuevo...\n");
               goto TEMPDENUEVO;                
           }
       
           printf("Zona #%i: %s - Temp: %i\n", i, Zona[i], VerificaTemp);
       
           Conta += 1;
   }
   
FINAL:    
   
       for (int b = 0; b < Conta; b++)
           printf("temp%i = % i\n" , Conta, atoi(Temp[b]));
   
   
int LaMasBaja = atoi(Temp[0]);
for (int c = 1; c < Conta; c++)
{
           int Num = atoi(Temp[c]);
           //printf("Num = %i LaMasBaja = %i\n", Num, LaMasBaja);
           if (Num < LaMasBaja)
               LaMasBaja = Num;
       
       }
printf("la mas baja = %i\n", LaMasBaja);
/*for (int i = 0; i < 11; i++)
{
       printf("Zona: %i = %s\n", i, Zona[i]);
           
   }*/
printf("Conta = %d\n", Conta);
for (int i = 0; i < Conta; i++)
{
       printf("liberando %i...\n", i);
       free(Zona[i]);
       free(Temp[i]);    
   }
free(Zona);
free(Temp);
free(Humedad);


_getch ();
//system ("pause");
}