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 عصر
درست صحبت کن!
همینی که میبینی بهترین راهه برای تشخیص تعداد اعداد!
من فقط خواستم کمک کنم .:افسرده: ادبیات من اینجوریه دیگه .. چیکار کنم .
در مورد بهترین روش برای پیدا کردن اعداد هم باید عرض کنم که حرف شما درسته ولی بهترین روش برای پیدا کردن اعداد به احتمال زیاد بهترین روش برای کلمات نیست .
ضمنا اینکه دوست عزیزمون یه تابع بنویسه و با تابع این کارو انجام بده خیلی اصولی تره تا اینکه یه حلقه بزاره و توی حلقه و بدنه اصلی برنامه تمام کارا انجام بشه . این اشتباهی بود که من قبلا انجام میدادم . برای همین کلی از طرحام به نتیجه نرسید . تازه مجبور شدم کلی روی خودم کار کنم تا اونجوری کد نوشتن از سرم بپره ...
دوستانه پیشنهاد دادم . امیدوارم که موفق باشید .
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.