Помощь - Поиск - Пользователи - Календарь
Полная версия: изменяем тип строки...
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
JoB
Я смотрю, что то всех на массивы в последнее время приперло, вот и меня потянуло...
Надо используя двумерные или (если конечно возможно) одномерные массивы решить задачу...
Даны целые а1,а2,...,аn, действительные b1,b2,...,bn преобразовать последовательность b1,b2,...,bn в а1,а2,...,аn, по правилу если ai делится на 10, то bi увеличевается в 10 раз, иначе bi заменить нулем.
Задача впринцепе очень легкая, но я что то в сам смфсл врубитьсяя не могу, а время позднее (завтро эту работу надо сдавать wacko.gif )
Я конечно ща продолжу мучиться, но если каму ни лень помогите... yes2.gif
klem4
for i := 1 to n do
if a[i] mod 10 = 0 then
b[i] := b[i] * 10
else
b[i] := 0;

?

только причем тут строки ?
JoB
uses crt;
const n=10;
type aaa = array [1..n] of integer;
bbb = array [1..n] of real;
var i:integer;
a:aaa;
b:bbb;
begin
clrscr;
writeln('vvedite');
readln (a);
writeln('vvedite b',i,');
readln (b);
for i:=1 to n do
begin
if a[i] mod 10 = 0 then
b[i]:=b[i]*10
else
b[i]:=0;
writeln (',a[i],');
writeln(',b[i],');
end;
end.


что то я сегоня уже ничего не соображаю... blink.gif
с выводом я тут явно чего то нагнал...

Пользуемся тегами !
klem4
klem4
Уу батенька, загляните-ка вот сюда (FAQ : Массивы, матрицы) yes2.gif
JoB
почитал faq прога стала запускаться вот только не пашет она нормально...
Блин я не спал два дня =) из-за этих долбанных выходных...
короче помоги, а - обещаю исправиться unsure.gif
Код

uses crt;
const n=10;
type aaa = array [1..n] of integer;
    bbb = array [1..n] of real;
var i:integer;
   a:aaa;
   b:bbb;
begin
clrscr;
for i:=1 to n do
begin
writeln('vvedite');
readln (a[i]);
writeln('vdite');
readln (b[i]);
end;
begin
if a[i] mod 10 = 0 then
b[i]:=b[i]*10
else
b[i]:=0;
writeln (a[i]);
writeln (b[i]);
end;
end.
JoB
пожалуйста rolleyes.gif
klem4
уххх
uses crt;
const n=5;
var
a : array[1..n] of integer;
b : array[1..n] of single;
i : integer;
begin
clrscr;
for i := 1 to n do begin
write('a[',i,']='); readln(a[i]);
write('b[',i,']='); readln(b[i]);
if (a[i] mod 10) = 0 then
b[i] := b[i] * 10
else
b[i] := 0;
end;

writeln;

for i := 1 to n do writeln(b[i]:4:2);
end.


все поправил
volvo
klem4,
Цитата
Даны целые а1,а2,...,аn, действительные b1,b2,...,bn
Торопишься smile.gif

Добавлено:

klem4, Исправить-то ты исправил, но...
JoB, если будет ошибка "Must be in 8087 mode to compile this", самой первой строчкой программы добавь
{$N+}
rolleyes.gif
JoB
Огромное спасибо good.gif
но если не трудно объясните что это за знак
 {$N+} 
volvo
Что, понадобилось? yes2.gif Я так и знал... Это - подключение сопроцессора... Просто klem4 использовал сопроцессорный тип, а по умолчанию в Турбо Паскале поддержка 8087 выключена, вот я и посоветовал ее включить smile.gif
JoB
Все всем огромное спасибо... просто парни спасли... yes2.gif
JoB
А не подскажите как в этой програмке использовать подпрогрму (одну) тобишь какую либо часть программы представить ввиде подпрограммы, всю программу делать подпрограмой не надо (я сделал преподу не понравилось =)
volvo
Вот так пойдет?
{$N+}
uses crt;

{ Функция запроса одного числа }
function get(ch: char; i: integer): single;
var X: single;
begin
write(ch+'[', i, '] = '); readln(X);
get := X;
end;

const n=5;
var
a : array[1..n] of integer;
b : array[1..n] of single;
i : integer;
begin
clrscr;
for i := 1 to n do begin
a[i] := trunc(get('a', i)); { <--- вызов здесь ... }
b[i] := get('b', i); { <--- ... и здесь }
if (a[i] mod 10) = 0 then
b[i] := b[i] * 10
else
b[i] := 0;
end;

writeln;

for i := 1 to n do writeln(b[i]:4:2);
end.
JoB
а я вот что написал =)
{$N+}
uses crt;
const n=5;
var
a : array[1..n] of integer;
b : array[1..n] of single;
i : integer;
procedure xxx;
begin
writeln;
for i := 1 to n do
writeln(b[i]:4:2);
end;
begin
clrscr;
for i := 1 to n do begin
write('a[',i,']=');
readln(a[i]);
write('b[',i,']=');
readln(b[i]);
if (a[i] mod 10) = 0 then
b[i] := b[i] * 10
else
b[i] := 0;
end;
xxx
end.
JoB
а что такое ch+ и trunc
klem4
так как ch - символьная переменная, а для них (символьных данных) разрешен вывод в таком виде, то есть

ch='t';
writeln(ch+'est');
//то же самое что и
writeln(ch,'est');

//результатом будет : 'test'


ну а по второму вопросу, trunc(X) - отсекает дробную чать Х, trunc(1.2) = 1, trunc(1.99) = 1
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.