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ă. Ne bucurăm dacă informațiile v-au fost de folos. În cazul în care aveți întrebări suplimentare sau doriți sprijin adițional, nu ezitați să ne contactați. Revenirea dumneavoastră ne onorează, iar dacă apreciați conținutul nostru, vă invităm să ne salvați în lista de site-uri preferate!