Va rog urgent!!!!!
Se citește de la tastatura un sir de litere mici din alfabet, terminat cu caracterul '$'. Sa se pună intr-o stiva implementata dinamic toate literele citite. Se citește apoi o litera mica y din
alfabet. Sa se genereze doua structuri dinamice de tip stiva, prima cuprinzând literele din stiva inițiala care preced in alfabet litera y, cealaltă cuprinzând literele din stiva inițiala care succed litera y. De afișat conținutele stivelor generate.
Răspunsuri la întrebare
PROGRAM C++
#include <iostream>
#include <math.h>
using namespace std;
char* aloca_stiva(int dimensiune) {
char* p = new char[dimensiune];
return p;
}
void adauga_element_stiva(char element, char* stiva,int &cap) {
stiva[cap++] = element;
};
char extrage_element_stiva(char* stiva, int& cap) {
return stiva[cap--];
}
void afisare_continut_stiva(char* stiva, int cap) {
cap--;
while (cap > 0)
cout << stiva[cap--] << " ";
}
int main() {
//Citeste sir de caractere
cout << "Introduceti sirul de caractere : ";
char txt[100];
cin.get(txt, 100, '$');
cin.get(); //Goleste buffer
//Construieste stiva
char* stiva_citita = aloca_stiva(strlen(txt));
int cap_stiva_citita = 0;
//Adauga caracterele citite in stiva
for (int i = 0; i < strlen(txt); i++)
adauga_element_stiva(txt[i], stiva_citita, cap_stiva_citita);
//Citeste y
char y;
cout << "Introduceti y : ";
cin >> y;
//Adauga literele in stiva corespunzatoare
char* stiva_1 = aloca_stiva(strlen(txt));
int cap_stiva_1 = 0;
char* stiva_2 = aloca_stiva(strlen(txt));
int cap_stiva_2 = 0;
char temp;
while (cap_stiva_citita) {
temp = extrage_element_stiva(stiva_citita, cap_stiva_citita);
if (temp < y)adauga_element_stiva(temp, stiva_1, cap_stiva_1);
if (temp > y) adauga_element_stiva(temp, stiva_2, cap_stiva_2);
}
//Afiseaza continutul celor doua stive
cout << "\nStiva 1 : ";
afisare_continut_stiva(stiva_1, cap_stiva_1);
cout << "\nStiva 2 : ";
afisare_continut_stiva(stiva_2, cap_stiva_2);
}
Nota :
O implementare a stivei folosind clase ar fi condus la o varianta mai "curata" de rezolvare a problemei.
Aparent unele intrebari la informatica permit maxim un singur raspuns (nu doua, asa cum e normal), nu stiu de ce.
Asteapta pana cand un moderator va sterge raspunsul deja primit si apoi iti vom putea raspunde cand avem timp