IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Две задачки, Задачи по масивам
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 3
Пол: Мужской
Реальное имя: Дима

Репутация: -  0  +


Помогите кто может решить двезадачки

Задача №1
В одномерном массиве целых чисел определить количество нечетных элементов менших константы С.

Задача №2
Дано двухмерный массив действительных чисел. Определить номер строки, в которой находиться максимальное число, а также номер столбца, в котором находиться минимальное число массива. Если индексы кратные, то заменить диагональные элементы массива единицей.

Сообщение отредактировано: Predator04 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Смотрю...
*****

Группа: Пользователи
Сообщений: 1 055
Пол: Мужской
Реальное имя: Пшеничный Алексей Анатольевич

Репутация: -  6  +


Задачки очень простые.

Попробуй сначала посмотреть здсь: http://forum.pascal.net.ru/index.php?showtopic=2694

Если не поможет - задавай здесь более конкретные вопросы, объясни что вызывает трудности.


--------------------
Если что-то не делает того, что вы запланировали ему делать - это еще не означает, что оно бесполезно.
--------------------
Прежде, чем задать вопрос - Правила :: FAQ :: Поиск
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3





Группа: Пользователи
Сообщений: 3
Пол: Мужской
Реальное имя: Дима

Репутация: -  0  +


Уменя есть вариант первой задачи но он не работает.

Код

Program zada4a1;
Const
C = 5;
Max = 10;
Var
a : array[0..Max] of Integer;
i : Byte;
Res : Integer;

Procedure InputMass(Var a : array of integer);
begin
Randomize;
WriteLn('Zadannii massiv ==>');
For i := 1 to Max do
begin
a[i] := Random(10);
Write(a[i] : 3);
end;
end;

Procedure Calculate(a : array of Integer; Var Res : Integer);
begin
for i := 1 to Max do
if (a[i] mod 2) <> 0 then
if a[i] < C then
inc(Res);
end;

begin
InputMass(a);
Calculate(a,res);
WriteLn('Kol-vo elementov ===> ',Res);
end.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Во-первых, почему именно процедура? С функцией не было бы проще?

Function Calculate(var a : array of Integer): Integer;
var
i: integer;
res: integer;
begin
res := 0;
for i := 0 to Max do
if Odd(a[i]) and (a[i] < C) then inc(Res);
Calculate := res;
end;

А потом использовать вот так:
begin
InputMass(a);
WriteLn('Kol-vo elementov ===> ',Calculate(a));
end.


Ну, и потом: ты описываешь массив A как массив с индексами [0 .. Max], а при его вводе в процедуре Input почему-то нулевой элемент игнорируешь (да и в Calculate тоже)...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Знаток
****

Группа: Пользователи
Сообщений: 303
Пол: Мужской
Реальное имя: Роман

Репутация: -  2  +


  1. никогда не объявляй имена глобальных переменных, что и локальные.
  2. переменные цикла НИКОГДА не объявляй глобальными. Это ведёт к необъяснимым ошибкам.
  3. переменной Res не задано начальное значение. Это ведёт к необъяснимым ошибкам. Твоё счастье, что компилятор позаботился об обнулении переменной. Это верно лишь для некоторых типов...
Итак, правильным кодом будет

Program zada4a1;

Const
C = 5;
Max = 10;

Var
M : array [0..Max] Of Integer;
Result : Integer;

Procedure InputMass(Var a : Array Of integer);
var
i: integer;
Begin
Randomize;
Write ('Zadannii massiv ==>');
For i := 1 To Max Do
Begin
a[i] := Random(10);
Write(a[i] : 3);
End;
End;

Procedure Calculate(a : Array Of Integer; Var Res : Integer);
var
i: integer;
Begin
For i := 1 To Max Do
If (a[i] Mod 2) <> 0 Then
If a[i] < C Then
inc(Res);
End;

Begin
InputMass (M);
Calculate (M, Result);
WriteLn;
WriteLn ('Kol-vo elementov ===> ', Result);
readln;
End.



