Probleme de informatică
Clasa a IX-a
Elementele de bază C++ (46)
Subprograme predefinite (1)
Fişiere text (2)
Algoritmi elementari (111)
Tablouri unidimensionale (83)
Tablouri bidimensionale (64)
Probleme diverse (13)
Clasa a X-a
Subprograme (funcții) (87)
Şiruri de caractere (50)
Tipul înregistrare (26)
Recursivitate (57)
Alocarea dinamică a memoriei (2)
Liste înlănţuite (25)
Algoritmul lui Lee (1)
Clasa a XI-a
Metoda "Divide et impera" (12)
Metoda Backtracking (86)
Metoda Greedy (6)
Programare dinamică (18)
Grafuri neorientate (40)
Grafuri orientate (38)
Arbori (33)
Clasa a XII-a
Elemente de bază C# (32)
POO în C# (14)
Programare vizuală în C# (19)
Examen de bacalaureat
Competențe digitale
Examen de atestat
Admitere UBB (18)
Din fisierul numere.in se citesc, de pe prima linie, bazele b1, b2 si b3 pentru trei sisteme de numeratie (b1,b2,b3 din intervalul [2,10]). De pe a doua linie se citesc doua numere naturale: n in baza b1 si m in baza b2.
Sa se scrie in fisierul numere.out suma numerelor n si m reprezentata in baza b3.
Numerele n si m, precum si suma lor,vor avea cel mult 9 cifre indiferent de baza in care sunt reprezentate.
Indicatie: Folositi functii pentru trecerea unui numar din baza 10 intr-o baza b si respectiv din baza b in baza 10.
Exemple:
numere.in
2 5 3
110 213
numere.out
2101
sau
numere.in
10 10 10
110 213
numere.out
323

#include <fstream>
using namespace std;
ifstream fin("numere.in");
ofstream fout("numere.out");

long bb10(int n, int b)
{//trece n din baza b in baza 10
    int x=0,p=1;
    while(n)
    {
        x=x+n%10*p;
        n=n/10;
        p=p*b;
    }
    return x;
}

long b10b(int n, int b)
{//trece n din baza 10 in baza b
    int x=0,p=1;
    while(n)
    {
        x=x+n%b*p;
        n=n/b;
        p=p*10;
    }
    return x;
}

int main()
{
    int b1,b2,b3,n,m;
    fin>>b1>>b2>>b3>>n>>m;
    fout<<b10b(bb10(n,b1)+bb10(m,b2),b3);
    fout.close();
    fout.close();
    return 0;
}

29 mar 2024
Site-ul conține 884 de probleme rezolvate
Copyright © 2009-2018 Muresan Vasile Ciprian