PDA

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



shahram.linus
چهارشنبه 08 آذر 1391, 02:49 صبح
با سلام به همهٔ بچه‌های خوب برنامه نویس من به تازگی برنامه‌نویسی رو با پاسکال شروع کردم و یک سؤال داشتم
من برای یک برنامه، نیاز دارم که تعداد کارکتر‌های یک رشته رو در پاسکال بشمارم چطور این کار رو انجام بدهم اگه توضیح بدید که بتونم خودم الگوریتمش رو بنویسم ممنون میشم



uses

crt;
var
A,D:integer;
B:String;
E:char;
begin
Clrscr;
Read(B);
A:=0;
repeat
A:=A+1;
E:=(B[A]);
until A=6;
for D:= A downto 1 do
begin
write(B[D]);
end;
Readln;
end.


البته برنامه‌ای که من نوشتم مشکل داره من میخوام تعداد کارکتر رشته رو بدست بیارم لطفاً راهنمایی کنید

Felony
چهارشنبه 08 آذر 1391, 06:00 صبح
رشته ها در پاسکال به 0# خطم میشن ، یعنی آخر هر رشته یک کاراکتر پوچ هست که تعیین میکنه رشته تموم شد ، همون بالا با یک تغییر خیلی کوچیک میتونه کارت رو راه بنداره ، شرط اون حلقه repeat رو طوری عوض کن که حلقه تا زمانی که متغییر B حاوی مقدار 0# نشده ادامه پیدا کنه ، اون حقله for دوم هم به دردت نمیخوره .

در آخر مقدار به دست اومده از متغییر A حاوی طول رشتت + 1 هست که اون یک واحد اضافه به دلیل ماهیت حلقه های repeat هست که شرط در آخر حلقه بررسی میشه که میتونی موقع چاپ متغییر A رو یک واحد کم کنی یا به جای حلقه repeat از while استفاده کنی .

موفق باشید .

Ananas
چهارشنبه 08 آذر 1391, 11:47 صبح
البته در پاسکال برای string تابع Length هست که میتونی بدون طی کردن کل رشته ،طول رشته رو ازش بگیری و اگه خواستی عملیاتی روی رشته انجام بدی حلقه ی مشخصی رو طی کنی.

shahram.linus
پنج شنبه 09 آذر 1391, 01:16 صبح
خیلی ممنون آقای تاجیک، مشکلم با راهنمایی شما حل شد.
از شما هم ممنونم کاربر آناناس ما هنوز تو فصل پنجم هستیم و تابعی که گفتید تو فصل هشت کتاب هست و ما هنوز به اون قسمت نرسیدیم
من این برنامه رو برای سؤال: (برنامه‌ای بنویسید که یک رشته را از کاربر گرفته و سپس معکوس آن را چاپ کند برای مثال اگر ورودی PASCAL بود، برنامه LACSAP را نمایش دهد.) نوشتم خیلی ممنون میشم اگه ایرادی تو کد من میبینید بهم بگید

uses
crt;
var
A,D:integer;
B,C:String;
begin
Clrscr;
Read(B);
C:=B;
A:=0;
repeat
A:=A+1;
B:=(B[A]);
until B=#0;
A:=A-1;
for D:= A downto 1 do
begin
write(C[D]);
end;
Readln;
Readln;
end.

Ananas
پنج شنبه 09 آذر 1391, 13:04 عصر
repeat
A:=A+1;
B:=(C[A]);
until B=#0;

تو این قسمت یک B به C تبدیل شد که البته میشد اینطور بنویسید :

repeat
A:=A+1;
until B[A]=#0;