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);
}