PDA

View Full Version : سوال: پیمایش رشته و شمارش کلمات و کاراکترهای آن



ArmanSo
چهارشنبه 18 آذر 1388, 11:29 صبح
سلام استادمون اين برنامه رو گفت نوشتم اما كار نمي كنه چرا ؟
روي سوال : برنامه اي بنويسيد كه جمله را كه به enter ختم مي شود گرفته تعداد كلمات تعداد كاركتر ها و تعداد ارقام به كار گرفته شده در جمله را شمارش كند
اينم كدش وقتي اجرا ميشه بيشتر از يه كاركتر نمي گيره !!‌:اشتباه:

#include <stdio.h>
#include <conio.h>
int main()
{
char ch;
int charcnt, wordcnt, digicnt;
ch=getche();
while(ch='/r')
{
charcnt++;
if(ch==' ')
wordcnt++;
if((ch>='0')&&(ch<='9'))
digicnt++;
ch=getch();
}
printf("Yor digi is %c",digicnt);
}

يه سوال ديگه اگه بخوام تعداد اعداد رو هم بگه بايد چي كار كنم ؟ مر30 :بوس::لبخند::لبخندساده::قلب:

ArmanSo
چهارشنبه 18 آذر 1388, 11:43 صبح
سلام استادمون اين برنامه رو گفت نوشتم اما كار نمي كنه چرا ؟
روي سوال : برنامه اي بنويسيد كه جمله را كه به enter ختم مي شود گرفته تعداد كلمات تعداد كاركتر ها و تعداد ارقام به كار گرفته شده در جمله را شمارش كند
اينم كدش وقتي اجرا ميشه بيشتر از يه كاركتر نمي گيره !!‌:اشتباه:

#include <stdio.h>
#include <conio.h>
int main()
{
char ch;
int charcnt, wordcnt, digicnt;
ch=getche();
while(ch='/r')
{
charcnt++;
if(ch==' ')
wordcnt++;
if((ch>='0')&&(ch<='9'))
digicnt++;
ch=getch();
}
printf("Yor digi is %c",digicnt);
}

يه سوال ديگه اگه بخوام تعداد اعداد رو هم بگه بايد چي كار كنم ؟ مر30 :بوس::لبخند::لبخندساده::قلب:

فهميدم مشكل كجاست
توWhile بايد ميزاشتم getche !! :خجالت:
اما enter كه ميزنم پرينت نميكنه !!!
اگه ميشه قسمت دوم رو بگييد مر30 :قلب:
الان كد ابنجوري شده

#include <stdio.h>
#include <conio.h>
int main()
{
char ch;
int charcnt, wordcnt, digicnt;
ch=getche();
while(ch='\r')
{
charcnt++;
if(ch==' ')
wordcnt++;
if((ch>='0')&&(ch<='9'))
digicnt++;
ch=getche();
}
printf("Yor digi is %d",digicnt);
}

ArmanSo
چهارشنبه 18 آذر 1388, 13:00 عصر
اقا اين قسمته اولشو درست كردم !!!

#include <stdio.h>
#include <conio.h>
int main()
{
char ch;
int charcnt=0, wordcnt=0, digicnt=0;
while((ch=getche())!='\r'){
charcnt++;
if(ch==' ')
wordcnt++;
if((ch>='0')&&(ch<='9'))
digicnt++;
}

printf("\nNumber:%d,\nWord:%d,\nCharacter:%d",digicnt,wordcnt,charcnt);
getch();
return 0;
}


اما قسمت دوم نتونستم

mortezamsp
چهارشنبه 18 آذر 1388, 13:09 عصر
char ch,ch2=0;
while( (ch=getch()) != '\r' )
{
charcount++;
if(ch>='0' && ch<='9')
digitcount++;
if(ch==' ' && isalphabet(ch2)==1 )
wordcount++;
ch2=ch;
}

اگر كاراكتر فاصله وارد شده باشد،بايد اول ببيند كه كاراكتر قبلي يك حرف بوده يا نه.اگر حرف بود،آنوقت تعداد كلمه ها را زياد كند.چون ممكن است يك عدد بيايد و بعدش يك فاصله.

تابع betisalpha() را خودتان پياده كنيد ديگه!

