ورود

نسخه کامل مشاهده نسخه کامل : یه سوال سهل



Petros
09-02-2011, 12:00
چی میشه برای Cin زیر ارور نگرفت؟ :8:
char *name[5] ;s
cin >> name[i]; s

i هم که شمارنده حلقمونه. ارور Fatal و ... میده. چرا؟

shab67
09-02-2011, 14:01
اول باید i رو تعریف کنید.بعد توی یک حلقه ی for بذارید.
اگر متن ارور و پی کد رو بذارید بهتر میشه کمک کرد.

Petros
09-02-2011, 18:03
دوست عزیز دیگه واسه اینکه تاپیک طولانی نشه گفتم i حلقمونه. در ضمن کاراکترها از input خونده میشن و نه Output

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

ارور Access violation میده تو Borland C++ 5.02
و توی 4.5 ارور Exception

sin2x=2sinxcosx
09-02-2011, 22:31
خب اینجا چرا دیگه * گذاشتین ؟

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

اینو حذف کنین حله .

Petros
10-02-2011, 10:44
این آرایه ای از اشاره گر هاست. این طوریه حافظه فقط به اندازه طول رشته از سیستم عامل گرفته میشه و نه به اندازه یه آرایه 2 بعدی که ممکنه تعدادی از خونه های حافظه خالی بمونن. حتما میدونید!!؟

میشه اینطوریه مقدار اولیه داد بهشون ولی میخوام با Cin ردیفش کرد.


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

یا یک آرایه ی 2 بعدی درست کنی مقادیرش رو به آرایه ای از اشاره گرها اختصاص بدی.
مثلا توی یه حلقه مقادیر آرایه 2 بعدی رو که گرفتی بگی list[i]= myArray[i] s که اینطوری بدجوری حافظه به فنا میره.

sin2x=2sinxcosx
10-02-2011, 12:33
اٌه مای گاد ...
فک کردم یه استرینگ می خواین بگیرین .
آخه اینجوری نمیشه که . وقتی تو این حالت از یه اشاره گر استفاده می کنین یه آرایه بدون نام تو حافظه read-only ایجاد میشه و چنین آرایه ای رو نمیشه تغییر داد که سی این کردن به معنی همون تغییر دادنه .

shab67
10-02-2011, 13:58
من فکر کردم قراره از طریق کیبورد دیتا وارد بشه و بهمین دلیل از cinاستفاده کردید.خب اینطوری که مشکل داره عزیز.معلومه ارور میگیره.

Petros
10-02-2011, 21:03
ولی اگه Read-Only بود نمیشد اینطوری بهش مقدار داد. این Code منه.

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

اینجا چه خبره؟

shab67
10-02-2011, 21:58
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
مشکل اینجاست.پسر خوب تو داری اینیشیالیزیشن می کنی؟چی کار می کنی؟این آرایه باید از یجایی بخونه.شما دستور cin رو دادی.اما...
چی چه خبره مهندس؟

Petros
10-02-2011, 23:09
منظورم از چه خبره همون داخل Code.

اینیشالایز تا اونجایی که من میدونم یعنی هر زمان مثلا گفتی int a سریع بعدش مساوی بذاری و مقدار بهش بدی.

اما کاری که من کردم مقداردهی پس از تعریفه؛ که با Cin مشکل داره؛ ولی با کپی از آرایه مشکلی نداره. ابهام من اینجاست.

---------- Post added at 11:09 PM ---------- Previous post was at 11:07 PM ----------

در ضمن من دارم با Cin توی آرایه می نویسم. مشکلش کجاست؟

shab67
11-02-2011, 17:06
تابحال جایی ندیدم که با cinمقداردهی کنن احتمالا امکانش هست.
این دستور مقادیر رو می خونه.درست؟این مقادیر باید از کجا خونده بشن؟درست.شما میگید می خواید تو آرایه بنویسید.اما چی رو می خواید بنویسید و این مقادیر باید از کجا خونده بشن؟و اینکه چطور یک آرایه یک بعدی می تونه تو انتساب با یک آرایه دوبعدی شرکت کنه؟من کد شما رو توی توربو ران کردم.اروری نداد.اما خب.نتیچه ای هم نداشت.

Desperate
11-02-2011, 17:09
میخوای ارایه دوبعدی رو به صورت یه بعدی مقدار دهی کنی . مگه میشه.

Petros
11-02-2011, 17:18
شما برنامه رو اجرا کنید -> ورودی به برنامه بدید-> میبینید که مقادیر آرایه 2 بعدی رشته ای در داخل لیست قرار میگیره و چاپشون هم میکنه.

در ضمن همونطور که میدونید آرایه 2 بعدی رشته ای، محل 0اش به رشته اول اشاره میکنه و با دو اندیس مثل myString[0][2] s به کاراکتر اشاره میکنه پس مشکلی نیست که آرایه دو بعدی رو با یک اندیس به چیزی نسبت داد. (البته از نوع رشته ای)

sin2x=2sinxcosx
11-02-2011, 19:59
ولی اگه Read-Only بود نمیشد اینطوری بهش مقدار داد. این Code منه.

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

چرا تو انتساب هم ارور میده .
شما اینجا دارین کل یه پوینتر رو به یکی دیگه انتساب میدین که اینجا آدرس ها کپی میشه و برا همین مقادیر هم یکی میشن . در واقع مقادیر داخل اینا اینجا کپی نمی شن . آدرسها کپی میشن .
ولی تو cin که یک جا نمی گیره و کاراکتر به کاراکتر میزنه ارور داده میشه . چون می خواد محتویاتو عوض کنه .
شما هم اگه بخواین کاراکتر به کاراکتر پوینتر رو کپی کنین باز Access Violation می گیرین .
هیچ خبر خاصی نیس .

Petros
11-02-2011, 20:19
sin2x=2sinxcosx تکنیک زدی در حد فراقاره!

پس نتیجه این شد که *list مثل یه اشاره گر معمولی آدرس ها رو نگه میداره و به خونه های myString اشاره میکنه.

shab67
11-02-2011, 23:32
خدا رو شکر که بالاخره مشکلتون رفع شد.اما برنامتون رو ران کردم و ورودی هم نخواست.

sin2x=2sinxcosx
12-02-2011, 09:50
sin2x=2sinxcosx تکنیک زدی در حد فراقاره!

پس نتیجه این شد که *list مثل یه اشاره گر معمولی آدرس ها رو نگه میداره و به خونه های myString اشاره میکنه.

بله در واقع اینجا list پنج تا پوینتر می باشد که 5 آدرس رو نگه می داره .

MosaferJade
05-03-2011, 17:00
واقعا چه بحث نفس گیری