C - zamiana liczby na inny system

0

Witam.

Mam problem z napisaniem swojego PIERWSZEGO programu...

*Polecenie: trzeba wczytać liczbę n<=30000 i napisać program, ktory zamieni ją na wybrany system o podstawie 16<= p >= 2. *

#include <stdio.h>
#include <conio.h>
#include <math.h>

main()


{
  int n,s,d;
  int tab[100];
  printf("\n\nPROGRAM PRZELICZAJACY PODANA LICZBE NA WYBRANA NOTACJE LICZBOWA\n(od notacji 

binarnej do szesnastkowej)\n\n\n");
  
  start:
  printf("Podaj podstawe systemu (od 2-16):   ");
  scanf("%d", &s);
  
  switch(s)
  {
              
              case 2: printf("\nWybrano system BINARNY.\n\n");
                      break; 
                           
              case 3: printf("\nWybrano system TROJKOWY.\n\n");
                      break; 
                      
              case 4: printf("\nWybrano system CZWORKOWY.\n\n");
                      break; 
                      
              case 5: printf("\nWybrano system PIATKOWY.\n\n");
                      break; 
                      
              case 6: printf("\nWybrano system SZOSTKOWY.\n\n");
                      break; 
                      
              case 7: printf("\nWybrano system SIODEMKOWY.\n\n");
                      break; 
                      
              case 8: printf("\nWybrano system OKTALNY.\n\n");
                      break; 
                      
              case 9: printf("\nWybrano system DZIEWIATKOWY.\n\n");
                      break; 
                      
              case 10: printf("\nWybrano system DZIESIETNY.\n\n");
                      break; 
                      
              case 11: printf("\nWybrano system JEDENASTKOWY.\n\n");
                      break; 
                      
              case 12: printf("\nWybrano system DWUNASTKOWY.\n\n");
                      break; 
                      
              case 13: printf("\nWybrano system TRZYNASTKOWY.\n\n");
                      break; 
                      
              case 14: printf("\nWybrano system CZTERNASTKOWY.\n\n");
                      break; 
                      
              case 15: printf("\nWybrano system PIETNASTKOWY.\n\n");
                      break; 
                      
              case 16: printf("\nWybrano system SZESNASTKOWY.\n\n");
                      break;
  }
  
  
  if(s>=2 && s<=16)
  {
          printf("\nTeraz podaj liczbe naturalna, mieszczaca sie w przedziale 0-30 000:   ");
          scanf("%d", &n);
          
          if(n<0 && n>30000) 
          {
          printf("Liczba spoza wymaganego przedzialu. Sprobuj ponownie...\n\n\n\n");
          goto start;
          }
          
             d=0;
                   while(n!=0)
                   {
                   tab[n] = n%s;
                   n=n/s;
                   d++;
                   }   
                   printf("Wybrana liczba, czyli w systemie %d-kowym =   ",s);
                   
                   while(d!=0)
                   {
                   if(tab[d]==0)
                        {
                        d--;
                        printf("%x\n\n\n\n",tab[d]);
                        }
                   else
                        {
                        d--;
                        printf("%x\n\n\n\n",tab[d]);
                        }                                   
                   }                  
  }
  
  else
  if(s<2)
  printf("\n\nsystem poza przedzialem 2 - 16.  Sprobuj ponownie...\n\n");

  else
  if(s>16)
  printf("\n\nsystem poza przedzialem 2 - 16.  Sprobuj ponownie...\n\n");
  goto start;
    


  getch();
  getch();
  system("PAUSE");	
  return 0;
}
  • PROBLEM JEST OD d=0 i z całą tą klamrą** - budzi moje wątpliwości, przyznam się, że mimo przekonań mojego kolegi, za cholerę nie uwierzę, że to jest dobrze napisane, zwłaszcza, ze po kompilacji, odpaleniu pokazuje mi złe wyniki.

To moje pierwsze styczności z programowaniem - ever. Nie do końca pewnie czuje się jeszcze w C, w pętlach i tablicach, więc jak łatwo się domyśleć, jestem totalnym laikiem...

Jest to mój pierwszy post, pierwszy krok na tym forum, pierwszy ogólny raz, więc bardzo proszę o wyrozumiałość...

ponawiam moją prośbę, czy byłby ktoś tak miły i by mi objaśnił? :)

0
int main()
{
	int licznik = 0;
	int system = 0;
	int liczba[100];
	int i;

	while(!system)
	{
		printf("Wybierz system: ");
		scanf("%d", &system);
		if(system < 2 || system > 16)
			system = 0;
	}

	printf("Wybrano system %d-kowy.", system);

	printf("\nPodaj liczbe: ");
	scanf("%d", &licznik);

	for(i = 0; licznik != 0 ; ++i)
	{
		liczba[i] = licznik % system;
		licznik /= system;
	}

	for( i -= 1 ; i >= 0; --i)
	{
		switch(liczba[i])
		{
		case 10 : printf("A");
			break;
		case 11 : printf("B");
			break;
		case 12 : printf("C");
			break;
		case 13 : printf("D");
			break;
		case 14 : printf("E");
			break;
		case 15 : printf("F");
			break;
		default : printf("%d", liczba[i]);
		}
	}

	getchar();
	getchar();
	return 0;
}

Nie czytałem twojego programu, bo jak zauważyłem tam instrukcję goto, to zwątpiłem. Przeanalizuj ten kod, działa poprawnie.

0

dzięki wielkie za pomoc :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1