Начинаю серьёзно учить Паскаль и вот решил создать и пихать сюда все неясности, если вы конечно не противПервые вопросы:- Как в Паскале менять цвета?
- Как --//-- создать таблицу и что-нить в ней написать.
- И может кто-нить меня раздуплит в массивах? ;D
В модуле crt есть процедуры, которые тебе нужны. Вот формат процедуры : TextColor (a); где а - номер цвета.
Ну цвета в Паскалу менять такой процедуркой:
TextColor(color);- в текстовом режиме;
SetColor(color);- в графическом режиме;
Таблицы делать (то есть я думаю ты имеешь в виду двумрный массив);
var a:array[1..n,1..m]of type;
где n-кол-во строк,а m-кол-во столбцов, а Type-это один из типов данных (integer,real,char и т.д. и т.п.).
Написать:
Код
for i:=1 to n do begin
for j:=1 to m do begin
a[i,j]:=...
write(a[i,j,' ');
end;
writeln;
end;
Массив это упорядоченный набор однотипных данных записанных под одним именем.
В памяти элементы массива располагаются один за другим.
Так сопственно все, но ты еще чо-нибудь спрашивай,если надо.
Во-первых, пасибо, во-вторых, идём дальше ;D
Зачем эти операторы?- delay(a);
- Где на клаве можно непрерывную стрелку найти, всмысле чтоб на экране она была непрерывной, а не такой ---> , например.
- Сколько цветов можно использовать в Паскале?
- Что вот это такое? TextMode(OrigMode); Exit;
- TextMode(CO80); я так понял это задание какого-то режима? Что он делает?
Пока ответ только на первый вопрос:
Procedure Delay (Ms); MS- значение в миллисекундах. Для чего ? Задержка исполнения программы на заданное число миллисекунд. Delay - это стандартная процедура модуля crt.
Ну например delay(2000)
Значит после 20000 милисекунд всё, что на экране исчезнет? ;D Для чего это применяется? На примере каком-нибудь объясните...
Например:
сказано найти решение какого нибудь ур-я.Ты выводишь на печать:
Код
writeln(z:4:4);
delay(2000);
writeln('решено ур-е');
- это значит, что после вывода на экран твоего ответа(z) пройдет 2000 миллисекунд и после этого появится надпись "решено ур-е"......
2) такого вроде нет...
3)true color точно нет...
4)оригинальный текстовый режим
5)СО80 включает адаптер цветной графики и устанавливает цветной режим вывода данных с 80 знаками в строке.
Ну труколор ясно что нет ;D
Оригинальный текстовый режим мне ничего не сказал, можно по подробнее, для чего, как, зачем... и т.д.
Добавлено:А опишите плиз какие функции входят в модуль CRT? И какие есть ещё модули и для чего они что в них входит? Спасибо!
pascal65536
31.10.2002 20:04
Мне кажется, что лучше обзавестись хоть какой-нибудь книжкой по паскалю. Там есть почти все ответы на эти вопрос и многие другие.
Максимум вообще то 256 цветов.....
Согласен с вышесказанным-купи книгу..а пока тебе сюда:
http://polybook.doc.nov.ru/p7103.htm
Цитата
Максимум вообще то 256 цветов.....
Согласен с вышесказанным-купи книгу..а пока тебе сюда
http://polybook.doc.nov.ru/p7103.htm Вообще то в текстовом режиме всего 16 цветов, а в графическом (при наличии соответствующего драйвера) 32 бита (true color)...
MJ, а ты не подскажешь где эти дрова найти?
Добавлено (через 4 минуты):
Да... Про книжку... Советую тебе, Romario, купить книжку Фаронова!! "Turbo Pascal 7.0"!!! Там ты точно найдешь ответы на свои вопросы!! Там кстати усе достаточно понятно написано!!!!
Цитата
MJ, а ты не подскажешь где эти дрова найти?
Были у меня, но потом винт накрылся и я всё потерял
Ищи файл VESA32.BGI
Или ищи доку по VESA режимам. Там на самом деле всё просто.
Спасибо, значит буду искать книгу...
Спасибо,MJ!!!!Бум искать!!!
Цитата
Вообще то в текстовом режиме всего 16 цветов, а в графическом (при наличии соответствующего драйвера) 32 бита (true color)...
Слушай а что это за драйв такой?
Советую купить книжку Культина "Самоучитель на Turbo Pascal 7.0". Книга отличная. Твсе очень доходчиво объяснено! Попробуй...может понравиться! ;) :-*
Цитата
Слушай а что это за драйв такой?
VESA32.BGI SVGA32.BGI
У меня вопрос:
Как написать прогу, чтобы при запуске на экране появлялись рандомные числа, то-то вроде матрицы...
Код
const n=5; m=7;
var a:array [1..n,1..m] of integer;i,j,a,b:integer;
begin
Randomize;
write('Введите промежуток, на котором заданы случайные числа');
readln( a, b );
for i:=1 to n do begin
for j:=1 to m do begin
a[i,j]:=Random(b-a+1)+a;
write(a[i,j],' ');
end;
writeln;
end;
readln
end.
Нет, вы не поняли.. не матрицы мне нужны, а чтобы при запуске программы по всему экрану то появлялись то ищезали разные числа... Как в фильме Матрица ;D
Добавлено (через 9 минут):Да совсем забыл ещё:
Как менять размер шрифта в Паскале....
И ещё я например хочу чтобы только одна строка в Паскаль была например красной, а когда командой textcolor(a); то всё, что ниже делается таким же цветом, как сделать так чтобы так делалось только с одной строкой или с двумя, а остальные оставались такими же.... Тоже самое с командой gotoxy... Подскажите :
Просто после того, как две строки выведутся красным цветом, примени снова команду Textcolor(a) для последующего текста.
Я имел ввиду без команды.... есть такое? А если просто без команды textcolor(white) так чтоли?
На всё нужна команда, просто так ничего не бывает ;)
Потренируешся с паскалем, поймёшь...
А вообще я считаю что начинать изучение языков программирования надо с простейших алгоритмов.
Например, каких? Посоветуй.. буду начинать с них... ;D Что насчёт проги моей? :o
У нас на сайте вроде раздел задачь где то был (точно не помею
). Попробуй порешать задачки...
Люди ! Пишите правильно !! А то я не могу читать кривые сабжы, где написано не по-русски !!!
Нужно срочно решить эти задачи!!!
1 - Дано равносторонний треугольник со стороной a. Найти, длину стороны равнобольшого ему квадрата. Вичислить для таких значений:
a) a=7;
B) a=13
c) a=54
2 - Найти количество чисел кратных 7 от 7 до 7777 включительно.
a) Используя цикл for;
B) Используя цикл while;
c) Используя цикл repeat.
3 - Написать программу нахождения суммы чисел: S=10+22+32+…+n2, если
a) n=7;
B) n=10;
c) n=12.
4 - Натуральное число называется идеальным, если оно равно суме всех своих делителей, кроме самого числа. Проверить, будет ли число n идеальным.
5 - Если целое число М делится нацело на целое число N, то вывести на экран частное от деления, в противном случае – сообщение «М на N нацело не делится» и остаток.
Надеюсь поможете, заранее спасибо!
Код
program a2;
var a:integer;
begin
a:=0;
for a:=1 to 7777 do
if (a mod 7=0) then writeln(a);
a:=a+1;
readln;
readln;
end.
Вместо for подставляешь while and repeat. Надеюсь эти констукции ты знаешь.. в цикле менять ничего не нужно, просто вместо for и т.д. делай например конструкцию while
Добавлено:Код
program a1;
var a,b,c,d: integer;
begin
writeln('Введите a');
readln( a );
writeln('Введите b');
readln( B );
if (a mod b=0) then begin c:=a/b; writeln( c )
else writeln('Не нацело делиться');
d:=(a div B);
end.
Писал наспех, на кто что-то может и забыл написать, но прога сама правильная...
Спасибо! Жду остальные...
Решение 4 задачи
Код
program a4;
var n,s,i : integer;
begin
writeln('Введите число');
readln(n);
s:=0;
i:=0;
for i:=1 to (n-1) do begin
if (n mod i=0) then s:=s+i;
i:=i+1;
end;
if s=n then writeln('Число идеальное')
else writeln('Число не идеальное');
end.
Писал наспех, на кто что-то может и забыл написать, но прога сама правильная...
Про 3 задачу могу сказать, что там все делается очень просто, простейшим циклом for .. to ..do; Внутри цикла напиши такую штуку
Код
s:=s+sqr(i); i:=i+1;
То есть будет увелечение до указанного числа и плюс все будет суммироваться и возводится в квадрат ...
Причём тут это: s:=s+sqr(i); i:=i+1; ? Причём тут квадрат вообще?
Я чо то не понял.Я ведь где-то здесь в форуме писал решение 3 задачи.
Ну дык напиши еще разок !
Цитата
Вместо for подставляешь while and repeat. Надеюсь эти констукции ты знаешь.. в цикле менять ничего не нужно, просто вместо for и т.д. делай например конструкцию while
Я бы внес некоторые коррективы в вашу программу. Вот что у меня получилось:
Для for:Код
var a:integer;
begin
for a:=1 to 7777 do
if (a mod 7=0) then writeln(a);
readln;
end.
Для while:Код
var a:integer;
begin
a:=7;
while a<7777 do begin
if (a mod 7=0) then writeln(a);
a:=a+1;
end;
readln;
end.
Для repeat:Код
var a:integer;
begin
a:=7;
repeat
if (a mod 7=0) then writeln(a);
a:=a+1;
until a>=7777;
readln;
end.
Вроде бы все три проги составлены верно.
Я предлагаю следующее решение для 3-й задачи:
Код
Program p3;
const n=12;
var i,s:integer;
begin
s:=10;
For i:=2 to n do begin
s:=s+n*10+2;
If i=7 then writeln('n=7 s=',s);
If i=10 then writeln('n=10 s=',s);
end;
writeln('n=12 s=',s);
readln;
end.
Big, у тебя по-моему ошибочка в проге:
не
for i:=2 to n do
s:=s+n*10+2;
а:
for i:=2 to n do
s:=s+i*10+2;
Во как!!!
Кстати вот она моя прога(в смысле 3-я задача):
она правдо для любых n:
Код
program sum;
var n,i,sum:integer;
begin
write('Введите номер -> ');
readln(n);
sum:=10;
for i:=2 to n do begin
sum:=sum+i*10+2;
end;
writeln ('Сумма чисел последовательности до n(10,22,32,42,....,n2) равна ',sum);
readln
end.
trminator
25.11.2002 18:28
Про книжку... Я учился по книжке тов. С. Н. Лукина "Turbo pascal 7.0 самоучитель для начинающих". А если владеешь английским, то бывает кнопочка F1 ;) (а где-то на этом сайте я недавно видел что-то про русский help)
Ну что заждались? ;) Вот и новая порция задачек!!!Задача 1Найти все натуральные числа от 1 до 200, у которых количество делителей равно К (К вводится с клавиатуры)
Задача 2Даны натуральное число N и последовательность A1, A2, …, A N, AN+1. Определить наибольшее из нечетных и количество четных чисел, входящих в последовательность A1, A2, …, A N, AN+1.
Очень жду :
Решение 1 задачки на Delphi:
Код
procedure TForm1.Edit1Change(Sender: TObject);
var
D, F, C, R, T: Integer;
begin
ListBox1.Clear; // Очищаем список
D := StrToIntDef(Edit1.Text, 0);
for F := 1 to 200 do begin
C := 0;
T := F;
while T<>1 do begin
R := 2;
while (T mod R)<>0 do
Inc( r );
T := T div R;
Inc( c );
end;
if C=D then
ListBox1.AddItem(IntToStr(F), nil); // Добавляем число в список
end;
end;
Цитата
Big, у тебя по-моему ошибочка в проге:
не
for i:=2 to n do
s:=s+n*10+2;
а:
for i:=2 to n do
s:=s+i*10+2;
Во как!!!
Да согласен ошибка есть. Но в целом прога написана верно!
На Пасе:
Код
program delit;
const n=200;
var i,k,m,l,r:integer;
begin
write('Введите количество нужных делителей->');
readln(k);
r:=0;m:=0;
for i:=1 to n do begin
for l:=1 to i do
if l mod i=0 then m:=m+1;
if m=k then r:=r+1;
end;
writeln('Кол-во чисел, у котор. кол-во делит =k равно->',r);
readln
end.
Сразу говорю, что не проверял.
Так чуваки!!!Я малясь не то сделал.
Вот то что надо.
Код
program delit;
const n=200;
var i,k,m,l,r:integer;a:array [1..n] of integer;
begin
write('Введите количество нужных делителей->');
readln(k);
r:=0;m:=0;
for i:=1 to n do begin
for l:=1 to i do
if l mod i=0 then m:=m+1;
if m=k then begin
r:=r+1;
a[r]:=i;
end;
end;
writeln ('Вот числа, у которых кол-во делителей =k->');
for i:=1 to r do
write(a[i],' ');
readln
end.
Сразу говорю, что не проверял.
Я не понимаю вот этого:
Цитата
Сразу говорю, что не проверял.
У вас времени не хватает переименовать txt в pas и нажать Ctrl + F9... Давайте проверять ;) Уж если не работает, но вы считаете алгоритм правильным, тогда постите, будем все вместе разбирать
Времени правдо нет.Заходишь, думаешь,что задача легкая, пишешь, а уж затем проверяешь.
Мое решение неверно!!!
Пойду дорабатывать!
Мне бы в Паскале это всё :
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста,
нажмите сюда.