Dekodowanie treści

Dekodowanie treści
GR
  • Rejestracja:ponad 7 lat
  • Ostatnio:prawie 7 lat
  • Postów:17
0

Witam, chciał bym zapytać o radę a mianowicie mam za zadanie napisać program który będzie wyszukiwał frazę w tekście (skrót) i zamieniał go na jego rozwinięcie na obecną chwile mam już funkcje która wyszukuje frazy ale nie mam pojęcia jak taki wyszukany skrót podmienić na jego rozwinięcie które znajduję się w pliku txt, dodam że nie jestem mistrzem c++ więc jak bym mógł prosić o takie dosyć proste wyjaśnienia .
Z góry dziękuje.
A tyle na obecna chwile naskrobałem :

Kopiuj
#include <stdio.h>
#include <fstream>
#include <iostream>
#include <string>

using namespace std;


int main()
{
	char decyzja_1;
	do
	{
		cout << "Co chesz zrobic : \n 1.Sprawdz biblioteke skrotuw,\n 2.Wprowadz nowe zdanie.\n 3.Sprawdz zadania z rozwinietymi skrotami." << endl;
		int opcja;
		cin >> opcja;
			switch (opcja)
			{
				case 1:if (opcja == 1)
				{
					cout << "W pliku znajduja sie nastepujace zdania : \n" << endl;
					string zawartosc_pliku;
					ifstream Skroty;
					Skroty.open("C:\\Users\\telemarketer26\\Desktop\\Skroty.txt");
					while (Skroty.good())
					{
						getline(Skroty, zawartosc_pliku);
						cout << zawartosc_pliku << endl;
					}
				}
				case 2:if (opcja == 2)
				{
					cout << "Podaj zdanie uzywajac skrotu :\n" << endl;
					string zdanie;
					cin.ignore();
					getline(cin, zdanie);
					ofstream Zdania;
					Zdania.open("C:\\Users\\telemarketer26\\Desktop\\Zdania.txt", ios::app);
					Zdania << zdanie << endl;
				//	ofstream Zdania("C:\\Users\\telemarketer26\\Desktop\\Zdania.txt");
					string tekst;
					while(!Zdania.eof())
						{
	    					getline(Zdania, tekst);
	    					if(!(string::npos == tekst.find("bd")))
	    					cout<<"Fraze odnaleziono";
	    					else 
	    					cout<<"Frazy nie odnaleziono";
							break;
			
						}
				}
		cout << "Czy chcesz zakonczyc prace t/n ??" << endl;
		cin >> decyzja_1;
		cin.get();
	} 
	while (decyzja_1 != 't');
	cin.get();
	return 0;
}
lion137
  • Rejestracja:około 8 lat
  • Ostatnio:mniej niż minuta
  • Postów:4927
0

Oddziel IO od reszty, zeby to jakiś wygladalo, logike Zamknij w funkcjach. Najlepiej byloby chyba utworzyc, hash z frazami(skrotami), jako klucze, a z rozwinieciami jako wartosci. Potem po prostu pytac strukture


PanRiK
  • Rejestracja:ponad 7 lat
  • Ostatnio:ponad rok
  • Lokalizacja:Szczecin
  • Postów:104
0

Jak robisz swtiche to nie potrzeba Ci ifów(przynajmniej w tym przypadku). Switch i te casey mają zastępować ify. Jeżeli te if`y usuniesz i po każdym case dodasz:

Kopiuj
break;

To bedziesz miał to samo, a nawet i lepiej.

Po drugie:

Kopiuj
while( Skroty.good())
                    {
                        getline(Skroty, zawartosc_pliku);
                        cout << zawartosc_pliku << endl;
                    }

Co ten warunek oznacza? Jeżeli plik się dobrze otworzy, to nigdy nie wyjdziemy z while.
Wyjście z pętli powinno oznaczać koniec pliku, czyli "nic już wiecej tam nie ma, więc nie czytam"

Kopiuj
while(!Skroty.eof())

Po trzecie:
Nigdzie nie zamykasz plików.

Co do samego rozwiązania:

Ja bym spróbował tak, że jeżeli wprowadzimy zdanie, to te wprowadzone zdanie rozłożyć na osobne wyrazy:
"mgr zapytał inż. o prace zal."
Rozbić na 6 stringów, potem niech funkcja sprawdza każdy z tych wyrazów czy jest taki skrót, czy nie. Jeżeli jest to dany string ze skrótem zmieniamy na string z rozwinięciem skrótu.
Potem te 6stringów łączymy w jeden.


Jeśli widzisz mój błąd to mnie popraw.
Pisanie błędnych wypowiedzi utrwala złe praktyki.
Kiedyś możesz dostać do ręki mój kod.
edytowany 2x, ostatnio: PanRiK
GR
  • Rejestracja:ponad 7 lat
  • Ostatnio:prawie 7 lat
  • Postów:17
0

Dałbyś wskazówkę jak rozbić zdanie na te pojedyncze stringi , i co robić ze znakami białymi ?
i jak pozamykać te otwieranie pliki ;(

edytowany 1x, ostatnio: greasses
PanRiK
  • Rejestracja:ponad 7 lat
  • Ostatnio:ponad rok
  • Lokalizacja:Szczecin
  • Postów:104
0

Pliki zamyka się:

Kopiuj
obiekt.close();

W Twoim przypadku obiektami są: Skroty i Zadania.

Wyrazy możesz oddzielić za pomocą:
http://www.cplusplus.com/reference/cstring/strtok/

Ale... bardziej podoba mi się zastosowanie haszy (klucz wartość)


Jeśli widzisz mój błąd to mnie popraw.
Pisanie błędnych wypowiedzi utrwala złe praktyki.
Kiedyś możesz dostać do ręki mój kod.
edytowany 1x, ostatnio: PanRiK
GR
  • Rejestracja:ponad 7 lat
  • Ostatnio:prawie 7 lat
  • Postów:17
0

Wytłumaczył byś mi jak zrobić to na tych kluczach ?

GR
  • Rejestracja:ponad 7 lat
  • Ostatnio:prawie 7 lat
  • Postów:17
0

A jest możliwe zrobienie czegoś takiego że w momęcie gdy:

Kopiuj
 if(zdanie.find("bd")!=string::npos)
                            cout<<"Fraze odnaleziono";
                            else 
                            cout<<"Frazy nie odnaleziono";

znajdzie mi frazę żeby ją zamieniło ?na inne w ostateczności zrobił bym każdy skrót po koleii ale jak mówiłem lepiej nie umiem ;/

PanRiK
  • Rejestracja:ponad 7 lat
  • Ostatnio:ponad rok
  • Lokalizacja:Szczecin
  • Postów:104
0

Czy ten kod Ci kompiluje?


Jeśli widzisz mój błąd to mnie popraw.
Pisanie błędnych wypowiedzi utrwala złe praktyki.
Kiedyś możesz dostać do ręki mój kod.
edytowany 1x, ostatnio: PanRiK
GR
  • Rejestracja:ponad 7 lat
  • Ostatnio:prawie 7 lat
  • Postów:17
0

Tak i jak w pliku Zdania jest zdanie w którym jest to "bd" to wyświetla że znaleziono fraze

PanRiK
  • Rejestracja:ponad 7 lat
  • Ostatnio:ponad rok
  • Lokalizacja:Szczecin
  • Postów:104
0

Dobra więc tak, ogólnie chodzi o to, żebyś zrobił sobie taki ala słownik, co ma tutaj sens taki, że patrz:
Jeżeli zrobisz sobie słownik(mape) to wtedy nie będziesz musiał przelatywać całego pliku tekstowego w poszukiwaniu rozwinięcia danego skrótu:
Tutaj masz jak wyglądają mapy: Mapy

Ja bym to widział tak:

  • Robisz mapę <skróty , rozwinięciaSkrótów>
  • robić tablice stringów, rozbijając zdanie na oddzielne wyrazy
  • Sprawdzać, czy któryś wyraz (element tablicy) jest równy "skrót" z mapy
  • Jeżeli jest to zmieniamy na rozwinięcieSkrótu
  • Jeżeli nie to nic nie robimy

Czyli pierwsze co musiałbyś zrobić to utworzenie właśnie takiej mapy

Kopiuj
 if(zdanie.find("bd")!=string::npos)
                            cout<<"Fraze odnaleziono";
                            else 
                            cout<<"Frazy nie odnaleziono";

Możesz zmieniać w tej funkcji tylko będziesz musiał użyć string::replace , biorąc pod uwagę, że find zwraca Ci miejsce, gdzie rozpoczyna się dany string (w tym wypadku "bd")
No i oczywiście w pliku ze skrótami za każdym razem będziesz musiał przeglądać czy jest taki skrót , a potem jakie jest jego rozwinięcie.


Jeśli widzisz mój błąd to mnie popraw.
Pisanie błędnych wypowiedzi utrwala złe praktyki.
Kiedyś możesz dostać do ręki mój kod.
edytowany 1x, ostatnio: PanRiK
GR
  • Rejestracja:ponad 7 lat
  • Ostatnio:prawie 7 lat
  • Postów:17
0
Kopiuj
if (zdanie.find("bd") != string::replace("bede"))
				{
					Zdania << zdanie << endl;
					break;

nie wiem czy dobrze Cię zrozumiałem
ale coś takiego wyrzuca mi błąd
o przeciążeniu funkcji

PanRiK
Zanim odpowiem taki mały tip: Tekst na zielono w mojej odpowiedzi to odnośniki do stron, naciśnij i przeczytaj chwilę
GR
  • Rejestracja:ponad 7 lat
  • Ostatnio:prawie 7 lat
  • Postów:17
0

Z tego co wyczytałem muszę znać pozycje tego Bd w ciągu i zastąpić ja poprzez użycie tego ??

Kopiuj
string& replace (size_t pos,  size_t len,  const string& str,
                 size_t subpos, size_t sublen);
PanRiK
  • Rejestracja:ponad 7 lat
  • Ostatnio:ponad rok
  • Lokalizacja:Szczecin
  • Postów:104
0

Pozycje "bd" zwraca Ci find(w sensie zwraca gdzie się zaczyna), jak przeglądasz te strony z dokumentacją to na dole masz przykłady


Jeśli widzisz mój błąd to mnie popraw.
Pisanie błędnych wypowiedzi utrwala złe praktyki.
Kiedyś możesz dostać do ręki mój kod.
GR
W takim wypadku jak taką pozycje przekazać do tego replace ?
PanRiK
  • Rejestracja:ponad 7 lat
  • Ostatnio:ponad rok
  • Lokalizacja:Szczecin
  • Postów:104
0

Widzisz wczytując się w dokumentacje widzimy, że replace zastępuje nam nie tylko dane słowo, a w dane miejsce wpycha na siłę jakiegoś stringa, kasując to co jest dalej.

Trzeba by było, string::insert wepchnąć Twój rozwinięty skrót, a potem usunąć to "bd".

Widzisz ile to zabawy? A prawdopodobnie jeszcze coś przy tym wyjdzie. Dlatego rozwiązanie z mapami i dzielenie zdania na wyrazy jest dużo lepsze i szybsze.


Jeśli widzisz mój błąd to mnie popraw.
Pisanie błędnych wypowiedzi utrwala złe praktyki.
Kiedyś możesz dostać do ręki mój kod.
GR
  • Rejestracja:ponad 7 lat
  • Ostatnio:prawie 7 lat
  • Postów:17
0

Masz racje tylko nigdy nie działałem na tych mapach więc zrobić cokolwiek w tym to jest dla mnie spory problem;/

PanRiK
  • Rejestracja:ponad 7 lat
  • Ostatnio:ponad rok
  • Lokalizacja:Szczecin
  • Postów:104
0

Zobacz, mapy to jak tablice:
Z Wikipedii:

Kopiuj
   map<int, string> tydzien;
   tydzien[1] = "niedziela";
   tydzien[2] = "poniedzialek";
   tydzien[3] = "wtorek";
   tydzien[4] = "sroda";
   tydzien[5] = "czwartek";
   tydzien[6] = "piatek";
   tydzien[7] = "sobota";

Zawsze możesz poczekać aż ktoś inny coś zaproponuje :)


Jeśli widzisz mój błąd to mnie popraw.
Pisanie błędnych wypowiedzi utrwala złe praktyki.
Kiedyś możesz dostać do ręki mój kod.
GR
Widzę że masz do mnie cierpliwość to zdam się na twoje rozwiązanie ^^
GR
  • Rejestracja:ponad 7 lat
  • Ostatnio:prawie 7 lat
  • Postów:17
0

A wiec musze zrobić takie 2 mapy
jedna mapa(int , string )skroty ;
a druga mapa(int , string) rozszerzenia;
Tak ??,
i teraz tablice znaków string która będzie przechowywać to moje zdanie w którym będzie skrót ?

PanRiK
  • Rejestracja:ponad 7 lat
  • Ostatnio:ponad rok
  • Lokalizacja:Szczecin
  • Postów:104
0

Jedną mapę: mapa<skrót , rozszerzenieSkrótu>.
Tablicę stringów, w któej będą oddzielne wyrazy z wpisanego zdania np:

Kopiuj
ZDANIE: "Ala ma kota"

TABLICA:
sentence[0] = "Ala";
sentence[1] = "ma";
sentence[2] = "kota";

Potem, jeżeli zadeklarujesz i zdefiniujesz sobie tą mapę to robisz tak:

Kopiuj
for(int i = 0; i < sentence.size(); i++){

if( mapa.count(sentence[i]){
sentence[i] = mapa[sentence[i]];
}

}

Chyba, że coś pokręciłem chodzi o to:

  • Przelatujesz wszystkie elementy tablicy stringów, czyli Twoje wyrazy
  • Jeżeli , badane słowo to skrót , czyli istnieje w naszej mapie: "mapa.count(sentence[i])" to:
    Element z tablicy stringów(czyli skrót) równa się , wartość z mapy spod klucza "sentence[i]"

Żeby to zrobić jeszcze jaśniej praktyczny przykład:

Kopiuj
ZDANIE: "nie bd tam"

TABLICA:
sentence[0] = "nie";
sentence[1] = "bd";
sentence[2] = "tam";

Kod(załóżmy, że badamy trzeci element)

Kopiuj
mapa["bd"] = "bede"; 

if( mapa.count("bd"){
sentence[1] = mapa["bd"];
}

i w tym momencie w tablicy "bd" zmieniło się na "bede"

Wydaje mi się, że z taką widzą powinieneś to napisać


Jeśli widzisz mój błąd to mnie popraw.
Pisanie błędnych wypowiedzi utrwala złe praktyki.
Kiedyś możesz dostać do ręki mój kod.
edytowany 2x, ostatnio: PanRiK
GR
  • Rejestracja:ponad 7 lat
  • Ostatnio:prawie 7 lat
  • Postów:17
0

Mógł byś mi jeszcze tylko pokazać jak miał by wyglądać początek takiej mapy dwóch stringów ?

PanRiK
  • Rejestracja:ponad 7 lat
  • Ostatnio:ponad rok
  • Lokalizacja:Szczecin
  • Postów:104
0
Kopiuj
map<string, string> myWords;
myWords["bd"] = "bede";
myWords["mgr"] = "magister";

Nie jestem pewien, bo na mapach też dużo nie robiłem ale z tego co widzę to w internecie tak jest.


Jeśli widzisz mój błąd to mnie popraw.
Pisanie błędnych wypowiedzi utrwala złe praktyki.
Kiedyś możesz dostać do ręki mój kod.
GR
  • Rejestracja:ponad 7 lat
  • Ostatnio:prawie 7 lat
  • Postów:17
0

Zrobilem cos takiego ale nie wiem w takim wypadku jak to sprawdzac ;/

Kopiuj
#include "stdafx.h"
#include <stdio.h>
#include <fstream>
#include <iostream>
#include <string>
#include <map>
#include <conio.h>

using namespace std;


int main()
{
	map<string, string> Skrt;
	Skrt["zw"] = "zaraz wracam";
	Skrt["jkc"] = "jak cos to";
	Skrt["ocb"] = "o co biega";
	Skrt["omg"] = "O moj Boze";
	Skrt["nrx"] = "narka";
	Skrt["jj"] = "juz jestem";
	Skrt["sql"] = "szkola";
	Skrt["pp"] = "pa pa";
	Skrt["bdp"] = "bede potem";
	Skrt["bj"] = "bede jutro";
	Skrt["kc"] = "kocham Cie";
	Skrt["kcm"] = "kocham Cie mocno";
	Skrt["jww"] = "jak wyzej";
	Skrt["nmzc"] = "nie ma za co";
	Skrt["nsns"] = "nic sie nie stalo";
	Skrt["rwp"] = "rodzic w pokoju";
	Skrt["btw"] = "przy okazji ";
	Skrt["ur"] = "Uwaga rodzice";
	Skrt["nww"] = "Nie wiem";
	Skrt["kk"] = "ok ok";
	Skrt["jctk"] = "jak cos to kom";
	Skrt["mbp"] = "moze bede pozniej";
	Skrt["np"] = "na przyklad";
	Skrt["tj"] = "to jest";
	Skrt["pt"] = "pod tytulem";
	Skrt["dz"] = "dzieki";
	Skrt["bd"] = "bede";
	Skrt["cb"] = "ciebie";
	
	string Zdanie[2];
	for (int i = 0; i<1; i++)
	{
		cout << "Podaj zdanie :  ";
		cin.ignore();
		getline(cin, Zdanie[i]);
	}
		cout << "zapisane w tablicy" << endl;
		for (int i = 0; i<1; i++)
		cout << Zdanie[i] << endl;
		cin.get();

		for (int i = 0; i < Zdanie.size(); i++) {

			if (Skrt.count(Skrt[i]) {
				Skrt[i] = Skrt[Skrt[i]];
	

	cin.get();
	return 0;
}
GR
  • Rejestracja:ponad 7 lat
  • Ostatnio:prawie 7 lat
  • Postów:17
0

Nie wiem co tutaj może być źle jeszcze ta tablica zjada mi pierwsza literkę nie wiem czemu ;/

Kopiuj
#include "stdafx.h"
#include <stdio.h>
#include <fstream>
#include <iostream>
#include <string>
#include <map>
#include <conio.h>

using namespace std;


int main()
{
	map<string, string> Skrt;
	Skrt["zw"] = "zaraz wracam";
	Skrt["jkc"] = "jak cos to";
	Skrt["ocb"] = "o co biega";
	Skrt["omg"] = "O moj Boze";
	Skrt["nrx"] = "narka";
	Skrt["jj"] = "juz jestem";
	Skrt["sql"] = "szkola";
	Skrt["pp"] = "pa pa";
	Skrt["bdp"] = "bede potem";
	Skrt["bj"] = "bede jutro";
	Skrt["kc"] = "kocham Cie";
	Skrt["kcm"] = "kocham Cie mocno";
	Skrt["jww"] = "jak wyzej";
	Skrt["nmzc"] = "nie ma za co";
	Skrt["nsns"] = "nic sie nie stalo";
	Skrt["rwp"] = "rodzic w pokoju";
	Skrt["btw"] = "przy okazji ";
	Skrt["ur"] = "Uwaga rodzice";
	Skrt["nww"] = "Nie wiem";
	Skrt["kk"] = "ok ok";
	Skrt["jctk"] = "jak cos to kom";
	Skrt["mbp"] = "moze bede pozniej";
	Skrt["np"] = "na przyklad";
	Skrt["tj"] = "to jest";
	Skrt["pt"] = "pod tytulem";
	Skrt["dz"] = "dzieki";
	Skrt["bd"] = "bede";
	Skrt["cb"] = "ciebie";

	string zdanie[32];

		for (int i = 0; i < sizeof(zdanie); i++)
		{
			cout << "Napisz Zdanie ";
			cin.ignore();
			getline(cin, zdanie[i]);
		
			for (int i = 0; i < zdanie[i].size(); i++)
			{

				if (Skrt.count(zdanie[i]))
				{
					zdanie[i] = Skrt[zdanie[i]];
					
				}
				cout << zdanie[i] << endl;
			}
		}
	cin.get();
	return 0;
}
PanRiK
  • Rejestracja:ponad 7 lat
  • Ostatnio:ponad rok
  • Lokalizacja:Szczecin
  • Postów:104
0

Wydaje mi się albo gdzieś znalazłeś kod.

Kopiuj
cin.ignore();

Sprawdź sobie co to robi , ale Ci podpowiem to przez to zjada Ci pierwszą literke.

Co do rozwiązania:

  • Wpisujesz wszystkie zdania do tablicy, okey to jest spoko
  • Powinieneś te zdania rozdzielić na mniejsze części czyli na te wyrazy, najlepiej byłoby to zrobić w vectorze: Vector c++
Kopiuj
 for (int i = 0; i < zdanie[i].size(); i++)
            {

                if (Skrt.count(zdanie[i]))
                {
                    zdanie[i] = Skrt[zdanie[i]];

                }

Tutaj sprawdzasz całe zdania. a przecież chodzi Ci o od dzielne wyrazy, jak rozdzielać zdania masz tutaj >click<

Jeszcze takie pytanie:
Czy na 100% wiesz, że tych zdań jest 32 i to się nie zmieni?

  • Bo jeśli liczba zdań może się zmienić to polecam skorzystać z wyżej wymienionego wektora

Jeśli widzisz mój błąd to mnie popraw.
Pisanie błędnych wypowiedzi utrwala złe praktyki.
Kiedyś możesz dostać do ręki mój kod.
edytowany 3x, ostatnio: PanRiK
GR
  • Rejestracja:ponad 7 lat
  • Ostatnio:prawie 7 lat
  • Postów:17
0

Hej zrobiłem coś takiego

Kopiuj
	cout<< "Podaj zdanie : " <<endl;
 			string zdanie;
 			getline(cin, zdanie);
 			for(int i = 0; i < zdanie.length(); i++)
			 {
 				
			 }

Ale nie ma pojęcia odnosząc się do tego co podałeś w liku jak napisać to wpisywanie jeśli spacja ;/
Mógł byś mi to pokazać bo już kombinuje ładne 2 h i nie umiem ;/
jesli znak to nie spacja to dopisujesz znak do stringa
jeśli znak to spacja to utworzonego stringa wpisujesz do tablIcy

PanRiK
  • Rejestracja:ponad 7 lat
  • Ostatnio:ponad rok
  • Lokalizacja:Szczecin
  • Postów:104
1

Deklarujesz sobie stringstream:

Kopiuj
#include <sstream>
stringstream ss;

i vector

Kopiuj
#include <vector>
vector<string> splitedSentence ;

Daje Ci praktycznie rozwiązanie na tacy

Kopiuj
   cout<< "Podaj zdanie : " <<endl;
            string zdanie;
            getline(cin, zdanie);

           ss.str(zdanie);
           string word="";

    while(ss >> word)
          if (Skrt.count(word))
              splitedSentence.push_back( Skrt[word] )
         else
            splitedSentence.push_back(word);

Jeśli widzisz mój błąd to mnie popraw.
Pisanie błędnych wypowiedzi utrwala złe praktyki.
Kiedyś możesz dostać do ręki mój kod.
GR
  • Rejestracja:ponad 7 lat
  • Ostatnio:prawie 7 lat
  • Postów:17
0

Tak to powinno wyglądać ?:

Kopiuj
#include <stdio.h>
#include <iostream>
#include <string>
#include <map>
#include <conio.h>
#include <sstream>
#include <vector>



using namespace std;

int main()
{
		
    map<string, string> Skrt;
    Skrt["zw"] = "zaraz wracam";
    Skrt["jkc"] = "jak cos to";
    Skrt["ocb"] = "o co biega";
    Skrt["omg"] = "O moj Boze";
    Skrt["nrx"] = "narka";
    Skrt["jj"] = "juz jestem";
    Skrt["sql"] = "szkola";
    Skrt["pp"] = "pa pa";
    Skrt["bdp"] = "bede potem";
    Skrt["bj"] = "bede jutro";
    Skrt["kc"] = "kocham Cie";
    Skrt["kcm"] = "kocham Cie mocno";
    Skrt["jww"] = "jak wyzej";
    Skrt["nmzc"] = "nie ma za co";
    Skrt["nsns"] = "nic sie nie stalo";
    Skrt["rwp"] = "rodzic w pokoju";
    Skrt["btw"] = "przy okazji ";
    Skrt["ur"] = "Uwaga rodzice";
    Skrt["nww"] = "Nie wiem";
    Skrt["kk"] = "ok ok";
    Skrt["jctk"] = "jak cos to kom";
    Skrt["mbp"] = "moze bede pozniej";
    Skrt["np"] = "na przyklad";
    Skrt["tj"] = "to jest";
    Skrt["pt"] = "pod tytulem";
    Skrt["dz"] = "dzieki";
    Skrt["bd"] = "bede";
    Skrt["cb"] = "ciebie";
    
    vector<string> splitedSentence ;
	stringstream ss;

	cout<< "Podaj zdanie : " <<endl;
	string zdanie;
	getline(cin, zdanie);
	ss.str(zdanie);
	string word=" ";
 
    while(ss >> word)
    {
    
        if (Skrt.count(word))
        {
        
              splitedSentence.push_back( Skrt[word] );
              break;
        }
        else
            splitedSentence.push_back(word);
            
           for(int i = 0; i < splitedSentence.size(); i++)
		   {
 
					if( Skrt.count(splitedSentence[i]))
					{
						splitedSentence[i] = Skrt[splitedSentence[i]];
					
	   	   			}
	   	   			
			}
					 	
	   	 
	}
	   
		
 		

return 0;
}
PanRiK
  • Rejestracja:ponad 7 lat
  • Ostatnio:ponad rok
  • Lokalizacja:Szczecin
  • Postów:104
1

Przeczytaj sobie co robi

Kopiuj
break;

i napisz mi jeszcze jaki jest zamysł tego fora?


Jeśli widzisz mój błąd to mnie popraw.
Pisanie błędnych wypowiedzi utrwala złe praktyki.
Kiedyś możesz dostać do ręki mój kod.
GR
  • Rejestracja:ponad 7 lat
  • Ostatnio:prawie 7 lat
  • Postów:17
0

Break przerywa nam działanie petli wiec go tam nie powinno być , a z tego co zrozumiałem ta pętla sprawdza czy w danym stringu jest skrót który znajduje się w mapie i zmienia go na jego odpowiednik z mapy

PanRiK
  • Rejestracja:ponad 7 lat
  • Ostatnio:ponad rok
  • Lokalizacja:Szczecin
  • Postów:104
1
Kopiuj
    while(ss >> word)
    {
        if (Skrt.count(word))
              splitedSentence.push_back( Skrt[word] );
        else
            splitedSentence.push_back(word);
    }

    for(int i = 0; i < splitedSentence.size(); i++)
        cout << splitedSentence[i] << " ";

Przeanalizuj i powiedz mi czy rozumiesz.


Jeśli widzisz mój błąd to mnie popraw.
Pisanie błędnych wypowiedzi utrwala złe praktyki.
Kiedyś możesz dostać do ręki mój kod.
edytowany 3x, ostatnio: PanRiK
GR
  • Rejestracja:ponad 7 lat
  • Ostatnio:prawie 7 lat
  • Postów:17
0

No to w monecie gdy napotka nam word który jest spacja ma utworzyć nowa zmiana i następnie sprawdzić czy w którejś z tych zmiennych jest nasz skrót z mapy else ma po prostu zostawić ten skrót i później ma nam po kolei wypisać ge zmienne oddzielając je spacja .
O to chodzi ?

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.