10.12.2008, 02:58 | #1 (permalink) |
Member
Регистрация: 10.12.2008
Сообщений: 13
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Паскаль. Задача на массивы
Нужно написать программу на языке Паскаль, которая осуществляет обработку двумерного массива. Задание: Дана прямоугольная матрица. Определить количество столбцов, произведение элементов которых меньше 5. Условия: Элементы массива вещественного типа. Массив объявляется размером 10 на 10 . Размеpность рабочего массива задается пользователем, но не более 10 строк и не более 10 столбцов (при вводе пользователем большего значения чем 10 программа должна предложить повторно ввести неверно заданный параметр). Ввод значений массива осуществляется с консоли или из файла (по выбору пользователя). Результат pаботы пpогpаммы (исходный массив в виде матрицы и искомый параметр с соответствующими пояснениями) выводится на экpан и в файл. Помогиите))) |
10.12.2008, 02:58 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Проблему будет решать проще, если набраться информации из похожих топиков Массивы. Паскаль Паскаль, три задачи на массивы Задача на массивы в Паскале |
10.12.2008, 20:36 | #4 (permalink) | |
Member
Регистрация: 10.12.2008
Сообщений: 13
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Цитата:
В одномерном массиве, состоящем из n вещественных элементов, вычислить: 1. максимальный по модулю элемент массива; 2. сумму элементов массива, расположенных между первым и вторым положительными элементами. Преобразовать массив таким образом, чтобы элементы, равные нулю, располагались после всех остальных. Это поможете сделать? Пожалуйста) |
|
15.12.2008, 13:03 | #5 (permalink) |
support
Регистрация: 19.08.2007
Адрес: Зея
Сообщений: 15,797
Записей в дневнике: 71
Сказал(а) спасибо: 166
Поблагодарили 203 раз(а) в 86 сообщениях
Репутация: 75760
|
К задаче #1 (на всякий случай, чтобы не было вопросов)
Код:
program massiv1; uses crt; label inp1, inp2; {объявление меток для возврата при неправильном вводе параметров} var n,k,i,j: integer; p: real; a: array[1..10,1..10] of real; f: text; begin {инициализация генератора псевдослучайных чисел} randomize; {очистка текстового экрана} clrscr; {ввод размерности массива} inp1: writeln('Введите размерность массива в диапазоне [1:10]'); readln(n); if (n<1) or (n>10) then goto inp1; {выбор источника значений массива} inp2: writeln('Выберите способ заполнения массива (1 - из файла, 2 - вручную, 3 - псеводслучайные значения)'); readln(k); case k of {заполнение из текстового файла} 1:begin writeln('Идет заполнение массива значениями из файла c:\in.txt'); {работа с указанным файлом} assign(f,'c:\in.txt'); reset(f); i:=1; while not eof(f) do {проверка конца файла} begin j:=1; while j<=n do {заполнение по столбцам} begin read(f,a[i,j]); j:=j+1; end; i:=i+1; end; close(f); end; {1} {заполнение массива вручную} 2: begin for i:=1 to n do for j:=1 to n do begin writeln('Введите [',i,':',j,'] элемент массива'); read(a[i,j]); end; end; {2} {заполнение массива псевдослучайными значениями из диапазона [0;10]} 3: begin for i:=1 to n do for j:=1 to n do begin a[i,j]:=random*10; end; end; {3} else goto inp2; end; {case} writeln('Массив заполнен значениями.'); {вывод массива на экран} writeln; for i:=1 to n do begin for j:=1 to n do begin write(a[i,j],' '); end; writeln; end; {вычисление количества столбцов, произведение элементов в которых меньше 5} k:=0; for i:=1 to n do begin p:=1; for j:=1 to n do begin p:=p*a[i,j]; end; if p<5 then k:=k+1; end; {вывод результатов на экран и в файл out.txt} writeln('В массиве количество столбцов, произведение элементов которых меньше 5, равно ',k); writeln('Результат работы программы сохранен в файл c:\out.txt'); assign(f,'c:\out.txt'); rewrite(f); for i:=1 to n do begin for j:=1 to n do write(f,a[i,j]:4:6,' '); writeln(f,''); end; {i} writeln(f,'В массиве количество столбцов, произведение элементов которых меньше 5, равно ',k); close(f); readln(i); end. Код:
10.1 2.11 3.12 2.1 2.3 1.1 3.2 2.1 0.2 Код:
10.100000 2.110000 3.120000 2.100000 2.300000 1.100000 3.200000 2.100000 0.200000 В массиве количество столбцов, произведение элементов которых меньше 5, равно 1
__________________
Убить всех человеков! |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
15.12.2008, 13:04 | #6 (permalink) |
support
Регистрация: 19.08.2007
Адрес: Зея
Сообщений: 15,797
Записей в дневнике: 71
Сказал(а) спасибо: 166
Поблагодарили 203 раз(а) в 86 сообщениях
Репутация: 75760
|
К задаче #2 (без работы с файлами, если нужно - скопируйте из предыдущего поста)
Код:
program massiv2; uses crt; label inp1; var n,k,i,j: integer; max, sum, b: real; a: array[1..1000] of real; begin randomize; clrscr; {ввод размерности массива} writeln('Введите размерность массива:'); readln(n); {выбор источника значений массива} inp1: writeln('Выберите способ заполнения массива (1 - вручную, 2 - псевдослучайные значения)'); readln(k); case k of {заполнение массива вручную} 1: begin for i:=1 to n do begin writeln('Введите [',i,'] элемент массива'); read(a[i]); end; end; {1} {заполнение массива псевдослучайными значениями} 2: begin for i:=1 to n do begin a[i]:=random*10; {генерация значений элементов массива} if trunc(random*2)=1 then a[i]:=a[i]*(-1); {генерация отрицательных значений} end; end; {2} else goto inp1; end; {case} writeln('Массив заполнен значениями:'); {вывод массива на экран} writeln; for i:=1 to n do begin writeln(a[i]); end; writeln; {поиск максимального по модулю элемента массива} max:=a[1]; j:=1; {j - порядковый номер мах по модулю элемента} for i:=2 to n do begin if abs(a[i])>=abs(max) then begin max:=a[i]; j:=i; end; end; writeln('Максимальный по модулю элемент с порядковым номером ',j,' равен ',max); {вычисление суммы элементов между первым и вторым положительными элементами массива} sum:=0; j:=1; for i:=1 to n do begin if (a[i]>0) and (j=1) then begin while a[i+1]<=0 do begin i:=i+1; sum:=sum+a[i]; end; j:=j+1; end; end; writeln('Сумма элементов между первым и вторым положительным элементом равна ',sum); {перемещение всех 0 в конец массива} writeln('Отсортированный массив: '); for i:=1 to n do begin if a[i]=0 then begin j:=i; while j<=n do begin b:=a[j+1]; a[j+1]:=0; a[j]:=b; j:=j+1; end; {while} end; {if} end; {вывод на экран полученного массива} for i:=1 to n do writeln(a[i]); readln(i); end.
__________________
Убить всех человеков! |
15.12.2008, 21:42 | #8 (permalink) |
Member
Регистрация: 10.12.2008
Сообщений: 13
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Всем огромное спасибо))) извините, что долго не благодарил, но все равно)) все спасибо)) ну тоесть спасибо вам, AlexZir ) большое-большое)
Да, приближается сессия, только лабы не по информатике, а по программированию)хаха |
16.12.2008, 12:57 | #9 (permalink) |
Новичок
Регистрация: 16.12.2008
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Привет всем! Помогите мне пожалуйста с массивами в паскале. Я просто ниразу не делал лабы в паскале. Кто сможет помогите плиз.
Лабораторная работа « Одномерные массивы». Вводится длина одномерного массива (вектора) и значения его элементов. 1) Составить и вывести на экран новый массив с номерами элементов исходного массива, которые равны заданному значению. Заданное значение вводится с клавиатуры. 2) Поменять местами максимальный и минимальный элементы массива. Вывести измененный массив на экран. 3) Все элементы массива, меньшие заданного значения, и их номера записать в новые массива. Вывести новые массивы на экран. Заданное значение вводится с клавиатуры. 4) Вводится дополнительный массив разрешенных значений. Определить и вывести на экран, сколько элементов исходного массива имеют разрешенные значения. 5) Вводится дополнительный массив разрешенных значений. Составить массив из элементов исходного массива, имеющих неразрешенные значения. Вывести результативный массив на экран. 6) Составить и вывести на экран массив с М максимальными значениями исходного массива. М вводится дополнительно. 7) Переписать элементы массива в обратном порядке на том же месте. Вывести измененный массив на экран. 8) Составить и вывести на экран массив из различных элементов исходного массива. 9) Cоставить и вывести на экран массив номеров элементов исходного вектора, встречающихся один раз. 10)Составить и вывести на экран два массива: массив повторяющихся элементов исходного массива и массив их частот. |
16.12.2008, 12:58 | #10 (permalink) |
Новичок
Регистрация: 16.12.2008
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Вот еще одна. помогите плиз.
Лабораторная работа «Двумерные массивы». Ввести размер прямоугольной матрицы и значения ее элементов. Построить вектор В, где В(i) - 1) число неотрицательных элементов в i-ой строке. 2) среднее арифметическое положительных элементов в i-ом столбце. 3) минимальное значение в i-ой строке. 4) максимальное значение в i-ом столбце. 5) номер максимального значения в i-ой строке. 6) номер минимального значения в i-ом столбце. 7) число элементов i-ой строки, значения которых меньше заданного значения. 8) значение элемента матрицы, не равное заданному значению. 9) равно 1, если значения элементов i-ой строки упорядочены по возрастанию, и 0, в противном случае. 10) количество простых чисел в i-ой строке. |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|