Всем привет) У кого есть время , помогите пожалуйста! Я написала довольно простую и понятную программу , но созданная мной функция почему то просто не включается в процессе работы программы! Кроме того, абсолютно непостижимым образом , не хочет корректно работать даже один из If ' ов. Вот текст задания :
Падеж=(именительный , родительный , дательный , винительный , творительный , предложный)
Слово=(степь , боль , тетрадь, дверь)
слово w
падеж p
напечатать слово w в падеже p и в единственном числе.
Язык – Borland c++
В этой программе нужно использовать как либо перечислимы тип , поэтому не ругайтесь на его ненужность )
Вот текст программы:
#include <iostream.h>
#include <conio.h>
enum padeg
{Imenit,
Rodit,
Datel,
Vinit,
Tvorit,
Predloj,
};
padeg Choose(char* N)
{
if(N=="p1")
return Imenit;
if(N=="p2")
return Rodit;
if(N=="p3")
return Datel;
if(N=="p4")
return Vinit;
if(N=="p5")
return Tvorit;
if(N=="p6")
return Predloj;
}
char* Res(padeg P)
{
switch(P)
{
case Imenit: cout<<"'"<<endl;
case Rodit: cout<<"i"<<endl;
case Datel: cout<<"i"<<endl;
case Vinit: cout<<"'"<<endl;
case Tvorit: cout<<"'u"<<endl;
case Predloj: cout<<"i"<<endl;
}
}
void main()
{
clrscr();
char* padeg;
int w;
cout<<"Viberete slovo iz spiska:\n1 – step'\n2 – bol'\n3 – tetrad'\n4 – dver'"<<endl;
cin>>w;
cout<<"vibirete padeg iz spiska: \np1 – Imenitelny \np2 – Roditelny\np3 – Datelny\np4 – Vinitelny\np5 – Tvoritelny\np6 – Predlojny"<<endl;
cin>>padeg;
if((padeg!="p1")&&(padeg!="p2")&&(padeg!="p3")&&(padeg!="p4")&&(padeg!="p5")&&(padeg!="p6"))
cout<<"Error! Vibirete padeg iz spiska"<<endl;
if (w==1) cout<<"step";
else if (w==2) cout<<"bol";
else if (w==3) cout<<"tetrad";
else if (w==4) cout<<"dver";
else cout<<"Oshibka! Viberete slovo iz spiska";
Res(Choose(padeg));
getch();
}
Буду очень благодарна за помощь!!
1 ноября 2008 в 18:04
спасибо
1 ноября 2008 в 18:02
Сторики сравнивай функцией strcmp. В функции Choose у тебя нет возвращаемого значения по умолчанию. И я не уверен, что у тебя будет работать switch в функции Res. Дальше не смотрел, исправь хотя бы это.
1 ноября 2008 в 18:01
if(N=="p1") и (padeg!="p1")
N и padeg указатель на строку, у тебя есть перегруженый оператор сравнения?
Если нет то "==" не будет работать для строк…Используй strcmp(str1, str2);
P.S: Смысл проверять и выводить сообщение об ошибочном вводе если выполнение продолжится дальше по коду?
P.Р.S: В свиче нет действия на дефолт
P.P.P.S: Choose должна еще возвращать какое-то значение об ошибке если это не проверяется в мейне, это значение добавь в енум так как онв возвращает значение этого типа