-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathCompresie de date.cpp
70 lines (65 loc) · 2.31 KB
/
Compresie de date.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
//este foarte ambigua rezolvarea mea...
#include<iostream>
#include<string.h>
#include<algorithm>
using namespace std;
int main(){
std::string::size_type sz;
string virgula=",";
string linie,new_linie;
int nr_linii,nr_curent,nr_anterior,zero=0,aux=0,aux2=0;
cin>>nr_linii;
nr_linii++;
do{
getline(cin,linie);
reverse(linie.begin(),linie.end());
while(linie.size()!=0){
int nr_zero=count(linie.begin(),linie.end(),'0');
if(isdigit(linie[0])){
if(!isdigit(linie[1])){
nr_curent=stoi(linie);}
else{nr_curent=stoi(linie,&sz);
linie.erase(linie.begin());
//cout<<nr_curent<<endl;
//linie.erase(linie.begin());
}
if(nr_curent==0){
zero++;
linie.erase(linie.begin());
}else{
if(zero>0){//cout<<nr_curent<<endl;
new_linie+=")";new_linie+=to_string(zero);new_linie+= ",";new_linie+= to_string(nr_curent)+"(";
zero=0;
}
else{
if(aux==0){
new_linie+=to_string(nr_curent);new_linie+=",";
aux2++;
}else{
//if(aux2==0){
new_linie+=","; new_linie+=to_string(nr_curent);}//else{new_linie+=to_string(nr_curent);}}
}
linie.erase(linie.begin());
}
//cout<<nr_anterior;
}else{linie.erase(linie.begin());}
aux++;
}
//new_linie.erase(new_linie.begin());
reverse(new_linie.begin(),new_linie.end());
if(new_linie.size()>1){
for(int i=0;i<new_linie.size();i++){
if(new_linie[i]==','&&new_linie[i+1]==','){
new_linie.erase(new_linie.begin()+i);
}
if(new_linie[i]==')'&&new_linie[i+1]=='('){
new_linie.insert(i+1,virgula);
}
}
cout<<new_linie<<endl;}
new_linie.clear();
nr_linii--;
aux=0;
aux2=0;
}while(nr_linii!=0);
}