imho.ws |
![]() |
![]() |
![]() |
# 1 |
::VIP::
Регистрация: 14.05.2003
Адрес: 127.0.0.1
Сообщения: 852
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Вопрос по TurboPascal'ю(safe Warchief)
Ребята помогите пожалуйста со следующей програмой.
Програма должна перевести введённые числа в тип string, и короткую строку дополнить спереди нулями до длины большей строки и вывести на экран.Это тот кусок проги который я и сам могу, а вот дальше никак.Помогите плиз очень надо! Program ASD; uses wincrt; var dlina1, dlina2:byte; chislo1,chislo2:string[40]; begin writeln ('задайте первое число'); readln(chislo1); writeln ('задайте второе число') readln (chislo2); dlina1:= length (chislo1); dlina2:= length (chislo2); if dlina1>dlina2 then dlina1:= abs(dlina1-dlina2); Последний раз редактировалось Warchief; 01.06.2004 в 20:18. |
![]() |
![]() |
# 2 |
::VIP::
Регистрация: 18.01.2002
Адрес: Moscow
Сообщения: 1 919
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
а если dlina2 больше dlina1, то что тогда? и еще, в данном участке у тебя теряется значение dlina1.
даже этот участок кода содержит алгортмическую ошибку. постараюсь сегодня вечером набросать пример и прикрепить.
__________________
Бороться и искать, найти и перепрятать :-) |
![]() |
![]() |
# 3 |
::VIP::
Регистрация: 18.01.2002
Адрес: Moscow
Сообщения: 1 919
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Заголовок проги допишешь сам. Я приведу только тело.
begin writeln ('задайте первое число'); readln(chislo1); writeln ('задайте второе число') readln (chislo2); dlina1:= length (chislo1); dlina2:= length (chislo2); dlina:= abs(dlina1-dlina2); strdop := ''; for i := 1 to dlina do strdop := concat('0', strdop); if dlina1 > dlina2 then chislo2 := concat(strdop, chislo2) else chislo1 := concat(strdop, chislo1); writeln ('вывод первого числа: '); writeln (chislo1); writeln ('вывод второго числа: '); writeln (chislo2); end.
__________________
Бороться и искать, найти и перепрятать :-) |
![]() |
![]() |
# 6 |
::VIP::
Регистрация: 14.05.2003
Адрес: 127.0.0.1
Сообщения: 852
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Помогите решить ещё одну задачу на ТурбоПаскале плиз!
Вот сама задача: В двумерном массиве должны быть сгенирированы 20 случайных чисел из любого интервала(скажем от 1 до 255) и нужно вычислить сколько чисел из этих 20 не делятся на 2 без остака, и вывести эти числа на экран. Плиз помогите очень нужноо!!! ![]()
__________________
reality.sys corrupt Kernel panic - not syncing: Fatal exception halt life(y,n)? |
![]() |
![]() |
# 8 |
Junior Member
Регистрация: 14.09.2003
Адрес: тут
Сообщения: 60
![]() |
Код:
VAR a: array[1..4,1..5] of Integer; i,j,Count: Integer; BEGIN Randomize; for i := 1 to 4 do for j := 1 to 5 do a[i,j] := Random(255)+1; Count := 0; for i := 1 to 4 do for j := 1 to 5 do if (a[i,j] mod 2) <> 0 then begin Inc(Count); Write(a[i,j],' '); end; WriteLn; WriteLn('Найдено ',Count,' нечетных чисел.'); ReadLn; END. Код:
if Odd(a[i]) then и т.д.
__________________
![]() |
![]() |
![]() |
# 9 |
::VIP::
Регистрация: 14.05.2003
Адрес: 127.0.0.1
Сообщения: 852
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
nibl
Спасибо ОГРОМНОЕ, очень сильно выручил ![]() ![]() ![]() ![]() ![]() ![]() ![]() Slanj Спасибо и тебе, хотел помочьросто не успел ![]() Ну и 2 вопроса ещё к вам: объясните пожалуйста, что означает строка: array[1..4,1..5], а именно почему интервалы записаны через запятую и почему их тут два. И как он генерит 20 случайных чисел, если нигде в иходнике не упоминается число 20? ![]()
__________________
reality.sys corrupt Kernel panic - not syncing: Fatal exception halt life(y,n)? |
![]() |
![]() |
# 10 |
::VIP::
Регистрация: 09.05.2004
Адрес: Киев
Сообщения: 670
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Ну уж если я не успел с прогой помочь, то хоть обьясню немного. array[1..4,1..5] - тебе же двухмерный массив нужен был, так вот ты и получил массив высотой 4 и шириной 5 (еще можно сказать матрица). Через запятую интервалы (размерности) написаны потомучто у паскаля синтаксис такой. Программа генерирует 20 чисел, так как у твоего массива количество элементов 20 (помнож 5 на 4, примерно как площадь
![]() Последний раз редактировалось Slanj; 02.06.2004 в 02:35. |
![]() |
![]() |
# 11 |
::VIP::
Регистрация: 14.05.2003
Адрес: 127.0.0.1
Сообщения: 852
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Slanj
Спасибо всё понятно объяснил ![]() Тогда ещё один вопрос, если можно ![]() Как бы выглядела программа с массивом такого типа: a: array[1..20] of Integer; Так думаю я: VAR a: array[1..20] of Integer; i,Count: Integer; BEGIN Randomize; for i := 1 to 20 do a[i] := Random(255)+1; Count := 0; for i := 1 to 20 do if (a[i] mod 2) <> 0 then begin Inc(Count); Write(a[i],' '); end; WriteLn; WriteLn('Найдено ',Count,' нечетных чисел.'); ReadLn; END. Правильно ли это?
__________________
reality.sys corrupt Kernel panic - not syncing: Fatal exception halt life(y,n)? |
![]() |
![]() |
# 12 |
::VIP::
Регистрация: 17.02.2002
Адрес: /home/dr-evil
Пол: Male
Сообщения: 2 212
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
1. Обращение a[i] к двумерному массиву (матрице) неверно, надо использовать a[i,j]
2. Немного сменится алгоритм - например можно сделать так: for i=1 to 20 do for j=1 to 20 do if (a[i,j] mod 2)=0 then inc(count); end; writeln('Найдено ', count, 'чисел'); вот и все. PS тока не помню, mod остаток от деления или div =)
__________________
Сеть - это диагноз... а сисадмин - состояние души. Питер! Все на сходку!!! | Обзоры порталов. Добавь свою любимую систему! Последний раз редактировалось dr-evil; 02.06.2004 в 18:51. |
![]() |
![]() |
# 13 | |
::VIP::
Регистрация: 14.05.2003
Адрес: 127.0.0.1
Сообщения: 852
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Цитата:
Почему в ниже приведённом коде не прога не показывает кол-во нечётных чисел? Код:
VAR a: array[1..20] of Integer; i,Count: Integer; BEGIN Randomize; for i := 1 to 20 do a[i] := Random(255)+1; Count := 0; for i := 1 to 20 do if (a[i] mod 2) <> 0 then begin Inc(Count); Write(a[i],' '); end; WriteLn; WriteLn('Найдено ',Count,' нечетных чисел.'); ReadLn; END.
__________________
reality.sys corrupt Kernel panic - not syncing: Fatal exception halt life(y,n)? |
|
![]() |
![]() |
# 14 |
::VIP::
Регистрация: 09.05.2004
Адрес: Киев
Сообщения: 670
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
У меня вроде твоя заработала.
На, вот эта работает program tipavot; uses crt; VAR a: array[1..20] of Integer; i, Count: Integer; BEGIN clrscr; Randomize; for i := 1 to 20 do a[i] := Random(255)+1; Count := 0; for i := 1 to 20 do begin if (a[i] mod 2) <> 0 then begin Inc(Count); Write(a[i],' ' ); end; end; WriteLn; WriteLn('Naideno ',Count,' nechetnih chisel.' ); ReadLn; END. Последний раз редактировалось Slanj; 03.06.2004 в 00:50. |
![]() |
![]() |
# 15 |
::VIP::
Регистрация: 14.05.2003
Адрес: 127.0.0.1
Сообщения: 852
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Slanj
Спасибо большое, просмотрел внимательно ещё раз иходник, поудалял коментарии и всё тоже заработало ![]() Так бы и не нашёл причину если бы не ты. ![]()
__________________
reality.sys corrupt Kernel panic - not syncing: Fatal exception halt life(y,n)? |
![]() |
![]() |
# 17 |
::VIP::
Регистрация: 14.05.2003
Адрес: 127.0.0.1
Сообщения: 852
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Людиии помогите пожалуйста ещё раз!!! Надо написать программу на TP которая бы генерировала в матрице(array[1..6,1..6]) восемнадцать случайных чисел и дублировала их все.Должно получиться 18 чисел в матрице каждое должно повторяться два раза, чтобы получилось в общей сложности 36, но положение этих чисел должно быть случайное(по типу игры "memory"). И в конце концов надо выдать эту матрицу в виде квадрата 6 на 6 в виде звёздочек.
Пожалуйста помогите написать прогу, а то я как ни бился могу только сгенирировать эти числа и выдать ввиде звёздочек только в строчку, а не в квадрате. ![]() ![]() ![]() ![]() ![]() ![]() Вопрос жизни и смерти ![]() ![]() ![]()
__________________
reality.sys corrupt Kernel panic - not syncing: Fatal exception halt life(y,n)? |
![]() |
![]() |
# 18 |
::VIP::
Звезда первого сезона Молчун-2004 Регистрация: 24.08.2002
Сообщения: 1 575
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Сформировать, эт пожалуйста:
Код:
uses crt; const n = 6; k = n * n div 2; var a: array [1..n, 1..n] of byte; b: array [1..k] of byte; i, j, l, m, r: byte; p: boolean; begin clrscr; randomize; for i := 1 to n do for j := 1 to n do a[i, j] := 0; for i := 1 to k do begin repeat p := true; b[i] := random (99) + 1; for j := 1 to pred (i) do p := p and (b[j] <> b[i]); until p; for l := 1 to 2 do begin repeat r := random(n) + 1; m := random(n) + 1; until a[r, m] = 0; a[r, m] := b[i]; end; end; for i := 1 to n do begin for j := 1 to n do write (a[i, j]: 3); writeln; end; readkey; end. ![]()
__________________
Действовать надо тупо и это лучшее доказательство нашей чистоты и силы! |
![]() |
![]() |
# 19 |
::VIP::
Регистрация: 14.05.2003
Адрес: 127.0.0.1
Сообщения: 852
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Ghost
Ты лучший!!!!! ![]() Со звёздочками я имел ввиду что эту матрицу он должен был написан не в числах а в виде звёздочек (*). А так это уже то, что мне нужно. ![]() ![]() ![]() ![]()
__________________
reality.sys corrupt Kernel panic - not syncing: Fatal exception halt life(y,n)? |
![]() |
![]() |
# 20 |
::VIP::
Регистрация: 14.05.2003
Адрес: 127.0.0.1
Сообщения: 852
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Объясни пожалуйста, что делают переменные: l, m, r и p. А также какое действие выполняет фунция pred и следующий участок кода :
p := true; b[i] := random (99) + 1; for j := 1 to pred (i) do p := p and (b[j] <> b[i]); until p; for l := 1 to 2 do begin repeat r := random(n) + 1; m := random(n) + 1; until a[r, m] = 0; a[r, m] := b[i]; Никак не пойму, что здесь выполняется и зачем используется 2 array'я? Спасибо!!!
__________________
reality.sys corrupt Kernel panic - not syncing: Fatal exception halt life(y,n)? |
![]() |