Anonymní profil Honza – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil Honza – Programujte.comAnonymní profil Honza – Programujte.com

 

Příspěvky odeslané z IP adresy 80.251.245.–

Honza
C / C++ › Převod arabských čísel na ří…
8. 5. 2012   #157561

#4 Fenry
To bylo přesně ono, děkuji moc :)

Honza
C / C++ › Převod arabských čísel na ří…
8. 5. 2012   #157539

#2 Fenry
Děkuji za odpověď, nevíte, jak by se to dalo obejít? Nebo poupravit? 

Honza
C / C++ › Převod arabských čísel na ří…
8. 5. 2012   #157536

Dobrý den, potřeboval bych radu, v programu, který teď dělám, když zadám druhou volbu, přes příkaz switch, tak ta druhá volba projede, bez toho aniž by vůbec nečetla něco od uživatele a rovnou vypíše, že převedené číslo je rovno nule. Děkuji za radu


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
int main()
 {
  int volba;
  int cislo,temp,a,i;
  char str[20];
  int ary[20];
  int kontrola;
  int soucet;
  
  printf ("\n |Vitejte v programu pro prevod arabskych cisel na rimske a naopak|\n");
  printf (" -----------------------------------------------------------------\n");
  printf (" |  Pokud chcete prevadet arabske cislice na rimske, zmacknete 1  |\n");
  printf (" |  Pokud chcete prevadet rimske cislice na arabske, zmacknete 2  |\n");
  printf (" -----------------------------------------------------------------\n");
  scanf("%d",&volba);
   
  switch(volba)
  {
  case 1:
  printf ( " \nZadejte arabske cislo:  " ) ;
  scanf ( "%u", &cislo ) ;
  temp = cislo ;

  while( temp <= 0 || temp >= 5000)
   {
     printf ( "\n Cislo nemuze byt prevedeno na rimske" ) ;
     exit(0) ;
   }

  printf ( "\n Odpovidajici rimske cislo je : " ) ;
  if ( cislo >= 1000 )
   {
    a = cislo / 1000 ;
    for ( i = 0 ; i < a ; i++ )
     printf ( "M" ) ;
     cislo = cislo - ( a* 1000 ) ;
   }

  if ( cislo>=500 )
   {
    if ( cislo>=900 )
     {
      printf( "CM" ) ;
      cislo = cislo -900 ;
     }
  else
   {
    printf ("D" ) ;
    cislo = cislo - 500 ;
   }
   }

  if ( cislo >= 100 )
   {
    a = cislo / 100 ;
    for ( i = 0 ; i < a ; i++ )
     printf ( "C" ) ;
     cislo = cislo - ( a* 100 ) ;
   }

  if ( cislo >= 50 )
   {
   if ( cislo >= 90 )
    {
     printf ( "XC" ) ;
     cislo = cislo - 90 ;
    }

  else
   {
    printf ( "L" ) ;
    cislo = cislo - 50 ;
   }
   }

  if ( cislo >= 10 )
   {
    a = cislo / 10 ;
    for ( i = 0 ; i < a ; i++ )
     printf ( "X" );
     cislo = cislo - (a*10) ;
   }

  if ( cislo >= 5 )
   {
    if ( cislo >= 9 )
     {
      printf ( "IX" ) ;
      cislo = cislo - 9 ;
     }

  else
   {
    printf ( "V" ) ;
    cislo = cislo - 5 ;
   }
   }

  if ( cislo >= 1 )
   {
    a = cislo / 1 ;
    for ( i = 0 ; i < a ; i++ )
    printf ( "I" );
    cislo = cislo - (a*1) ;
   }
  break;
  
case 2:
 while (1)
 {
  soucet = 0;
  cislo = 0;
  for (i = 0; i < 20; i++)
   {	
    str[i] = NULL;
    ary[i] = 0;
   }

   printf ("Napiste rimske cislo, ktere chcete prevest na arabske (max 20 znaku)\n");
   fgets(str, sizeof (str), stdin);
   kontrola = strspn(str, "IVXLCDM");
   soucet = strlen (str);


  if (kontrola != soucet - 1)
   {
    printf("Nezadali jste rimske cislo.\n");
    printf("Rimske cislice vypadaji nasledovne:\n");
    printf("I,V,X,L,C,D,M\n");
    printf("Zadavejte prosim vzdy velka pismena.\n");
    printf("Zkuste to znovu a zadejte spravne rimskou cislici\n\n\n\n");
   }
  else
   {

    for (i = 0; i < soucet - 1; i++)
     {	
	  if (str[i] == 'I')
      ary[i] = 1;
      if (str[i] == 'V')
      ary[i] = 5;
      if (str[i] == 'X')
      ary[i] = 10;
      if (str[i] == 'L')
      ary[i] = 50;
      if (str[i] == 'C')
      ary[i] = 100;
      if (str[i] == 'D')
      ary[i] = 500;
      if (str[i] == 'M')
      ary[i] = 1000;
	}

   for (i = 0; i < soucet - 1; i++)
    {	

     if (ary[i] >= ary[i + 1])
     cislo += ary[i];
     if (ary[i] < ary[i + 1])
     cislo -= ary[i];

    }	
   printf("Prevedene cislo je %d", cislo);
  }	
 break;
 }
}
return 0;
} 
 

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý