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

Тема в разделе "Общие вопросы по С и С++", создана пользователем SASS, 9 дек 2008.

Статус темы:
Закрыта.
  1. SASS

    SASS Гость

    Добрай день!
    Помогите пожалуйста справиться с задачей! Нужно модифицировать или переписать код, для программы которая переводит целые и дробные восьмеричные числа туда и обратно а так-же выполняет с ними арифметические действия - сложение, вычитание, умножение и деление.
    Программа которая делает все это уже есть, но она корректно работает только с целыми числами. Нужно её модифицировать чтобы она работала и с целыми и с дробными числами!
    Код имеющейся программы(работающей!):
    [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]
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей