رد: تحدى نفسك بهذه المصفوفة !
اقتباس:
المشاركة الأصلية كتبت بواسطة CQC
السلاك عليكم
الكود بالكومبايلر تيربو باسكال .. أو بورلند ديلفي بكلاهما يمشى الحال
وإذا تبي الكود بالكومبايلر بيرسونال كوبول انا حاضر
لا أعتقد أن ما هو مكتوب أعلاه يمكن تشغيله لا بالـ Turbo Pascal و لا بالـ Pascal Object الخاص بالدلفي ....
1 - الـ end الموجودة في الأسطر 11 و 14 و 18 لا يقابلها أي begin
2 - الـ while الموجودة في السطر 7 تحتاج لـ begin
هذا من جهة الـ Syntax و غير ذلك كثير .
وحتى لو تم إصلاح هذه الأخطاء فإن نتيجة تنفيذ البرنامج هي شاشة فارغة لأن الشرط
لا يتحقق أبدا لذا لا يمكن تنفيذ الـ Block الموجود بداخله.
إذا أردت مصدر جيد لمثلث باسكال بالـ Turbo Pascal راجع رابط الصفحة الفرنسية للـ Wikipédia المذكور أعلاه
رد: تحدى نفسك بهذه المصفوفة !
اقتباس:
program loops;
Var
major, minor, x : integer;
begin
major := 0;
minor := 4;
while major <= 5 do
begin
write ('1');
for x:= 1 to major -1 do
write ( major );
if major >= 1 then
write ('1');
while minor >= major Do
begin
write ('.');
minor := minor - 1;
end;
writeln;
major := major + 1;
minor := 4;
end;
end.
ابو هاجر الله يجزاك خير .. على التصحيح والله افدتني صراحتاً وهذا تعديل البرنامج
والله ياخي نسيت شلون اكود بالباسكال او الدلفي .. عزالله البرمجه يبيلها استمراريه ومواظبة
بس ماشاءالله عليك احس انك استاذ ياخي ؟ ... على العموم اشكرك على ردك الجميل
رد: تحدى نفسك بهذه المصفوفة !
اقتباس:
المشاركة الأصلية كتبت بواسطة CQC
ابو هاجر الله يجزاك خير .. على التصحيح والله افدتني صراحتاً وهذا تعديل البرنامج
والله ياخي نسيت شلون اكود بالباسكال او الدلفي .. عزالله البرمجه يبيلها استمراريه ومواظبة
بس ماشاءالله عليك احس انك استاذ ياخي ؟ ... على العموم اشكرك على ردك الجميل
العفو أخي الكريم هذا من كرمك.............و الفضل لك أنك ذكرتنا بالباسكال (-: و الذي يكاد القسم يخلو من أي مواضيع متعلقة به أو ربما لا توجد أصلا.
رد: تحدى نفسك بهذه المصفوفة !
حدث خطأ عند محاولة مناقشة الكود لكن تم تداركه. سأقوم بإعادة تجربة البرنامج و أعود
رد: تحدى نفسك بهذه المصفوفة !
تم تنفيذ البرنامج على Turbo Pascal For Windows 1.5 بعد إضافة السطر
من أجل عرض المخرجات فقط ليصبح المصدر كما يلي
كود:
program loops;
uses wincrt;
Var
major, minor, x : integer;
begin
major := 0;
minor := 4;
while major <= 5 do
begin
write ('1');
for x:= 1 to major -1 do
write ( major );
if major >= 1 then
write ('1');
while minor >= major Do
begin
write ('.');
minor := minor - 1;
end;
writeln;
major := major + 1;
minor := 4;
end;
end.
و كانت المخرجات كما يلي
1.....
11....
121...
1331..
14441.
155551
لكن المخرجات المطلوبة هي
1....
11...
121..
1331.
14641
و هما مختلفان كما هو ملاحظ .
فيما يلي بعض أكواد حساب مثلث باسكال
1 - بالبيسك(المصدر معدل عن مثال بالـ GW-BASIC من كتاب الدكتور لخضر لعلام جامعة الجزائر)
كود:
Option Explicit
Option Base 1
Private Sub Calculate()
Dim n As Integer, i As Integer, j As Integer
n = InputBox("enter the number of coefficients")
ReDim A(n, n) As Integer
For i = 1 To n
For j = 1 To i
If i = j Or j = 1 Then GoTo A
A(i, j) = A(i - 1, j) + A(i - 1, j - 1)
GoTo B
A:
A(i, j) = 1
B:
Print A(i, j);
Next j
Print
Next i
End Sub
Private Sub Form_Load()
Me.AutoRedraw = True
Calculate
End Sub
بالتربو باسكال(المصدر سبق ذكره)
كود:
program triangle_pascal;
uses wincrt;
type Matrice=array[1..20,1..20]of integer;
var
n:integer;
m:Matrice;
procedure remplir(n:integer;var M:Matrice);
var
i,j:integer;
begin
M[1,1]:=1;
for i:=2 to n do
begin
M[i,1]:=1;
M[i,i]:=1;
for j:=2 to i-1 do
M[i,j]:=M[i-1,j-1]+M[i-1,j];
end;
end;
procedure affi(n:integer;M:Matrice);
var
i,j:integer;
begin
For i:=1 to n do
Begin
For j:=1 to i do
write(M[i,j]:5);
writeln;
End ;
end;
begin
n:=8;
writeln('*********** Triangle de Pascal ***********');
writeln;
writeln;
remplir(n,m);
affi(n,m);
end.
بالـ C++ (المصدر سبق ذكره)
كود:
#include <iostream>
#include <vector>
using namespace std;
typedef vector< vector<int> > Matrice;
Matrice creerTableauPascal(int n)
{
// Création du tableau
Matrice tableau;
tableau.resize(n);
for (int i=0; i<n; ++i)
tableau[i].resize(i+1);
// Remplissage du tableau
tableau[0][0]=1;
for (int i=1; i<n; i++)
{
tableau[i][0]=1;
tableau[i][i]=1;
for (int j=1; j<i; ++j)
tableau[i][j]=tableau[i-1][j-1]+tableau[i-1][j];
}
return tableau;
}
void afficherTriangle(Matrice tableau)
{
int n = tableau.size();
for (int i=0; i<n; ++i)
{
for (int j=0; j<=i; ++j)
cout << tableau[i][j] << " ";
cout << endl;
}
}
int main()
{
int n=10;
Matrice tableau;
tableau = creerTableauPascal(n);
afficherTriangle(tableau);
return 0;
}
رد: تحدى نفسك بهذه المصفوفة !
كنت حاسس يـ أبو هاجر أن مخرجات برنامج أخونا مهي المطلوبه
بس خلفيتي C و VB6 فقلت ما أبي أتكلم
أخوي CQC
لا تشوف الحلول الي في الصفحة الثانيه
حاول تسوي البرنامج مرة ثانيه زي كذا
http://upload.wikimedia.org/wikipedi...eAnimated2.gif
<<< هذي جبتها من الرابط الي وضعه أبو هاجر يعطيه العافيه ^_^
رد: تحدى نفسك بهذه المصفوفة !
الصورة تختصر كل شيء.................
أنا مررت عليها أكثر من مرة....................و لكن عندما رأيتها هنا خطر لي أن أجعلها صورة ملفي الشخصي و هذا ما كنت محتاجا له ... (-:
إذا كان هناك خوارزميات جميلة و بسيطة مثل هذا المثلث فالرجاء إضافتها ........... فربما تفتح باب النقاش و تنشط القسم.....................و أحسن من ذلك تذكرنا بأيام الدراسة........................................................