singlepost

Не работает функция ! Need help) << На главную или назад  

Всем привет) У кого есть время , помогите пожалуйста! Я написала довольно простую и понятную программу , но созданная мной функция почему то просто не включается в процессе работы программы! Кроме того, абсолютно непостижимым образом , не хочет корректно работать даже один из 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();
}

Буду очень благодарна за помощь!!

3 ответов в теме “Не работает функция ! Need help)”

  1. 1
    Vlad Ламбар ответил:

    if(N=="p1") и (padeg!="p1")

    N и padeg указатель на строку, у тебя есть перегруженый оператор сравнения?
    Если нет то "==" не будет работать для строк…Используй strcmp(str1, str2);

    P.S: Смысл проверять и выводить сообщение об ошибочном вводе если выполнение продолжится дальше по коду?
    P.Р.S: В свиче нет действия на дефолт

    P.P.P.S: Choose должна еще возвращать какое-то значение об ошибке если это не проверяется в мейне, это значение добавь в енум так как онв возвращает значение этого типа

  2. 2
    Николай Труфанов ответил:

    Сторики сравнивай функцией strcmp. В функции Choose у тебя нет возвращаемого значения по умолчанию. И я не уверен, что у тебя будет работать switch в функции Res. Дальше не смотрел, исправь хотя бы это.

  3. 3
    Юлечка Михайлова ответил:

    спасибо

Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.