Системы исчисления - восьмеричная, десятиричная

  • Автор темы SASS
  • Дата начала
Статус
Закрыто для дальнейших ответов.
S

SASS

Гость
#1
Добрай день!
Помогите пожалуйста справиться с задачей! Нужно модифицировать или переписать код, для программы которая переводит целые и дробные восьмеричные числа туда и обратно а так-же выполняет с ними арифметические действия - сложение, вычитание, умножение и деление.
Программа которая делает все это уже есть, но она корректно работает только с целыми числами. Нужно её модифицировать чтобы она работала и с целыми и с дробными числами!
Код имеющейся программы(работающей!):
[codebox]
#include <stdio.h>
#include<iostream.h>
#include <math.h>
#include <string.h>
#include <CONIO.H>
#include "exit.cpp"

#define N 100

void Vosmeri4nVDesati4n();
void Desati4nVVosmeri4n();
int ABC();


int main()
{
int choice;
do
{ clrscr();
gotoxy(20,1); printf("Izvekne:");
gotoxy(20,2); printf("1. Perevesti iz vosmeri4noj v desati4nuju");
gotoxy(20,3); printf("2. Perevesti iz desati4noj v vosmeri4nuju");
gotoxy(20,4); printf("3. A + | - | /");
gotoxy(20,5); printf("4. Exit\n\n");
scanf("%d",&choice);
switch(choice)
{

case 1:
Vosmeri4nVDesati4n();
break;
case 2:
Desati4nVVosmeri4n();
break;
case 3:
ABC();
break;
case 4:
Grap();
break;
}
}while(choice);

return choice;

}



int ABC()
{ clrscr();
char x, zim[2];
int Fir, Sec, Rez;
int i, r, n, s=0, s2=0, first, second, bin1, bin;
clrscr();

Rez=0;
gotoxy(20,1);cout<<"Vvedite pervoje vosmeri4noje 4islo \n";
scanf("%d", &bin1);
first=bin1;
for (i=0; first!=0; i++)
{
r=first%10;
s=s+r*(int)pow(8,i);
first=first/10;
}

Fir=s;

gotoxy(20,3);cout<<" Vvedite vtoroje vosmeri4noje 4islo \n";
scanf("%d",&bin);
second=bin;
for (i=0;second!=0;i++)
{
r=second%10;
s2=s2+r*(int)pow(8,i);
second=second/10;
}

Sec=s2;
gotoxy(20,5);cout<<"Kakoje dejstvije proizvesti? + - / * \n";
gotoxy(20,6);scanf("%s", zim);
x=zim[0];

if (x=='+')
{
Rez=Fir+Sec;
}

else
if (x=='-')
{
Rez=Fir-Sec;
}

if (x=='*')
{
Rez=Fir*Sec;
}

if (x=='/')
{
Rez=Fir/Sec;
}

int bin3[100],j;
n=Rez;
gotoxy(20,7);printf("Rezultat v vosmeri4noj sisteme: ",n);
for(i=0;n!=0;i++)
{
bin3=n%8;
n=n/8;
}
i--;
for(;i>=0;i--)
printf("%d",bin3);
printf("\n");
gotoxy(20,8);getch();
return(0); }


void Vosmeri4nVDesati4n()
{ clrscr();
FILE *out;
int oct,n,r,s=0,i;
gotoxy(20,1); printf("Vvedite vosmeri4noje 4islo: ");
scanf("%d",&oct);
n=oct;
for(i=0;n!=0;i++)
{
r=n%10;
s=s+r*(int)pow(8,i);
n=n/10;
}
gotoxy(20,2);printf("Vosmeri4nogo 4isla %d desati4nij rezultat: %d\n",oct,s);
{
out=fopen("log.txt","a");
fprintf(out,"\n Zna4enije vosmeri4nogo 4isla %d: desati4nij %d",oct,s);
fclose(out);
}
gotoxy(20,3);getch();
}


void Desati4nVVosmeri4n()
{ FILE *out;
int k,s;
clrscr();
int n,r[10],i;
gotoxy(20,1); printf("Vvedite desati4noje 4islo: ");
scanf("%d",&n);
gotoxy(20,2);printf("Desati4nogo 4isla %d vosmeri4noje zna4enije: ",n);
k=n;
for(i=0;n!=0;i++)
{
r=n%8;
n=n/8;
}
i--;
s=i;
for(;i>=0;i--)
printf("%d",r);
printf("\n");

out=fopen("log.txt","a");
fprintf(out,"\nDesati4nogo 4isla %d vosmeri4noje zna4enije : ",k);
i=s;
for(;i>=0;i--)
fprintf(out,"%d",r);
fclose(out);

gotoxy(20,3);getch();
}[/codebox]
 
Статус
Закрыто для дальнейших ответов.