Witam szukałem rozwiązania po google i nic nie znalazłem, wandbox zwraca bład fragmentacji. Co ma robić? W określone miejsce wrzucać jakis ciąg znaków, niestety nie działa mimo braku błędu. Nie mam już pomysłu co jest nie tak... Tak wiem zaraz zostanę opieprzony za jakiś mały błąd albo źle zrobioną rzecz ale ucze się nie jestem mistrzem.
Na inpucie cały program ma ciąg znaków zmienić według zasad, skasować nawiasy i plusy a mnożenia zamienić na plusy.
Dodatkowo nie podobają mi się te ify, lepiej zamienić na switcha? I/lub coś innego?
Wrzucam cały kod ze strzałką gdzie jest problem:
#include <iostream>
#include <string>
#include <vector>
using namespace std;
void wypisz(vector <string> &tab, int a)
{
for(int i=0; i<a; i++)
{
cout<<tab[i]<<endl;
}
}
// Usuwanie i zamiana elementow
void dzialanie(vector <string> &tab, int a)
{
for(int i=0; i<a; i++)
{
cout<<tab[i].length()<<endl;
for(long unsigned int j=0; j<tab[i].length(); j++)
{
int dodawania=0, mnozenia=0;
//Kasowanie nawiasow
if((tab[i][j]==40)||(tab[i][j]==41))
{
tab[i].erase(j,1);
j--;
}
//Kasowanie plusow
if(tab[i][j]==43)
{
tab[i].erase(j,1);
j--;
dodawania++;
}
//Kasowanie i zamiana mnozen
if(tab[i][j]==42)
{
tab[i].erase(j,1);
=> auto it=tab.begin() + j;
tab.insert( it, "z");
j--;
mnozenia++;
}
}
}
}
int main()
{
int ile;
cin>>ile;
while(ile>100)
{
cin>>ile;
}
vector <string> tab;
for(int i=0; i<ile; i++)
{
string tekst;
cin>>tekst;
while(tekst.length()>400)
{
cin>>tekst;
}
tab.push_back(tekst);
}
dzialanie(tab, ile);
wypisz(tab, ile);
return 0;
}