PDA

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



mr-adler
دوشنبه 21 آذر 1390, 14:14 عصر
سلام خدمت همگی
من پروژه زیر رو با پاسکال نوشتم اما حاوی اشکال های زیادی است که از علامت سیمیکالن نشات میگیرد.
اگه مقدوره اشکالاتش رو بگید تا اصلاحش کنم.من با سینتکساین زبان اشنایی کامل ندارم و مسلط نیستم اما کد های زیر رو خودم نوشتم:

var
sum:array[1..9]of integer;
sumall:array[1..9]of integer;
a:array[1..10]of integer;
i,j:byte;
begin
writeln('enter your card number');
for i:=1 to 10 do
read(a[i]);
writeln(' ');
writeln('press any key to calculate');
readln;
for j:=1 to 9 do
begin
sum[i]:=a[i]*i;
sumall:=sumall+sum[i];
end;
if sumall mod 11:=a[10] then
write('ok number is right');
else
write('wrong number');
end.

firststep
دوشنبه 21 آذر 1390, 14:39 عصر
سلام


for j:=1 to 9 do
begin
sum[i]:=a[i]*i;
sumall:=sumall+sum[i];
end;



در این for تمامیم i هاتون به تماماً باید تبدیل بشه

شناسه sumall از نوع ازایه هست تعریف کردین در صورتی که شما با ان مثل یک متغیر برخرود کرده اید
پس sumall باید به این شکل تعریف شود ;sumall:integer
if sumall mod 11:=a[10] then
در درجلوی if باید یک عیارت منطقی وارد شود در صورتی که شما به صورت انتصاب این عبارت را نوشته اید
پس باید یه شکل
if (sumall mod 11=a[10]) then
نوشته شود
در کل" := "برای انتصاب استفاده می شود

خط قبل از esle نیز نباید ; داشته باشد
پس این خط قبل از esle :
write('ok number is right')
به این شکل نوشته می شود


موفق و سربلند باشید

mr-adler
سه شنبه 22 آذر 1390, 02:38 صبح
خیلی خیلی ممنونم بابت زحمتتون

در این for تمامیم i هاتون به تماماً باید تبدیل بشه
واقعا در این مورد اصلا حواسم نبود....

شناسه sumall از نوع ازایه هست تعریف کردین در صورتی که شما با ان مثل یک متغیر برخرود کرده اید
همین طور این مورد هم سهوی بود:خجالت:
خیلی عالی بود در کل به اطلاعاتمون خیلی اضافه شد...:قلب:
من کد رو به شکل زیر تغییر دادم:

var
sum:array[1..9]of integer;
sumall:integer;
a:array[1..10]of integer;
i,j:byte;
begin
writeln('enter your card number');
for i:=1 to 10 do
begin
read(a[i]);
if (i=10) then
begin
writeln('press any key to calculate');
readln;
for j:=1 to 9 do
begin
sum[j]:=a[j]*j;
sumall:=sumall+sum[j];
end;
if (sumall mod 11=a[10]) then
write('ok number is right')
else
write('wrong number');
end;
end;
end.

اما بازم یه مشکلی دارم. این کد قرار 10 تا عدد رو از کاربر بگیره و به محض اینکه تعداد اعداد شد 10 محاسبات را روی اعداد انجام بده اما متاسفانه اینکارو نمیکنه. یعنی وقتی دهمین عدد رو گرف بازم یازدهمین عدد رو هم میگیره.واقعا نمیدونم دیگه کجاش اشکال داره:متعجب:

mr-adler
چهارشنبه 23 آذر 1390, 14:06 عصر
اما بازم یه مشکلی دارم. این کد قرار 10 تا عدد رو از کاربر بگیره و به محض اینکه تعداد اعداد شد 10 محاسبات را روی اعداد انجام بده اما متاسفانه اینکارو نمیکنه. یعنی وقتی دهمین عدد رو گرف بازم یازدهمین عدد رو هم میگیره.واقعا نمیدونم دیگه کجاش اشکال داره:متعجب:
اقا متوجه شدم بعد از وارد کردن هر عدد باید اینتر بزنی:خجالت:
اولین تجربمون تو داس بود:بامزه:

ممنونم به خاطر بر طرف کردن مشکلات برنامه من :قلب: