Commit d323614b by Jürgen Hein

Lisatud kommentaarid, vastus õiget pidi. ArvuAlusteTeisendamine.c

parent 4bb4faed
Showing with 27 additions and 25 deletions
/* Arvu aluste teisendamine.
/* Arvu aluste teisendamine.
......@@ -9,15 +9,15 @@
int main(void)
{
char arv[SUURUS]; //
char l6pp[SUURUS]; //
char arv[SUURUS]; //tähemassiiv algse arvu numbrite jaoks
char l6pp[SUURUS]; //tähemassiiv otsitava arvu numbrite jaoks
int a; //küsitav arvu algne alus
int b; //küsitav uue arvu alus
int t; //liikmete arv massiivis (alg)
int t; //liikmete arv massiivis
int i;
int algbase; //arvu algne alus
int l6ppbase; //uue arvu alus
int result;
int result; //leitud liidetavate summa
int mult; //kordaja, võrdne algse aluse numbrilise väärtusega
do
......@@ -32,7 +32,7 @@ int main(void)
} while (a == 0);
do
{
printf("Sisestada muutuja b"); //uue arvu alus
printf("Sisestada muutuja b"); //otsitava arvu alus
scanf("%d", &b);
} while (b == 0);
......@@ -41,7 +41,7 @@ int main(void)
result=0;
mult=1;
if(algbase<2 || algbase>36)
if(algbase<2 || algbase>36) //kontroll, kas alus antud vahemikus
{
printf("Esines viga!");
}
......@@ -53,11 +53,7 @@ int main(void)
if(algbase==l6ppbase) //Kui algne alus on sama, mis uue arvu alus
{
for(i=0;i < t;i++)
{
arv[i]=l6pp[i];
i++;
}
printf("Otsitav arv on %s",arv);
}
for(i=t-1;i>=0;i--) //tsükkel kas i>=0?
......@@ -78,31 +74,37 @@ int main(void)
{
printf("Esines viga!");
}
result = result + mult*t;
mult = mult * algbase; //kordaja, mis võrdne algse alusega
result = result + mult*t; //jooksvalt leitud liidetavate liitmine
mult = mult * algbase; /*arvuga korrutatavate liikmete astmete suurendamine
nt 10^1...10^2...10^3.. */
}
i=0;
if(result==0) //
if(result==0) //kui kogusumma on 0
{
l6pp[i++]='0'; //
l6pp[i]='\0'; //
l6pp[i++]='0'; //määratakse l6ppväärtuseks 0
l6pp[i]='\0'; //massiivis lugemise lõpetamine
}else
{
while(result>0)
while(result>0) //liidetavate kogusumma ei ole 0
{
if (result % l6ppbase < 10)
if (result % l6ppbase < 10) //jääk on väiksem kui 10
{
l6pp[i++]= '0' + (result % l6ppbase);
l6pp[i++]= '0' + (result % l6ppbase);//järgmise liikme leidmine
}else
{
l6pp[i++] = 'A' + (result % l6ppbase - 10);
l6pp[i++] = 'A' + (result % l6ppbase - 10); //jääk on suurem kui 10, seega leitakse täht, mis vastab arvule nt 16-süsteemis
}
result /= l6ppbase;
result /= l6ppbase; //viimane number arvus kaotatakse, ilma jäägita jagamine
}
l6pp[i]='\0';
l6pp[i]='\0'; //massiivis liikumise lõpetamine
}
printf("%s on alusel %d",l6pp,l6ppbase);
//Väljastus
printf("Otsitav arv on: "); //loop, mis liigub tagurpidi arvus
for(i=strlen(l6pp)-1;i>=0;i--) //töötab nii mitu korda kui on arve massiivis l6pp
{
printf("%c",l6pp[i]);
}
printf("alusel %d",l6ppbase); //Otsitav alus
return 0;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment