Помощь - Поиск - Пользователи - Календарь
Полная версия: получить таблицу температур
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Ksenia
Разроботать алгоритм решения задачи, составить блок-схему и запрограммировать решение на языке Паскаль, используя подпрограмму-функцию и массивы. необходимо получить таблицу температур по цельсию от 0 до 20 градусов с шагом в один градус цельсия и их эквивалентов по шкале Фаренгейта, используя для перевода формулу:
Tf=(9/5)Tc+32.

Пожалуйста, помогите !!!
Мы это в школе давно очень проходили, уже не помню... blink.gif
Заранее спасибо.
Krjuger
Немного не понятно как должна выглядеть таблица....
Например:
1 2 3 4
2 3 4 5
3 4 5 6
4 5 6 7
Тобиш происходит увеличение на 1 по строке и на 1 по столбцу,а значение каждого элемента как i+j высчитывать,где i текущая строка,j текущий столбец.Это имеется в виду?(Ну понятно что только в больших размерах.Или как то более мудрено?Потому что таким способом в диапозон от 0 до 20 не влезет,если шаг 1 градус.
Либо имелось в виду следующее
1 2 3 4
2 1 2 3
3 2 1 2
4 3 2 1
Как нетрудно заметить все соседние элементы(не считая диагональных направлений) идут с шагом 1 и могут быть уложены в диапазон от 0 до 20.
Ksenia
скорее всего здесь проще: наверное нужно вівести таблицу 2х20
просто столбик со значиниями цельсий и рядом со значениями по фаренгейту, как-то так.
спасибо, что помогаете.
DarkWishmaster
Цитата(Ksenia @ 7.06.2011 16:26) *

скорее всего здесь проще: наверное нужно вівести таблицу 2х20
просто столбик со значиниями цельсий и рядом со значениями по фаренгейту, как-то так.
спасибо, что помогаете.


Uses Crt;
var a:array[1..5,1..4] of byte;
b:array[1..5,1..4] of real;
number:byte;
i,j:byte;
function Tf(x:byte):real;
begin
TF:=(9/5)*x+32;
end;
Begin ClrScr;
number:=0;
for i:=1 to 5 do
for j:=1 to 4 do
begin
inc(number);
a[i,j]:=number;
b[i,j]:=Tf(number);
end;
for i:=1 to 5 do
for j:=1 to 4 do
begin
write(a[i,j],' / ');
writeln(b[i,j]:3 :2); //ошибка из за тэга
end;
readln;
end.


IUnknown
Цитата(DarkWishmaster @ 7.06.2011 17:16) *
не понимаю что с тэгом

Вот, оно самое: Старинный баг: смайлики в коде ...
Krjuger
DarkWishmaster,сорь что лезу,но топикстартер говорил про 2 х 20 а ты сделал 5 х 4,хотя согласен меняется это не шипко сложно.

Единственное,что я не понял,почему исходный массив(в цельсиях) у тебя типа байт,а для фаренгейта уже реал?И еще раз извиняюсь,если обижу,но зачем тебе вообще массив а,если тебе он абсолютно не нужен.Вывод на экран можно сделать аналогично тому, как ты заполняеш оба массива,либо как нибудь так

for i:=1 to 5 do
for j:=1 to 4 do
begin
write(20-number);
dec(number);
writeln(b[i,j]:3 :2); //ошибка из за тэга
end;

DarkWishmaster
Цитата(Krjuger @ 7.06.2011 21:35) *

DarkWishmaster,сорь что лезу,но топикстартер говорил про 2 х 20 а ты сделал 5 х 4,хотя согласен меняется это не шипко сложно.

Единственное,что я не понял,почему исходный массив(в цельсиях) у тебя типа байт,а для фаренгейта уже реал?И еще раз извиняюсь,если обижу,но зачем тебе вообще массив а,если тебе он абсолютно не нужен.Вывод на экран можно сделать аналогично тому, как ты заполняеш оба массива,либо как нибудь так

for i:=1 to 5 do
for j:=1 to 4 do
begin
write(20-number);
dec(number);
writeln(b[i,j]:3 :2); //ошибка из за тэга
end;



Ну Цельсий же шагом в 1, из интервала [1,20] тут тип байт подходит, а фаренгейт он по формуле уже действительное число, так и поставил реал.
Ты прав, тут вообще массив не нужен, я не подумал, прочитал условие и там массив и мысль в другую сторону улетела.
Можно просто так:

for i:=1 to 20 do
begin
write(i,' ');
writeln(TF(i):2 :2);
end;

Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.