PDA

View Full Version : سوال: زبان عجیب(مساله)



storm_saeed
چهارشنبه 23 آذر 1390, 16:49 عصر
سلام
یک مساله ای هست که من هر چی حل می کنم ارور میده مساله از این قراره در یک شهر افراد اگر دراسمشان کلمات صدادار انگلیسی فرد باشه پسر وگرنه دختره مثلا shadi دو تا داره aوi پس دختره حروف صدادار هم aeiou هست مشکل من اینه#include <iostream>
using namespace std;
int main(){
int n,a;
char s[10];
cin>>n;
for(int i=0;i<n;i++)
{
a=0;
for(int j=0;j<10;j++)
{
cin>>s[j];
if(s[j]=='a')
a++;
else if(s[j]=='e')
a++;
else if(s[j]=='i')
a++;
else if(s[j]=='o')
a++;
else if(s[j]=='u')
a++;
}
if(a%2==0)
cout<<"DOKHTAR"<<endl;
else
cout<<"PESAR"<<endl;
}
return 0;
}

چون s رو 10 تا گرفتم وثتی اسم رو 10 حرفی بزنم درسته ولی اگه مثلا saeed که 5 حرف داره چیزی نشون نمیده
پیشاپیش ممنون

shahmohammadi
چهارشنبه 23 آذر 1390, 17:55 عصر
وقتی 5 تا می نویسید و اینتر رو می زنید منتظر 5 حرف بعدی میشه.
به جای اینکه اینطوری بنویسید اول cin>>s رو بزنید بعد بیایید رشته رو از اول برید تا برسید به کاراکتری که مقدارش برابر'\0' باشه.
در رشته ها پایان رشته با این کاراکتر مشخص میشه. بنا بر این اگه اسم ده حرفی هم دارید تعداد کاراکتر ها رو 11 تا بگیرید.

storm_saeed
چهارشنبه 23 آذر 1390, 19:40 عصر
ممنون ولی از این راه رفتم بازم نشد لطف می کنید سورس بگید ممنون

shahmohammadi
چهارشنبه 23 آذر 1390, 20:01 عصر
فقط چند خط به برنامه اضافه کردم:
#include <iostream>
#include <conio.h>
using namespace std;
int main(){
int n;
char s[10];
cin>>n;

for(int i=0;i<n;i++)
{
cin>>s;
for(int j=0;j<10;j++)
{

if(s[j]=='a')
a++;
else if(s[j]=='e')
a++;
else if(s[j]=='i')
a++;
else if(s[j]=='o')
a++;
else if(s[j]=='u')
a++;
else if(s[j]=='\0')
break;
}
if(a%2==0)
cout<<"DOKHTAR"<<endl;
else
cout<<"PESAR"<<endl;
}

getch();
return 0;
}