Commit c6ede816 by Jürgen Hein

Update parandused 1 ArvuAlusteTeisendamine.c

parent 502504c8
Showing with 55 additions and 36 deletions
//Arvu aluste teisendamine //Arvu aluste teisendamine
...@@ -2,38 +2,38 @@ ...@@ -2,38 +2,38 @@
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string.h>
#define SUURUS 65 #define SUURUS 65 //etteantud konstant
int main(void) int main(void)
{ {
int letters[7]={1, 4, 7, 8, 9, 22, 15}; int letters[SUURUS]; //täisarvuline massiiv
char temp[SUURUS]; char temp[SUURUS]; //massiiv ajutiste suuruste jaoks
char arv[SUURUS]; char arv[SUURUS];
int a; int a; //küsitav arvu algne alus
int b; int b; //küsitav uue arvu alus
int t; int t; //liikmete arv massiivis (alg)
int i; int i;
int algbase; int algbase; //arvu algne alus
char *alg; char *alg;
int l6ppbase; int l6ppbase; //uue arvu alus
char *l6pp; char *l6pp;
int result; int result;
int mult; int mult; //kordaja, võrdne algse aluse numbrilise väärtusega
scanf("%s64", arv); //tähemassiivi küsimine
/*do do
{ {
printf("Sisestada muutuja arv"); printf("Sisestada muutuja arv");
scanf("%d", &arv); scanf("%64s", arv); //algse tähemassiivi küsimine
} while (arv != 0);*/ } while (arv == 0);
do do
{ {
printf("Sisestada muutuja a"); //algbase küsimine printf("Sisestada muutuja a"); //algse arvu alus
scanf("%d", &a); scanf("%d", &a);
} while (a == 0); } while (a == 0);
do do
{ {
printf("Sisestada muutuja b"); //Lõppbase küsimine printf("Sisestada muutuja b"); //uue arvu alus
scanf("%d", &b); scanf("%d", &b);
} while (b == 0); } while (b == 0);
...@@ -46,48 +46,65 @@ int main(void) ...@@ -46,48 +46,65 @@ int main(void)
if(algbase<2 || algbase>36) if(algbase<2 || algbase>36)
{ {
printf("Esinese viga!"); printf("Esines viga!");
} }
if(l6ppbase<2 || l6ppbase>36) if(l6ppbase<2 || l6ppbase>36)
{ {
printf("Esinese viga!"); printf("Esines viga!");
} }
if(algbase==l6ppbase) t=strlen(alg); //t = mitu arvu massiivis (alg)
if(algbase==l6ppbase) //Kui algne alus on sama, mis uue arvu alus
{ {
i=0; for(i=0;i < t;i++)
while (i < 7) //mis n väärtus?
{ {
alg[i]=l6pp[i]; alg[i]=l6pp[i];
i++; i++;
} }
} }
t=strlen(alg); //t = mitu arvu massiivis alg
i=t-1; i=t-1;
for(i=0;i>=0;i--) //tsükkel kas i>=0? for(i=0;i>=0;i--) //tsükkel kas i>=0?
{ {
if('0'<=alg[i] || alg[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=alg[i]-'0'; t=alg[i]-'0'; //leida arvuline väärtus
} }
if('A'<=alg[i] || alg[i]<='Z'){ //Kas massiivi l. on täht vahemikus A..Z? if('A'<=alg[i] || alg[i]<='Z')
t=alg[i]-'A'+10; { //Kas massiivi l. on täht vahemikus A..Z?
t=alg[i]-'A'+10; //leida arvuline väärtus
} }
if('a'<=alg[i] || alg[i]<='z'){ //Kas massiivi l. on täht vahemikus a..z? if('a'<=alg[i] || alg[i]<='z')
t=alg[i]-'a'+10; { //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("Esinese viga!"); printf("Esines viga!");
}
result += mult*t;
mult *= algbase; //kordaja, mis võrdne algse alusega
}
i=0;
while (result > 0) {
if (result % l6ppbase < 10) {
temp[i] = '0' + (result % l6ppbase);
} else {
temp[i] = 'A' + (result % l6ppbase - 10);
} }
result=result+mult*t; result /= l6ppbase;
mult=mult*algbase; i++;
} }
for(i=0;result>0;i++)
/*
while(result>0)
{ {
temp[i]=letters[result%l6ppbase]; temp[i]=letters[result % l6ppbase]; //ajutine muutuja eelmise tulemuse jäägi ülekandmiseks
result /= l6ppbase; //jagada result/lõppbase ja liita tulemus result-ile result /= l6ppbase; //jagada eelmine tulemus uue alusega
i++; //näitab, mitu tehete tsüklit tehti
} }
for(t=0;t<1;t++) */
for(t=0;t<i;t++)
{ {
l6pp[t]=temp[i-t-1]; l6pp[t]=temp[i-t-1];
} }
...@@ -96,9 +113,11 @@ int main(void) ...@@ -96,9 +113,11 @@ int main(void)
{ {
l6pp[0]='0'; l6pp[0]='0';
l6pp[1]='\0'; l6pp[1]='\0';
printf("%s alusel %d on %s alusel %d",arv,algbase,temp,l6ppbase);
}else }else
{ {
printf("%d=%d",arv[a],temp[b]); 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