Commit 4bb4faed by Jürgen Hein

Lõpptulemus on tagurpidi. Muudatus ArvuAlusteTeisendamine.c

parent c6ede816
Showing with 51 additions and 67 deletions
//Arvu aluste teisendamine /* Arvu aluste teisendamine.
//Arvu aluste teisendamine /* Arvu aluste teisendamine.
* Muutsin algoritmi, võtsin välja pointerid.
* */
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string.h>
...@@ -6,21 +9,17 @@ ...@@ -6,21 +9,17 @@
int main(void) int main(void)
{ {
int letters[SUURUS]; //täisarvuline massiiv char arv[SUURUS]; //
char temp[SUURUS]; //massiiv ajutiste suuruste jaoks char l6pp[SUURUS]; //
char arv[SUURUS];
int a; //küsitav arvu algne alus int a; //küsitav arvu algne alus
int b; //küsitav uue arvu alus int b; //küsitav uue arvu alus
int t; //liikmete arv massiivis (alg) int t; //liikmete arv massiivis (alg)
int i; int i;
int algbase; //arvu algne alus int algbase; //arvu algne alus
char *alg;
int l6ppbase; //uue arvu alus int l6ppbase; //uue arvu alus
char *l6pp;
int result; int result;
int mult; //kordaja, võrdne algse aluse numbrilise väärtusega int mult; //kordaja, võrdne algse aluse numbrilise väärtusega
do do
{ {
printf("Sisestada muutuja arv"); printf("Sisestada muutuja arv");
...@@ -38,9 +37,7 @@ int main(void) ...@@ -38,9 +37,7 @@ int main(void)
} while (b == 0); } while (b == 0);
algbase=a; algbase=a;
alg=&(arv[0]);
l6ppbase=b; l6ppbase=b;
l6pp=&(temp[0]);
result=0; result=0;
mult=1; mult=1;
...@@ -52,73 +49,60 @@ int main(void) ...@@ -52,73 +49,60 @@ int main(void)
{ {
printf("Esines viga!"); printf("Esines viga!");
} }
t=strlen(alg); //t = mitu arvu massiivis (alg) t=strlen(arv); //t = mitu arvu massiivis
if(algbase==l6ppbase) //Kui algne alus on sama, mis uue arvu alus if(algbase==l6ppbase) //Kui algne alus on sama, mis uue arvu alus
{ {
for(i=0;i < t;i++) for(i=0;i < t;i++)
{ {
alg[i]=l6pp[i]; arv[i]=l6pp[i];
i++; i++;
} }
} }
i=t-1;
for(i=0;i>=0;i--) //tsükkel kas i>=0? for(i=t-1;i>=0;i--) //tsükkel kas i>=0?
{
if('0'<=arv[i] || arv[i]<='9') //Kas massiivi liige on arv vahemikus 0..9?
{ {
if('0'<=alg[i] || alg[i]<='9') //Kas massiivi liige on arv vahemikus 0..9? t=arv[i]-'0'; //leida arvuline väärtus
{ }
t=alg[i]-'0'; //leida arvuline väärtus else if('A'<=arv[i] || arv[i]<='Z')
} { //Kas massiivi l. on täht vahemikus A..Z?
if('A'<=alg[i] || alg[i]<='Z') t=arv[i]-'A'+10; //leida arvuline väärtus
{ //Kas massiivi l. on täht vahemikus A..Z? }
t=alg[i]-'A'+10; //leida arvuline väärtus else if('a'<=arv[i] || arv[i]<='z')
} { //Kas massiivi l. on täht vahemikus a..z?
if('a'<=alg[i] || alg[i]<='z') t=arv[i]-'a'+10; //leida arvuline väärtus
{ //Kas massiivi l. on täht vahemikus a..z? }
t=alg[i]-'a'+10; //leida arvuline väärtus if(t==(-1) || t>=algbase) //t ei saa olla -1 ega väiksem a-st
} {
if(t==(-1) || t>=algbase) //t ei saa olla -1 ega väiksem a-st printf("Esines viga!");
}
result = result + mult*t;
mult = mult * algbase; //kordaja, mis võrdne algse alusega
}
i=0;
if(result==0) //
{
l6pp[i++]='0'; //
l6pp[i]='\0'; //
}else
{
while(result>0)
{ {
printf("Esines viga!"); if (result % l6ppbase < 10)
{
l6pp[i++]= '0' + (result % l6ppbase);
}else
{
l6pp[i++] = 'A' + (result % l6ppbase - 10);
}
result /= l6ppbase;
} }
result += mult*t; l6pp[i]='\0';
mult *= algbase; //kordaja, mis võrdne algse alusega
} }
i=0;
printf("%s on alusel %d",l6pp,l6ppbase);
while (result > 0) {
if (result % l6ppbase < 10) {
temp[i] = '0' + (result % l6ppbase);
} else {
temp[i] = 'A' + (result % l6ppbase - 10);
}
result /= l6ppbase;
i++;
}
/*
while(result>0)
{
temp[i]=letters[result % l6ppbase]; //ajutine muutuja eelmise tulemuse jäägi ülekandmiseks
result /= l6ppbase; //jagada eelmine tulemus uue alusega
i++; //näitab, mitu tehete tsüklit tehti
}
*/
for(t=0;t<i;t++)
{
l6pp[t]=temp[i-t-1];
}
l6pp[i]='\0';
if(i==0)
{
l6pp[0]='0';
l6pp[1]='\0';
printf("%s alusel %d on %s alusel %d",arv,algbase,temp,l6ppbase);
}else
{
temp[i]='\0';
printf("%s alusel %d on %s alusel %d",arv,algbase,temp,l6ppbase);
}
return 0; 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