PDA

نسخه کامل مشاهده نسخه کامل : كمك فوري براي نوشتن يك برنامه به زبان ++c



kianoush_353
24-04-2007, 10:46
سلام به همه عزيزان
بعنوان پروژه پايان ترم از ما خواسته شده كه دو برنامه به زبان سي ++ بنويسيم خواهشمندم منو راهنمايي كنين

1- برنامه اي كه يك رشته مثل "123" رو بگيره و اونو تبديل به عدد كنه ؟

2- برنامه اي كه وقتي بعنوان ورودي one رو زديم عبارت 1 رو در خروجي بياره ( توضيح اينكه اين دستور تابع داره )

در ضمن اگه ممكنه لينك دانلود برنامه ++c را برام بگذاريد . اينجا برنامه ++devc هستش ولي من خود برنامه رو ميخوام
ممنون و متشكرم
كيانوش

someone
24-04-2007, 17:43
سلام.دوست عزیز درخواست پروژه ممنوع هست. پروژه های خودتون رو باید خودتون بنویسین.شما شروع کنین به نوشتن برنامه ها و اگه به مشکل برخوردین اطلاع بدین.
اما در مورد برنامه ها :چند نمونه ی خیلی ساده براتون میذارم که میتونین الگوریتمش رو در بیارین.

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

اما در مورد دوم میتونین از switch-case استفاده کنین.

kianoush_353
25-04-2007, 10:36
سلام دوست عزیزم
ممنون بخاطر راهنمایی اما استاد ما در مورد دوم گفت که باید از یک تابع استفاده کنیم . چون هر عددی رو به انگلیسی بصورت حروف وارد کردیم برنامه باید اونو بصورت عددی نشون بده .
در ضمن ممنون میشم لینک دانلود ++c رو هم بزارید . یه سوال دیگه اینکه این رشته عددی میتونه n حرفی هم باشه ؟
متشکرم:10:

hamidreza_buddy
25-04-2007, 15:52
خوب switch-case رو بذار توی تایع.

نه. چون می خواهیم توی یک int بریزیم باید عدد کوچکتر از یه مقداری باشه (در ویندوز که 32 بیتی هست حدود 20 میلیارد و در داس که 16 بیتی است حدود 20 هزار)

kianoush_353
25-04-2007, 16:09
# include <iostream.h>
# include <conio.h>
Int Main ( )
{
Int n , I ;
Char str [ ]
// - - - - - - - - - - - -
For ( I = 0 ; I < 20 ; I + + )
N = str [ I ] – 48
// - - - - - - - - - - - -
Cout << n [ I ] << endl ;
}
این برنامه درسته برا اولی ؟
و برا دومی من swich - case رو برا کدوم تابع استفاده کنم میشه بیشتر توضیح بدین ؟ خواهشا
ممنون

someone
25-04-2007, 18:58
کدتون درسته به شرطی که تمام ورودی ها عدد باشن (ازنوع رشته)
میتونین ورودی تون رو با استفاده از isdigit که در ctype.h قرار داره چک کنین.

اما در مورد دوم اگه نمیخواین از switch-case استفاده کنین از نمونه ی زیر استفاده کنین.
البته باید خودتون تکمیلش کنین.

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

kianoush_353
26-04-2007, 08:22
باز همه ممنون بخاطر راهنمايي تون
اما ميشه توضيح بديد return 1 و return -1 چه كار انجام ميده . و اينكه اون تابعي كه تو قسمت يك معرفي كرديد isdigit چطوري ارقام رو چك ميكنه ؟
ممنون
:20:

_H2_
26-04-2007, 16:42
باز همه ممنون بخاطر راهنمايي تون
اما ميشه توضيح بديد return 1 و return -1 چه كار انجام ميده . و اينكه اون تابعي كه تو قسمت يك معرفي كرديد isdigit چطوري ارقام رو چك ميكنه ؟
ممنون
:20:

سلام
دستور return مقدار مورد نظر را به محل فراخانی باز میگرداند، منظور کاربر someone آن بود که اگر در برنامه ONE وارد شد، تابع RetNum مقدار 1 به محل فراخانی باز گرداند و در غیر این صورت مقدار 1- را پس دهد.

تابع isdigit همانطور که گفته شد در سرفایل ctype.h تعریف شده و تک کاراکتری را از شما میگیرد و مشخص میکند که کاراکتر عددی است یا نه، از این تابع میتوانید برای تشخیص صحت ورودی استفاده کنید.