--------------------
Romiras HomeLab- материалы и статьи по разработке ПО, моделирование алгоритмов, обработка и анализ информации, нейронные сети, машинное зрение и прочее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Знаток
****

Группа: Пользователи
Сообщений: 303
Пол: Мужской
Реальное имя: Роман

Репутация: -  2  +


В целом, структура программы продумана хорошо, это уже радует. Ещё небольшой совет, но очень полезный: делай отступы в программе - так на порядок лучше следить за вложеными циклами, и, к тому же, увеличивается читабельность программы. ;)


--------------------
Romiras HomeLab- материалы и статьи по разработке ПО, моделирование алгоритмов, обработка и анализ информации, нейронные сети, машинное зрение и прочее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7





Группа: Пользователи
Сообщений: 3
Пол: Мужской
Реальное имя: Дима

Репутация: -  0  +


Начало второй задачи.
Код

var
   A array[1..x,1..y] of real
   Max,Min:Real;
   i,j,Str,Sto:integer
   Max:=A[1,1];
   Min:=A[1,1];
   Str:=1;
   Sto:=1;
   for i:=1 to x do
   for j:=1 to y do
begin
       if A[i,j]>Max then
begin
       Max:=A[i,j];
       Str:=i
end;
       if A[i,j]<Min then
begin
       Min:=A[i,j];
       Sto:=j
end;
end;


Сообщение отредактировано: Predator04 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






Predator04, ты вообще читаешь, что тебе пишут?
Цитата(Romtek)
Ещё небольшой совет, но очень полезный: делай отступы в программе

Вот и делай отступы !!! Твои программы ОЧЕНЬ СЛОЖНО читать...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


мозгоклюй
***

Группа: Пользователи
Сообщений: 204
Пол: Мужской
Реальное имя: Юра

Репутация: -  5  +


Код

var
  A array[1..x,1..y] of real
  Max,Min:Real;
  i,j,Str,Sto:integer
 
BEGIN // обычно бегин ставят в начале проги и поаккуратней с синтаксисом

 
for i:=1 to x do   // затем надо бы задать сам массив
  for j:=1 to y do
   readln(A[i,j]);


  Max:=A[1,1];
  Min:=A[1,1];
  Str:=1;
  Sto:=1;

for i:=1 to x do
  for j:=1 to y do
    if A[i,j]>Max then
      begin
         Max:=A[i,j];
         Str:=i;
      end;
    if A[i,j]<Min then
      begin
        Min:=A[i,j];
        Sto:=j;
      end;

END.


дальше помочь не могу - некоректное условие если кратны - ЧЕМУ???
да и вообщемто я думаю остаток программы сможешь и сам дописать
не исключаю ошибок и в моем тексте однако паскаля под рукой нету писал в нотепаде а сам не програмил лет шесть уж...


--------------------
Иногда ответ ближе чем то место где мы его ищем..
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Гость






AruNimotsi, давай все-таки проверять программы перед тем, как постить!
Цитата(Правила раздела)
6. Проверяйте программы перед тем, как запостить их!!!


У тебя же из-за синтаксиса уже на второй строке вылетит ошибка.
Цитата
некоректное условие если кратны - ЧЕМУ???
Все корректно, кратны друг другу.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


мозгоклюй
***

Группа: Пользователи
Сообщений: 204
Пол: Мужской
Реальное имя: Юра

Репутация: -  5  +


Спасибо учту :D

замена диаганальных элементов еденицами:



for i:=1 to n
for j:=1 to n
begin
if i=j then A[i,j]:=1;
if -1*(n-i)=j then A[i,j]:=1;
end; // n - кол-во строк(столбцов)



;)


--------------------
Иногда ответ ближе чем то место где мы его ищем..
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Гость






blink.gif
А это зачем?
if -1*(n-i)=j then A[i,j]:=1;
? Для замены элементов побочной диагонали? Так оно не сработает, потому что n всегда больше i, а j отрицательным быть не может...

Вот правильный вариант:
for i:=1 to n do begin
a[i, i] := 1; a[i, n-i+1] := 1;
end;
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 1.09.2025 20:18
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name