Страница 1 из 1
Паскаль.Массивы.Выборочное произведение
Добавлено: 21 янв 2009, 15:11
РомКа
Помогите пожалст началась практика а в паскале не очень силен, да и еще в массивах
В массиве M[15]-целых чисел найти произведение элементов, оканчивающихся на цифру 3 или 5.
Буду очень благодарен

Re: Паскаль.Массивы.Выборочное произведение
Добавлено: 21 янв 2009, 17:58
dr.Jekill
Пожалуйста:
uses crt;
var a:array[1..15] of integer;
i:byte;
s:string;
pr:integer;
begin
clrscr;
pr:=1;
writeln('Vvedite elementy massiva -> ');
for i:=1 to 15 do
begin
read(a);
str(a,s);
if (s[length(s)]='3') or (s[length(s)]='5') then pr:=pr*a;
end;
writeln('Proizvedenir elementov, zakanchivaiuschihsia na 3 ili 5: ',pr:6);
readln;
readln;
end.
Помогло? - оставьте отзыв.
С уважением dr.Jekill.
Re: Паскаль.Массивы.Выборочное произведение
Добавлено: 21 янв 2009, 19:12
РомКа
спс огромное)))
Но можешь объяснить пожалуйста что означает:
s:string;
pr:=1;
str(a
,s);
pr:6 в конце (writeln('Proizvedenir elementov, zakanchivaiuschihsia na 3 ili 5: ',pr:6)) 
а то с таким не сталкивался и хотелось бы знать пояснение))
Re: Паскаль.Массивы.Выборочное произведение
Добавлено: 21 янв 2009, 19:14
Creatizmo
Это так, я ради развлечения сделал, вдруг нужны будут произвидени
я элементов массива.
Код: Выделить всё
program r1;
// Программа вычисляющая произведения целых элементов
// массива оканчивающихся на цифры 3 и 5.
// Глеб Creatizmo Поспелов. 21 Января 2009 года.
uses crt;
const
c = 15;
x : array[1..c] of integer = (43,78,24,45,84,61,13,50,78,52,55,94,11,67,33);
var
a, i, j : longint;
s1, s2 : string;
begin
clrscr;
for i := 1 to c do
begin
str(x[i], s1);
case (s1[length(s1)] = '3') or (s1[length(s1)] = '5') of
TRUE :
begin
for j := i + 1 to c do
begin
str(x[j], s2);
case (s2[length(s2)] = '3') or (s2[length(s2)] = '5') of
TRUE :
begin
a := x[i] * x[j];
writeln('Произведение чисел ',x[i],'*',x[j],' = ',a);
end
end;
end;
end
end;
end;
readkey;
end.
Re: Паскаль.Массивы.Выборочное произведение
Добавлено: 21 янв 2009, 19:17
Creatizmo
РомКа писал(а):спс огромное)))
Но можешь объяснить пожалуйста что означает:
s:string;
pr:=1;
str(a
,s);
pr:6 в конце (writeln('Proizvedenir elementov, zakanchivaiuschihsia na 3 ili 5: ',pr:6)) 
а то с таким не сталкивался и хотелось бы знать пояснение))
s - строка.
pr - произведениe.
str(a, s) - процедура перевода элемента массива (a) из числа в строку (s).
pr:6 - форматированный вывод.
Re: Паскаль.Массивы.Выборочное произведение
Добавлено: 21 янв 2009, 19:21
РомКа
всем большое спасибо))
Re: Паскаль.Массивы.Выборочное произведение
Добавлено: 21 янв 2009, 21:16
dr.Jekill
uses crt;//подключаем графический модуль, чтобы с его помощью очищать экран во время каждого вызова программы
var a:array[1..15] of integer;//обьявили целочисленный массив
i:byte;//обьявили переменную для работы с индексами элементов массива
s:string;//обьявили строку (т.е. переменную типа строка (string), где каждый элемент типа символ (char). Другими словами строка - это массив символов: stroka[номер элемента строки]=Элемент строки

pr:integer;//обьявили переменную куда сохраним произведение нужных нам элементов
begin//итак, начинаем
clrscr;//очищаем экран с помощью процедуры из модуля CRT;
pr:=1;//присваиваем нашей переменной, в которой будем хранить произведение, единицу, т.к. если она будет равна нулю, наше конечное произведение (наш ответ), тоже будет равно нулю, поскольку "Когда произведение равно нулю? Когда один из членов равен нулю"
writeln('Vvedite elementy massiva -> ');//выводим на экран приглашение пользователю начать ввод
for i:=1 to 15 do //с первого по пятнадцатый элемент массива
begin//начать
read(a
);//прочитать элемент массива
str(a,s);//преобразовать его (a) в строку s, с помощью стандартной процедуры преобразования типов str
if (s[length(s)]='3') or (s[length(s)]='5') then pr:=pr*a;//если последний символ полученной строки равен трём или пяти, тогда накопить в переменной pr произведение (допустим у нас первое совпадение, тогда, т.к. мы присваивали pr единицу (pr:=1
мы получим pr:=1*елемент массива, другими словами, теперь pr будет хранить первый совпавший элемент, и поэтому при следующем совпадени в pr сохранится: первый совпавший*второй совпавший - что нам и нужно;
идём дальше: s[length(s)]='3'; здесь length - стандартная функция, возвращающая размер строки(номер последнего элемента строки), соответственно length(s) - номер последнего элемента строки s.
s[номер последнего элемента строки] - как я уже говорил выше, строка это массив символов, и здесь мы обращаемся к последнему элементу (последнему символу) этого массива и (s[length(s)]='3') or (s[length(s)]='5') - сообственно проверяем не равен ли он 3 или 5)
end;//закончить цикл (перебор элементов массива)
writeln('Proizvedenie elementov, zakanchivaiuschihsia na 3 ili 5: ',pr:6);//выводим на экран наш ответ, при этом задаем чтобы на экране отображались первые 6 цифр этого числа не в экспонентциальной форме (напрмер,не так: 1000=10e2, и 0,0001=10e-5)
readln;//отображаем всю информацию на экране до нажатия пользователем любой кнопки
end.//конец программы
Re: Паскаль.Массивы.Выборочное произведение
Добавлено: 23 янв 2009, 19:48
Хыиуду
Ой...
s:=1;
for i:=1 to 15 do if M mod 10 in [3,5] then s:=s*M;
writeln(s);
Заполнение массива перед этим - см. в других примерах.
Re: Паскаль.Массивы.Выборочное произведение
Добавлено: 24 янв 2009, 01:52
dr.Jekill
Хыиуду, а почему mod 10? А если у нас элемент одна цифра?
Re: Паскаль.Массивы.Выборочное произведение
Добавлено: 25 янв 2009, 02:06
Хыиуду
И что из этого? Число 3 у нас не оканчивается на цифру 3?