Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Delphi, Kylix and Pascal


Закрытая тема
 
Опции темы Опции просмотра
Старый 10.12.2008, 02:58   #1 (permalink)
sweeney
Member
 
Регистрация: 10.12.2008
Сообщений: 13
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Паскаль. Задача на массивы

Помогите решить пожалууйста)

Нужно написать программу на языке Паскаль, которая осуществляет обработку двумерного массива.

Задание:

Дана прямоугольная матрица.
Определить количество столбцов, произведение элементов которых меньше 5.


Условия:

Элементы массива вещественного типа.
Массив объявляется размером 10 на 10 .
Размеpность рабочего массива задается пользователем, но не более 10 строк и не более 10 столбцов (при вводе пользователем большего значения чем 10 программа должна предложить повторно ввести неверно заданный параметр).
Ввод значений массива осуществляется с консоли или из файла (по выбору пользователя).

Результат pаботы пpогpаммы (исходный массив в виде матрицы и искомый параметр с соответствующими пояснениями) выводится на экpан и в файл.


Помогиите)))
sweeney вне форума  

Старый 10.12.2008, 02:58
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Проблему будет решать проще, если набраться информации из похожих топиков

Массивы. Паскаль
Паскаль, три задачи на массивы
Задача на массивы в Паскале

Старый 10.12.2008, 19:02   #2 (permalink)
bubuka
Member
 
Аватар для bubuka
 
Регистрация: 23.01.2008
Сообщений: 1,110
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 141
По умолчанию

если никто не обгонит завтра к 12 дня будет выложен текст программы
а сейчас пора с работы домой)))
bubuka вне форума  
Старый 10.12.2008, 20:00   #3 (permalink)
sweeney
Member
 
Регистрация: 10.12.2008
Сообщений: 13
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Буду очень благодарен)
sweeney вне форума  
Старый 10.12.2008, 20:36   #4 (permalink)
sweeney
Member
 
Регистрация: 10.12.2008
Сообщений: 13
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Цитата:
Сообщение от bubuka Посмотреть сообщение
если никто не обгонит завтра к 12 дня будет выложен текст программы
а сейчас пора с работы домой)))
Так, уже не нужно, друг помог сделать)) Но есть новая задача:

В одномерном массиве, состоящем из n вещественных элементов, вычислить:

1. максимальный по модулю элемент массива;
2. сумму элементов массива, расположенных между первым и
вторым положительными элементами.

Преобразовать массив таким образом, чтобы элементы, равные
нулю, располагались после всех остальных.


Это поможете сделать? Пожалуйста)
sweeney вне форума  
Старый 15.12.2008, 13:03   #5 (permalink)
AlexZir
support
 
Аватар для AlexZir
 
Регистрация: 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.
Содержимое файла in.txt:
Код:
10.1 
2.11 
3.12
2.1 
2.3 
1.1
3.2 
2.1 
0.2
Содержимое файла out.txt:
Код:
10.100000 2.110000 3.120000 
2.100000 2.300000 1.100000 
3.200000 2.100000 0.200000 
В массиве количество столбцов, произведение элементов которых меньше 5, равно 1
__________________
Убить всех человеков!
AlexZir вне форума  
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 15.12.2008, 13:04   #6 (permalink)
AlexZir
support
 
Аватар для AlexZir
 
Регистрация: 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.
__________________
Убить всех человеков!
AlexZir вне форума  
Старый 15.12.2008, 20:49   #7 (permalink)
bubuka
Member
 
Аватар для bubuka
 
Регистрация: 23.01.2008
Сообщений: 1,110
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 141
По умолчанию

у студентов приближается сдача сессии - надо как то делать лабы по информатике )))
bubuka вне форума  
Старый 15.12.2008, 21:42   #8 (permalink)
sweeney
Member
 
Регистрация: 10.12.2008
Сообщений: 13
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Всем огромное спасибо))) извините, что долго не благодарил, но все равно)) все спасибо)) ну тоесть спасибо вам, AlexZir ) большое-большое)
Да, приближается сессия, только лабы не по информатике, а по программированию)хаха
sweeney вне форума  
Старый 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
Закрытая тема


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 08:46.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.