ArmanSo
چهارشنبه 18 آذر 1388, 16:20 عصر
char ch,ch2=0;
while( (ch=getch()) != '\r' )
{
charcount++;
if(ch>='0' && ch<='9')
digitcount++;
if(ch==' ' && isalphabet(ch2)==1 )
wordcount++;
ch2=ch;
}

اگر كاراكتر فاصله وارد شده باشد،بايد اول ببيند كه كاراكتر قبلي يك حرف بوده يا نه.اگر حرف بود،آنوقت تعداد كلمه ها را زياد كند.چون ممكن است يك عدد بيايد و بعدش يك فاصله.

تابع betisalpha() را خودتان پياده كنيد ديگه!
فكر كنم بد گفتم !!!:لبخند:
مثلا من اينو وارد مي كنم
Arman1370 so 22
الان بايد بگه
3 تا كلمه
6 رقم
15 كاركتر
2 تا هم عدد كه اون 2تا رقم 22و1370 هست !!!
من 3تا اولي يارو بدست اوردم اما اخري رو نتونستم هنوز !! :لبخندساده:

mortezamsp
چهارشنبه 18 آذر 1388, 22:52 عصر
#include<string.h>
#include<stdio.h>
#include<iostream.h>
#include<conio.h>

int main()
{
int dijitcount=0,numbercount=0,charcount=0,wordcount=0 ;
int i;
char string[100];

gets(string);

charcount=strlen(string);

for(i=0;i<strlen(string);i++)
{
if( string[i]>='0' && string[i]<='9' )
dijitcount++;
if( string [i]==' ')
wordcount++;
}
wordcount++;

for(i=0;i<strlen(string);i++)
{
if( string[i]>='0' && string[i]<='9' )
{
numbercount++;
while( string[i]>='0' && string[i]<='9' && i<strlen(string) )
i++;
}
}

cout<<"\n\nwords: "<<wordcount<<"\nchars: "<<charcount
<<"\nnumbers: "<<numbercount<<"\ndijits: "<<dijitcount;

getch();
return 0 ;

}

shask00l
پنج شنبه 19 آذر 1388, 02:17 صبح
خوب مگه آزار داری :بامزه: تک تک خوندن کاراکتر ها هیچ فایده ای نداره . کارتم سخت تر میکنه ... کل رشته رو یهو بگیر بعد روش پردازش کن ببین توش چه خبره .

mortezamsp
پنج شنبه 19 آذر 1388, 11:07 صبح
درست صحبت کن!

همینی که میبینی بهترین راهه برای تشخیص تعداد اعداد!

ArmanSo
پنج شنبه 19 آذر 1388, 16:23 عصر
مر 30 :قلب:

ArmanSo
پنج شنبه 19 آذر 1388, 16:24 عصر
خوب مگه آزار داری :بامزه: تک تک خوندن کاراکتر ها هیچ فایده ای نداره . کارتم سخت تر میکنه ... کل رشته رو یهو بگیر بعد روش پردازش کن ببین توش چه خبره .

اخه اينيي كه مي گيو نخوندم هنوز !!:لبخند:

shask00l
جمعه 20 آذر 1388, 15:27 عصر
درست صحبت کن!

همینی که میبینی بهترین راهه برای تشخیص تعداد اعداد!

من فقط خواستم کمک کنم .:افسرده: ادبیات من اینجوریه دیگه .. چیکار کنم .

در مورد بهترین روش برای پیدا کردن اعداد هم باید عرض کنم که حرف شما درسته ولی بهترین روش برای پیدا کردن اعداد به احتمال زیاد بهترین روش برای کلمات نیست .

ضمنا اینکه دوست عزیزمون یه تابع بنویسه و با تابع این کارو انجام بده خیلی اصولی تره تا اینکه یه حلقه بزاره و توی حلقه و بدنه اصلی برنامه تمام کارا انجام بشه . این اشتباهی بود که من قبلا انجام میدادم . برای همین کلی از طرحام به نتیجه نرسید . تازه مجبور شدم کلی روی خودم کار کنم تا اونجوری کد نوشتن از سرم بپره ...

دوستانه پیشنهاد دادم . امیدوارم که موفق باشید .