Răspuns :
Nu ai scris toata intrebarea dar cred ca stiu care e problema.
Insa mai intai niste sfaturi: poti folosii libraria algorithm (functia sort pe vectori) pentru a sorta elementele unui vector mult mai usor (si cu vectori e mult mai usor de lucrat deoarece exista atatea functii pentru ei si mai ales pentru ca poti sa-i redimensionezi).
Am detectat in rezolvarea ta doua probleme:
1) Cand ai inchis stream-urile (fin si fout) ai facut acest lucru dupa return 0; Cand codul e executat tot ce este dupa return nu mai este procesat.
--desi acest lucru nu ar trebui sa cauzeze ceva probleme
2) Ma gandesc ca problema specifica faptul ca cele doua numere sunt destul de mari. Dar chiar si daca n-ar fi (ex.:480024 80544) acestea combinat fac un numar foarte mare (si intra in overflow si iti mai indica vreun numar negativ....)
Pentru a rezolva problema asta poti folosii long long dar si un vector deoarece nu stii cate cifre au impreuna numerele:
(Varianta fara fin si fout):
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
int main(){
unsigned long long i=0,a,b,c,j,d,aux,nr=0; //am scapat de e
cin >> a;
cin >> b;
vector <int> v; //unsigned int v[20];
do{
c=a%10;
//i++;
v.push_back(c); //v[i]=c;
a/=10;
}while(a!=0);
do{
c=b%10;
//i++;
v.push_back(c); //v[i]=c;
b/=10;
}while(b!=0);
//poti folosii si varianta cu j=1 si j<i daca folosesti un array in loc de vector
// de asemenea aici puteai folosii direct sort....
for(j=0; j<i-1; j++)
for(d=j+1; d<=i-1; d++)
if(v[j]<=v[d]){
aux=v[j];
v[j]=v[d];
v[d]=aux;
}
for(j=0; j<i; j++)
nr=nr*10+v[j];
cout<<nr;
//fin close
//fout close
return 0;
}
Insa mai intai niste sfaturi: poti folosii libraria algorithm (functia sort pe vectori) pentru a sorta elementele unui vector mult mai usor (si cu vectori e mult mai usor de lucrat deoarece exista atatea functii pentru ei si mai ales pentru ca poti sa-i redimensionezi).
Am detectat in rezolvarea ta doua probleme:
1) Cand ai inchis stream-urile (fin si fout) ai facut acest lucru dupa return 0; Cand codul e executat tot ce este dupa return nu mai este procesat.
--desi acest lucru nu ar trebui sa cauzeze ceva probleme
2) Ma gandesc ca problema specifica faptul ca cele doua numere sunt destul de mari. Dar chiar si daca n-ar fi (ex.:480024 80544) acestea combinat fac un numar foarte mare (si intra in overflow si iti mai indica vreun numar negativ....)
Pentru a rezolva problema asta poti folosii long long dar si un vector deoarece nu stii cate cifre au impreuna numerele:
(Varianta fara fin si fout):
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
int main(){
unsigned long long i=0,a,b,c,j,d,aux,nr=0; //am scapat de e
cin >> a;
cin >> b;
vector <int> v; //unsigned int v[20];
do{
c=a%10;
//i++;
v.push_back(c); //v[i]=c;
a/=10;
}while(a!=0);
do{
c=b%10;
//i++;
v.push_back(c); //v[i]=c;
b/=10;
}while(b!=0);
//poti folosii si varianta cu j=1 si j<i daca folosesti un array in loc de vector
// de asemenea aici puteai folosii direct sort....
for(j=0; j<i-1; j++)
for(d=j+1; d<=i-1; d++)
if(v[j]<=v[d]){
aux=v[j];
v[j]=v[d];
v[d]=aux;
}
for(j=0; j<i; j++)
nr=nr*10+v[j];
cout<<nr;
//fin close
//fout close
return 0;
}
#include <bits/stdc++.h>
using namespace std;
ifstream fin("numere6.in");
ofstream fout("numere6.out");
int main()
{
string a, b, s;
fin >> a >> b;
s = a + b;
sort(rbegin(s), rend(s));
fout << s;
return 0;
}
using namespace std;
ifstream fin("numere6.in");
ofstream fout("numere6.out");
int main()
{
string a, b, s;
fin >> a >> b;
s = a + b;
sort(rbegin(s), rend(s));
fout << s;
return 0;
}
Vă mulțumim că ați vizitat platforma noastră dedicată Informatică. Sperăm că informațiile oferite v-au fost utile. Dacă aveți întrebări sau aveți nevoie de asistență suplimentară, nu ezitați să ne contactați. Așteptăm cu nerăbdare să vă revedem și nu uitați să ne salvați în lista de favorite!