warunek dopóki znak stanie sie enter

0

Witam mam taki o to kod chce wprowadzać ciąg znaków a jak nacisnę enter działanie funkcji StworzWyraz(tmp) ma się zakończyć lecz tak się nie dzieję podejrzewam że coś nie halo z tym if (znak==13) jak to inaczej można zrobić? Ewentualnie jeśli coś jeszcze robię nie tak proszę o uwagi.

#include<iostream>
using namespace std;

struct struktura //struktra ciagow znakow
{
	char wyraz;
	struktura *next;
};
struktura *pierwszy=NULL;
struct rejestry //struktura rejestrow
{
	struktura *wsk_na_wyraz;
	rejestry *nastepny;
};
rejestry *wsk_na_pierwszy=NULL;

//sprawdzenie komendy
bool porownaj(char komenda[], char polecenie[])
{
	char *wsk1, *wsk2;
	wsk1=komenda;
	wsk2=polecenie;
	while(*wsk1!=NULL || *wsk2!=NULL)
	{
		if (*wsk1==*wsk2)
		{
			wsk1++;
			wsk2++;
		}
		else
			return(false);
	}
	return(true);
}



void pokazliste(rejestry *tmp)
{
	struktura *tmp1; 
		tmp1= tmp->wsk_na_wyraz;
		while(tmp1->next != NULL)
		{
			cout<<tmp1->wyraz;
			tmp1=tmp1->next;
	}
	
}
void StworzRejestry()
{
	for(int i=0; i<26;i++)
	{
		rejestry *tmp = new rejestry;
		tmp->nastepny=wsk_na_pierwszy;
		tmp->wsk_na_wyraz=NULL; // na początku rejestr jest pusty
		wsk_na_pierwszy=tmp;
		
	}
}

rejestry* UstawRejestr(char r)
{
	rejestry *tmp=wsk_na_pierwszy;
	for(int i=0; i<r-65; i++)
		
		tmp=tmp->nastepny;

	return tmp;
}

void dodaj_znak(char znak)
{
	struktura *tmp1 = new struktura;
		tmp1->next=NULL;
		tmp1->wyraz=znak;
		struktura *wsk=pierwszy;
		if(wsk==NULL)
			pierwszy=tmp1;
		else
		{
			while(wsk->next!=NULL)
				wsk=wsk->next;
			wsk=tmp1;
		}
}
void StworzWyraz(rejestry *tmp)
{
	while(1)
	{
		char znak;
	struktura *tmp1;
	tmp1 = tmp->wsk_na_wyraz;
	cin>>znak;
	if (znak==13) //ten warunek nie działa
	{
		break;
	}
	else
		dodaj_znak(znak);
	}
}


int main()
{
char komenda[7];
char r;
rejestry *tmp;
StworzRejestry();

while(cin>>komenda)
{	
	if (porownaj(komenda, "USTAW"))
	{
		
		cin>>r;
		tmp=UstawRejestr(r);
		StworzWyraz(tmp);
		cout<<"STWORZYLEM !"<<endl;
	}
	if (porownaj(komenda, "WYPISZ")) 
	{	
		cin>>r;
		pokazliste(tmp);
	}
	
}

return (0);
}
0
        znak=cin.get();
        if (znak=='\n') //ten warunek działa, ale tylko przy odpowiednim pobieraniu znaku

1 użytkowników online, w tym zalogowanych: 0, gości: 1