Jump to content

Convertor De Baze In C++


Ovidiu29

Recommended Posts

Am lucrat la un programel care converteste un nr din baza 10 in baza aleasa de tine. Vreau sa aud pareri.

#include<stdio.h>
using namespace std;
unsigned int n,N,a,b,Baza,cop,i,j;
int main()
{
    printf("n="); scanf("%d",&n); printf("Baza="); scanf("%d",&Baza);
    while(n>9999)
    {
        printf("n="); scanf("%d",&n);
    }
    cop=n;
    while(Baza<2)
    {
        printf("Baza="); scanf("%d",&Baza);
    }
    while(n!=0)
    {
        a=n%Baza;
        if(n%Baza==0) i++;
        N=N*10+a;
        n/=Baza;
    }

    while(N>0)
    {
        b=N%10;
        printf("%d",b);
        N/=10;

    }
    while(i!=0)
    {
        if(cop%Baza==0)
        {
            printf("%d",cop%Baza);
            i--;
        }

        while(N!=0)
        {
            N/=10;
            i--;
        }

    }
    return 0;
}

Respecta si vei fi respectat.

Link to comment
Share on other sites

Defapt problema era tema pentru acasa si nr trebuia sa aiba maxim 4 cifre. Iar baza daca era 0, da eroare(asta nu facea din cerinta ci am observat accidental).

De exemplu tu introduci n 10000 iti va aparea "n=" pana cand n<=9999.


Sa explic cum functioneaza:

1.Citeste nr si baza.

2.Imparte nr la baza si ia restul si-l aduna la N care la inceput N=0 cat timp n este diferit de 0.

3.Iese un nr care este scris invers fata de nr in baza respectiva si trebuie inversat.

4.La inversare zerourile care nu se afla cuprinse intre doua cifre mai mari sau egale cu 1 se pierd si de asta se face un programel care sa adauge la final zerourile pierdute.

Respecta si vei fi respectat.

Link to comment
Share on other sites

  • 3 weeks later...
  • Moderators

Mnoah, greu ._. Tare greu..

#include <iostream>
using namespace std;
int main()
{
    int x,y,z[99],i=0;
    double a;
    cout<<"Baza="; cin>>y;
    cout<<"Numar="; cin>>x;
    while (x)
    {
        a=(x%y);
        z[i]=a;
        i++;
        x=x/y;
    }
    for (i--;i>-1;i--)
        if (z[i]<10)
            cout<<z[i];
        else
            cout<<char(z[i]-10+'a');
    return 0;
}
Link to comment
Share on other sites

E bun dar al meu merge pana la baza 60. La tine merge cum trebuie pana la 35.

Tre sa recunosc ca te pricepi in programare poate combinam cele doua programe :)).

#include<iostream>
using namespace std;
unsigned long n,N,Baza,r,q,i,j=1;
char v[300];
int main()
{
    while(j>0)
    {
        cout<<"Number="; cin>>n; N=n;
        while(Baza<2||Baza==10||Baza>64)
        {
            cout<<"Base="; cin>>Baza;
        }
        while(n!=0)
        {
            ++q;
            n/=Baza;
        }
        for(i=1;i<=q;++i)
        {
            r=N%Baza;
            switch(r)
            {
                case 0: v[i]=48; break;                case 1: v[i]=49; break;
                case 2: v[i]=50; break;                case 3: v[i]=51; break;
                case 4: v[i]=52; break;                case 5: v[i]=53; break;
                case 6: v[i]=54; break;                case 7: v[i]=55; break;
                case 8: v[i]=56; break;                case 9: v[i]=57; break;
                case 10: v[i]=65; break;               case 11: v[i]=66; break;
                case 12: v[i]=67; break;               case 13: v[i]=68; break;
                case 14: v[i]=69; break;               case 15: v[i]=70; break;
                case 16: v[i]=71; break;               case 17: v[i]=72; break;
                case 18: v[i]=73; break;               case 19: v[i]=74; break;
                case 20: v[i]=75; break;               case 21: v[i]=76; break;
                case 22: v[i]=77; break;               case 23: v[i]=78; break;
                case 24: v[i]=79; break;               case 25: v[i]=80; break;
                case 26: v[i]=81; break;               case 27: v[i]=82; break;
                case 28: v[i]=83; break;               case 29: v[i]=84; break;
                case 30: v[i]=85; break;               case 31: v[i]=86; break;
                case 32: v[i]=87; break;               case 33: v[i]=88; break;
                case 34: v[i]=89; break;               case 35: v[i]=90; break;                
                case 36: v[i]=97; break;               case 37: v[i]=98; break;
                case 38: v[i]=99; break;               case 39: v[i]=100; break;
                case 40: v[i]=101; break;              case 41: v[i]=102; break;
                case 42: v[i]=103; break;              case 43: v[i]=104; break;
                case 44: v[i]=105; break;              case 45: v[i]=106; break;
                case 46: v[i]=107; break;              case 47: v[i]=108; break;
                case 48: v[i]=109; break;              case 49: v[i]=110; break;
                case 50: v[i]=111; break;              case 51: v[i]=112; break;
                case 52: v[i]=113; break;              case 53: v[i]=114; break;
                case 54: v[i]=115; break;              case 55: v[i]=116; break;
                case 56: v[i]=117; break;              case 57: v[i]=118; break;
                case 58: v[i]=119; break;              case 59: v[i]=120; break;
                case 60: v[i]=121; break;              case 61: v[i]=122; break;
                case 62: v[i]=37; break;               case 63: v[i]=38; break;
            }
            N/=Baza;
        }
        cout<<"Number in base "<<Baza<<" = ";
        for(i=q;i>0;--i)
             cout<<v[i];    
        cout<<'\n'<<'\n';
        q=0;
        Baza=0;
    }
    system("pause");
    return 0;
}

L-am facut in engleza de nebun :)

L-am simplificat si acum nu mai are switch ci if si in loc de 69 de randuri are 42. Dar acum face aceelas lucru.

Respecta si vei fi respectat.

Link to comment
Share on other sites

da care nu face fisiere .exe? 

 

 

app, a "posta munca ta pe 0" inseamna sa primesti comentarii care sa te ajute sa inveti cum sa faci lucrurile mai bine.

Tu la randul tau ai invatat si vei invata pentru ca altii au "postat munca lor pe 0". 

 

Cel mai probabil ai un windows piratat, multe softuri piratate sau free.. mi se pare foarte ciudat sa zici asta.

love is a verb
Love is a doing word

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.