Cześć.
Mój program w założeniu ma wczytywać liczby a jezeli zmienna SystemLiczbowy jest wieksza od 10 to rowniez chcialem by traktowal on np A jako liczbe 10 itd.
Problemem jest to że program pomija wczytywanie jednej ze zmiennych ( w tekscie kodu miejsce to jest zaznaczone komentarzem)
Mam tez pytanie dotyczace mojego pomyslu na zamiane znaku na wartosc liczbową.
Otóż ja chciałem to zrobić tak :
Wczytuje zmienna char np A który jest w tablicy na pozycji nr.10
Sprawdzam petla for czy znak wczytany jest rowny znakowi z TablicaZnakow,a jesli tak to wczytanej zmiennej char przypisuje indeks znaku czyli dla A np 10.
Pewnie istnieją jakieś lepsze pomysły na wykonanie czegoś takiego.
Proszę o wskazówki.
#include <stdio.h>
#define Max_size 256
#define N 36
int main (void)
{
//Program ma za zadanie wczytywac liczby z przedzialu od 1 do SystemLiczbowy-1
// Czyli np dla SystemLiczbowy = 16 program ma wczytywac 1...2...3...F i znaki od A...F traktowac jako odpowiadajace im liczby
int licznik,k,i,temp,status;
char fnumber,number;
char *Tablica1 = malloc(powto*system_liczbowy*sizeof(char));
int *Tablica2 = malloc(system_liczbowy*sizeof(int));
char TablicaZnakow[N] = {'0','1','2','3', '4','5','6','7','8','9','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};
int system_liczbowy,powto;
printf("Do jakiego systemu liczbowego\n");
scanf("%d",&system_liczbowy);
printf("Ile razy max \n");
scanf("%d",&powto);
k = 1;
for(i=0; i<system_liczbowy*sizeof(int),i++;)
Tablica2[i] = 0;
printf("Wpisz liczbe\n");
scanf("%c",&fnumber); //Tu program zaczyna nie wykonywac kodu **
status = 0;
for(i=0; i<system_liczbowy-1; i++)
{
if(fnumber == TablicaZnakow[i]) status = 1; // Tutaj chce ustalic ktoremu znakowi z tablicy znakow odpowiada wczytana zmienna po to by przypisac jej numer tego znaku z tablicy
fnumber = i; // W ten sposob chce przypisac np znakowi A liczbe 10
break;
}
//Tu program zaczyna wykonywac kod **
printf("Program opuszcza pierwszy scanf po Wpisz liczbe,nie wiem czemu %c",fnumber);
while( status == 0 || fnumber<=0 || fnumber > system_liczbowy-1 )
{
while((temp=getchar()) != EOF && temp != '\n');
scanf("%c", &fnumber);
for(i=0; i<system_liczbowy-1; i++)
if(fnumber == TablicaZnakow[i]) status = 1;
fnumber = i;
break;
printf("Wpisz liczbe z przedzialu od %d do %d \n",1,system_liczbowy-1,system_liczbowy);
}
Tablica1[0] = fnumber;
Tablica2[fnumber]++;
while( Tablica2[k] < powto)
{
scanf("%c",&number);
status = 0;
for(i=0; i<system_liczbowy-1; i++)
if(number == TablicaZnakow[i]) status = 1;
number=i;
break;
while(status == 0 || ( (Tablica1[k-1] != TablicaZnakow[system_liczbowy-1]) && (Tablica1[k-1] >= number) ) )
{
while((temp=getchar()) != EOF && temp != '\n');
printf("Musisz podac liczbe wieksza niz %c i mniejsza badz rowna %d\n",Tablica1[k-1],system_liczbowy-1);
scanf("%c", &number);
status = 0;
for(i=0; i<system_liczbowy-1; i++)
if(number == TablicaZnakow[i]) status = 1;
number=i;
break;
}
Tablica2[number]++;
Tablica1[k] = number;
k++;
licznik++;
}
free (Tablica1);
free (Tablica2);
}