Cris_Y
26-04-2007, 18:05
fekr konam dorost motevajeh nashodam
vaghti migim"strNum[i]='\0'; "chi mishe?

_H2_
28-04-2007, 14:35
سلام
رشته های C به کاراکتر اسکی صفر ختم میشوند و چون کاراکتر صفر اسکی قابل نوشتن نیست، از اسلش-صفر استفاده میکنیم که نماد کاراکتر صفر است.

و میتوان با مقایسه کاراکتر ها با این مقدار خاص، انتهای متن را بدست آورد و یا برعکش میتوان با ریختن این کاراکتر در هر محلی از متن، انتهای متن را تغییر یا مشخص کرد، چون دیگر توابع هم مقدار اسکی صفر را به عنوان پایان در نظر میگیرند.


کاربر someone در اصل در یک حلقه کل تک تک کاراکتر را به حرف بزرگ تبدیل کرده اند و در رشته جدید strNum ریخته اند و در آخر و پس از تبدیل کلیه حروف به بزرگ مقدار صفر اسکلی را در انتهای رشته ریخته اند تا پایان متن مشخص شود و برای بعد مشکلی پیش نیاید. (مثلاَ خود cout تک تک کاراکترهای یک اشاره گر را تا رسیدن به صفر اسکی چاپ میکند.)

Cris_Y
28-04-2007, 15:44
khob age inkaro nakonim che moshkeli momkene pish biad?

hamidreza_buddy
28-04-2007, 15:57
این کار برای مشخص کردن انتهای رشته است.
ولی در اینجا پایان رشته مشخص است و نیازی به استفاده از اون نیست.
چون strlen با استفاده از همین نشانۀ پایان زشته طول رشته را محاسبه می کند.
و می بینیم که چند دستور بالاتر از آن استفاده شده. پس فرض ما این بوده که رشتۀ ارسالی باید انتهایش خودش مشخص باشد. پس اون دستور در قطعه کدی که someone عزیز نوشته اضافی است.

Cris_Y
28-04-2007, 16:21
merci
hamin baram ajib bood

_H2_
29-04-2007, 09:48
سلام
دوست عزیز، کاربر hamidreza_buddy ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]) ، من هم اول با عجله کدها را دیدم و دچار اشتباه شما شدم! اگر به کدها دقت بیشتری کنید متوجه میشوید که کاربر someone ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]) رشته را بزرگ کرده ولی در همان محل قبلی نریخته است و آن را در تک تک کاراکترها را به متغییر جدیدی انتقال داده اند (خواسته اند ورودی تغییر نکند) در نتیجه تایین انتهای رشته لازم بوده.

البته باز هم میگوییم که من هم سرسری کد را دیدم و داشتم جوابی مثل جواب کاربر hamidreza_buddy ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]) تایپ میکردم.

hamidreza_buddy
29-04-2007, 20:28
سلام
دوست عزیز، کاربر hamidreza_buddy ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]) ، من هم اول با عجله کدها را دیدم و دچار اشتباه شما شدم! اگر به کدها دقت بیشتری کنید متوجه میشوید که کاربر someone ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]) رشته را بزرگ کرده ولی در همان محل قبلی نریخته است و آن را در تک تک کاراکترها را به متغییر جدیدی انتقال داده اند (خواسته اند ورودی تغییر نکند) در نتیجه تایین انتهای رشته لازم بوده.

البته باز هم میگوییم که من هم سرسری کد را دیدم و داشتم جوابی مثل جواب کاربر hamidreza_buddy ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]) تایپ میکردم.

راست میگی
اصلاً حواسم نبود. فک کردم داره میریزه توی خود آرایه.

kianoush_353
02-05-2007, 08:25
با سلام به همه دوستان:10:
من يه تابع پيدا كردم كه باهاش ميشه ورودي هاي int رو به string و يه تابع كه برعكس اين كارو انجام ميده اينم برنامه هست : شما لطفاٌ چك كنين ببينين درسته ؟


#include <iostream.h>
#include <stdlib.h>
#include <conio.h>
int Min ()
{
int n ;
string s[20] ;
clrscr () ;
cout << " enter an integer 2 convert " ;
cin >> n ;
itoa ( n , s , 10 ) ;
cout << " the integer is : << n ;
cout << " the string is " << s '
getch () '
return 0 ;
}

_H2_
03-05-2007, 09:53
سلام
درست است تابع itoa برای تبدیل int به string است و معکوس آن هم atoi است که string را به int تبدیل میکند.
کد شما هم به نظر درست می آید.