online: 3; azi: 883; total: 51338 Manual clasa a xi a - Implementarea structurilor de date - Lista liniara

Probleme Rezolvate



Manual clasa a Xi a

Implementarea structurilor de date

Lista liniara

Se memorează într-o stivă un şir de litere mici. Se citeşte de la tastatură o literă mică a alfabetului - lit. Să se creeze două stive: una va contine literele din stiva iniţială care preced în alfabet litera lit şi alta va contine literele din stiva inițială care succed în alfabet litera lit.
# include < iostream >
# include < fstream >
using namespace std ;
const int MAX_SIZE = 100 ;
void push ( char s[], int & top, char new_char ) {
if (top < MAX_SIZE - 1 ) {
top++;
s[top] = new_char ;
} else {
cout << "Stiva este plina!" << endl ;
}
}
char pop ( char s[], int & top) {
char result = '\0' ;
if (top >= 0 ) {
result = s[top];
top--;
} else {
cout << "Stiva este goala!" << endl ;
}
return result ;
}
void split_characters ( char s[], int & top, char before [], int & before_top , char after [], int & after_top , char c) {
while (top >= 0 ) {
if (s[top] < c) {
push ( before , before_top , s[top]);
} else if (s[top] > c) {
push ( after , after_top , s[top]);
}
top--;
}
}
int main () {
char s[MAX_SIZE], before [MAX_SIZE], after [MAX_SIZE];
int top = -1 , before_top = -1 , after_top = -1 ;
char c, letter ;
// Citim stiva dintr-un fisier text
ifstream in ( "input.txt" ) ;
while (in >> letter ) {
push (s, top, letter );
}
in.close ();
// Citim litera c de la tastatura
cout << " Introduceti o litera mica a alfabetului: " ;
cin >> c;
// Impartim stiva s in stivele before si after in functie de litera c
split_characters (s, top, before , before_top , after , after_top , c);
// Afisam stiva before
cout << " Before : " ;
while ( before_top >= 0 ) {
cout << pop( before , before_top ) << " " ;
}
cout << endl ;
// Afisam stiva after
cout << " After : " ;
while ( after_top >= 0 ) {
cout << pop( after , after_top ) << " " ;
}
cout << endl ;
return 0 ;
}
# include < iostream >
# include < fstream >
# include < stack >
using namespace std ;
void split_characters ( stack < char >& s, stack < char >& before , stack < char >& after , char c) {
while (! s.empty ()) {
if ( s.top () < c) {
before.push ( s.top ());
} else if ( s.top () > c) {
after.push ( s.top ());
}
s.pop ();
}
}
int main () {
stack < char > s, before , after ;
char c, letter ;
// Citim stiva dintr-un fisier text
ifstream in ( "input.txt" ) ;
while (in >> letter ) {
s.push ( letter );
}
in.close ();
// Citim litera c de la tastatura
cout << " Introduceti o litera mica a alfabetului: " ;
cin >> c;
// Impartim stiva s in stivele before si after in functie de litera c
split_characters (s, before , after , c);
// Afisam stiva before
cout << " Before : " ;
while (! before.empty ()) {
cout << before.top () << " " ;
before.pop ();
}
cout << endl ;
// Afisam stiva after
cout << " After : " ;
while (! after.empty ()) {
cout << after.top () << " " ;
after.pop ();
}
cout << endl ;
return 0 ;
}