Програмисты помогите новичку Pascal
Пишу программы на Turbo Pascal, Delphi.
Быстро, недорого и качественно. Хороший стиль программировния (отступы, комментарии и т.п.). Если вам нужно, могу прокомментировать каждую строчку программы (и вам не нужно будет мучиться, отвечая на вопрос преподавателя - что означает этот оператор?).
Пишите мне на al@liceum.secna.ru.
Быстро, недорого и качественно. Хороший стиль программировния (отступы, комментарии и т.п.). Если вам нужно, могу прокомментировать каждую строчку программы (и вам не нужно будет мучиться, отвечая на вопрос преподавателя - что означает этот оператор?).
Пишите мне на al@liceum.secna.ru.
Хотите решить для интереса одну задачку? Эту задачу я не смог решить на экзамене, а в последствии оказалось, что и сам преподаватель не смог решить ее! Ну кому интересно, можете посмотреть, только скажите,когда что-нибудь получится. Так вот: в Delphi без объявления глобальных переменных нужно вычислить сумму двух элементов с помощью обычной процедуры. Вот код:
procedure sum( :integer);
var :integer;
begin
c:=a+b;
end;
procedure TForm1.Button1Click (Sender: TOBject);
var a,b,c:integer;
begin
a:=10;
b:=11;
sum();
edit1.text:=inttostr(c);
end;
В скобках вы должны объявить переменные, какие надо, и если необходимо, что-то изменить. Существенных изменений не должно быть. Повторяю, без глобальных переменных! Используя только локальные переменные
procedure sum( :integer);
var :integer;
begin
c:=a+b;
end;
procedure TForm1.Button1Click (Sender: TOBject);
var a,b,c:integer;
begin
a:=10;
b:=11;
sum();
edit1.text:=inttostr(c);
end;
В скобках вы должны объявить переменные, какие надо, и если необходимо, что-то изменить. Существенных изменений не должно быть. Повторяю, без глобальных переменных! Используя только локальные переменные
Кстати, спасибо Вам всем за предоставленную мне помощь! Особенно Somewhere. Ты сумел заложить хотя бы какое-то представление о Delphi. И я все-таки смог сегодня сдать этот экзамен. Причем на 5. А все потому, что я идеально смог ему сдать задачу, которую я без твоей помощи и не сделал бы. Все в твоих программах было доступно и понятно, поэтому было бы странно сдать экзамен плохо. Спасибоsomewhere писал(а):Немного переделанная версия
че-то я не понял условие задачи... Если написать просто
procedure sum(a,b:integer;var c:integer);
никакого использования глобальных переменных не будет. Переменные a,b,c объявлены внутри процедуры Button1Click, следовательно, локальные
procedure sum(a,b:integer;var c:integer);
никакого использования глобальных переменных не будет. Переменные a,b,c объявлены внутри процедуры Button1Click, следовательно, локальные
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
А ты пробовал это реализовать? Не все так просто! Если ты напишешь прогу так как ты думаешь, ничего не получится! выведет ответ либо "0", либо очень-очень большую цифру, точно не равную правильному ответу, как в том алгоритме, это 21Хыиуду писал(а):че-то я не понял условие задачи... Если написать просто
procedure sum(a,b:integer;var c:integer);
никакого использования глобальных переменных не будет. Переменные a,b,c объявлены внутри процедуры Button1Click, следовательно, локальные
Код: Выделить всё
procedure sum(a,b:integer;var c:integer);
begin
c:=a+b;
end;
var a,b,c:integer;
begin
a:=10;
b:=11;
sum(a,b,c);
writeln(c);
end.
В Дельфи то же самое
Код: Выделить всё
procedure sum(a,b:integer;var c:integer);
begin c:=a+b; end;
procedure TForm1.Button1Click(Sender: TObject);
var a,b,c:integer;
begin
a:=10;
b:=12;
sum(a,b,c);
Button1.Caption:=inttostr(c);
end;
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
а он мне втирал, что процедуре Sum " var c:integer " надо писать не в скобках, а как локальная переменная в этой процедуреХыиуду писал(а): В Дельфи то же самоеКод: Выделить всё
procedure sum(a,b:integer;var c:integer); begin c:=a+b; end; procedure TForm1.Button1Click(Sender: TObject); var a,b,c:integer; begin a:=10; b:=12; sum(a,b,c); Button1.Caption:=inttostr(c); end;
То есть procedure sum(a,b:integer);
var c:integer;
begin
c:=a+b;
end;
procedure TForm1.Button1Click(Sender: TObject);
var a,b,c:integer;
begin
a:=10;
b:=12;
sum(a,b);
Button1.Caption:=inttostr(c);
end;
Все разъяснил, завтра я над ним поиздеваюсь
То, что он тебе объяснил, действует так:
Создаем три целых переменных (a,b,c);
в a,b записываем значения 10 и 11. с остается неинициализированной. То есть какая-то ячейка памяти, в которой до начала работы программы находился скорее всего ноль, но возможно какие-то абсолютно левые данные, относящиеся к другой программе, которая уже завершена, а следы в памяти оставила.
После этого вызывается процедура sum. Внутри нее есть переменная c - но она никак не связана с той переменной с, которая определена внутри Button1Click. То есть с точки зрения программиста она носит то же название, но с точки зрения компилятора - это две совершенно разных переменных, находящихся в разных местах памяти.
Потом выполняется с:=а+в. В переменную с, которая определена внутри процедуры sum, записывается 21.
После этого процедура sum завершается. Значение "21" остается мирно лежать там, где раньше находилась процедурная переменная. Только где она лежала, после окончания процедуры уже никто не узнает.
А теперь мы кнопке в качестве названия передаем значение переменной с - той самой, которая определена в Button1Click. Которую не изменяли с момента начала программы и в которой по прежнему лежит либо ноль, что скорее всего, либо всякий космический мусор.
Создаем три целых переменных (a,b,c);
в a,b записываем значения 10 и 11. с остается неинициализированной. То есть какая-то ячейка памяти, в которой до начала работы программы находился скорее всего ноль, но возможно какие-то абсолютно левые данные, относящиеся к другой программе, которая уже завершена, а следы в памяти оставила.
После этого вызывается процедура sum. Внутри нее есть переменная c - но она никак не связана с той переменной с, которая определена внутри Button1Click. То есть с точки зрения программиста она носит то же название, но с точки зрения компилятора - это две совершенно разных переменных, находящихся в разных местах памяти.
Потом выполняется с:=а+в. В переменную с, которая определена внутри процедуры sum, записывается 21.
После этого процедура sum завершается. Значение "21" остается мирно лежать там, где раньше находилась процедурная переменная. Только где она лежала, после окончания процедуры уже никто не узнает.
А теперь мы кнопке в качестве названия передаем значение переменной с - той самой, которая определена в Button1Click. Которую не изменяли с момента начала программы и в которой по прежнему лежит либо ноль, что скорее всего, либо всякий космический мусор.
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Ага, вот оно что! Спасибо за разъяснение!Хыиуду писал(а):То, что он тебе объяснил, действует так:
Создаем три целых переменных (a,b,c);
в a,b записываем значения 10 и 11. с остается неинициализированной. То есть какая-то ячейка памяти, в которой до начала работы программы находился скорее всего ноль, но возможно какие-то абсолютно левые данные, относящиеся к другой программе, которая уже завершена, а следы в памяти оставила.
После этого вызывается процедура sum. Внутри нее есть переменная c - но она никак не связана с той переменной с, которая определена внутри Button1Click. То есть с точки зрения программиста она носит то же название, но с точки зрения компилятора - это две совершенно разных переменных, находящихся в разных местах памяти.
Потом выполняется с:=а+в. В переменную с, которая определена внутри процедуры sum, записывается 21.
После этого процедура sum завершается. Значение "21" остается мирно лежать там, где раньше находилась процедурная переменная. Только где она лежала, после окончания процедуры уже никто не узнает.
А теперь мы кнопке в качестве названия передаем значение переменной с - той самой, которая определена в Button1Click. Которую не изменяли с момента начала программы и в которой по прежнему лежит либо ноль, что скорее всего, либо всякий космический мусор.
- Oleg_Rus
- Сообщения: 335
- Зарегистрирован: 16 окт 2006, 09:56
- Откуда: г.Улан-Удэ, респ.Бурятия, Российская Федерация
- Контактная информация:
1) второй массив
for i:=1 to n do
for j:=1 to n do
if i<j then a[i, j]:=Random(53)-17 else
if i+j>n+1 then a[i, j]:=Random(900)+100;
2) третий массив
for i:=1 to n do
for j:=1 to n do
if i+j=n+1 then a[i, j]:=5;
if i+j<n+1 then a[i, j]:=n-i;
Хотя насчет третьего не уверен, но идея примерно такая:
саму побочную диагональ забиваем 5, а последующие n-i.
Должно работать!
Если увидите какие недоработки или ошибки, прошу известить!
for i:=1 to n do
for j:=1 to n do
if i<j then a[i, j]:=Random(53)-17 else
if i+j>n+1 then a[i, j]:=Random(900)+100;
2) третий массив
for i:=1 to n do
for j:=1 to n do
if i+j=n+1 then a[i, j]:=5;
if i+j<n+1 then a[i, j]:=n-i;
Хотя насчет третьего не уверен, но идея примерно такая:
саму побочную диагональ забиваем 5, а последующие n-i.
Должно работать!
Если увидите какие недоработки или ошибки, прошу известить!
e-mail: garmayev@yandex.ru
---------------------------------------------------------------------------
<a href="http://nick-name.ru/sertificates/711965/"><img src="http://nick-name.ru/img.php?nick=Garmay ... =2&text=t5" alt="Никнейм Garmayev зарегистрирован!" /></a>
---------------------------------------------------------------------------
<a href="http://nick-name.ru/sertificates/711965/"><img src="http://nick-name.ru/img.php?nick=Garmay ... =2&text=t5" alt="Никнейм Garmayev зарегистрирован!" /></a>