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

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

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

2 страниц V  1 2 >  
 Ответить  Открыть новую тему 
> массивы, памогите понять массивы
maksimla
сообщение 11.02.2008 17:50
Сообщение #1


Знаток
****

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

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


можете малинькие программки написать чтобы понять массивы?
а вот и массив

type masyvas = array [1..5] of integer;
var mas: masyvas;
i, k: integer;


мне надо узнать чему будет равняется mas[4] выполнив такое

a) for i := 1 to 5 do
mas[i] := i;
b) k := 15;
for i := 1 to 5 do
mas[i] := k + i;
c) for i := 5 downto 1 do
mas[i] := i;
d) k := 1;
for i := 10 to 14 do
begin
mas[k] := i;
k := k + 1
end;


а мои ответы вот
a)4
b)19
c)2
d)6
правильна
а попоже исче выложу что я нипонял


--------------------
Учусь первый год на программиста в колледже. Учусь на втором курсе в школе программирования при научно-исследовательском институте математики и информатики.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 11.02.2008 18:00
Сообщение #2


Гость






Цитата
правильна
Не совсем... Варианты C и D пересмотри повнимательнее...

Кстати, вот сюда заходил:
1. Массивы. Матрицы. Типичные задачи.
2. решения: МАТРИЦЫ, МАССИВЫ. задачи
?
 К началу страницы 
+ Ответить 
maksimla
сообщение 11.02.2008 18:22
Сообщение #3


Знаток
****

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

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


вот сам написал ради проверки
c)

type masyvas = array [1..5] of integer;
var mas: masyvas;
i, k: integer;
begin
for i := 5 downto 1 do
begin
mas[i] := i;
writeln(mas[i]);
end;
readln
end.


вот что выводит на экран
5
4
3
2
1
и ответ должен быть 2
а вот и следущий чевота ниполучается но написал так
d)

type masyvas = array [1..5] of integer;
var mas: masyvas;
i, k: integer;
begin
k := 1;
for i := 10 to 14 do
begin
mas[k] := i;
k := k + 1 ;
writeln(k);
end;
readln
end.


а вот что на экране
2
3
4
5
6
и ответ 5
так в чуем неправильна


--------------------
Учусь первый год на программиста в колледже. Учусь на втором курсе в школе программирования при научно-исследовательском институте математики и информатики.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 11.02.2008 18:30
Сообщение #4


Гость






Цитата
и ответ должен быть 2
Нет, не 2. Ты распечатываешь элементы не с 1-го к 5-му, а от 5-го к первому. Распечатай индекс:
for i := 5 downto 1 do
begin
mas[i] := i;
writeln('mas[', i, '] = ', mas[i]);
end;
, и ты поймешь о чем я...

Добавлено через 1 мин.
То же самое и дальше. Ты с какой стати печатаешь К, если спрашивал, какое значение будет иметь mas[4]?
 К началу страницы 
+ Ответить 
maksimla
сообщение 11.02.2008 18:57
Сообщение #5


Знаток
****

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

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


c)4
d)14
во сечас правильно а в проге ошибку выдает пачему

type masyvas = array [1..5] of integer;
var mas: masyvas;
i, k: integer;
begin
k := 1;
for i := 10 to 14 do
begin
mas[k] := i;
k := k + 1 ;
writeln('mas[', i, '] = ', mas[k]);
end;
readln
end.



--------------------
Учусь первый год на программиста в колледже. Учусь на втором курсе в школе программирования при научно-исследовательском институте математики и информатики.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 11.02.2008 19:22
Сообщение #6


Гость






Цитата
d)14
Почти...

Цитата
а в проге ошибку выдает
Ошибку не выдает, но ты не видишь правильных результатов. Надо печатать то же значение индекса, с которым производилось действие, ДО его увеличения:

type masyvas = array [1..5] of integer;
var mas: masyvas;
i, k: integer;
begin
k := 1;
for i := 10 to 14 do
begin
mas[k] := i;
writeln('mas[', k, '] = ', mas[k]);
k := k + 1 ;
end;
readln
end.
 К началу страницы 
+ Ответить 
maksimla
сообщение 11.02.2008 19:40
Сообщение #7


Знаток
****

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

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


вот другая задача

const a = ...;
b = ...;
type mas = array[a..b] of integer;
procedure MinMax (m: mas;
var min, max: integer);
var k, t: integer;
begin
min := m[a]; max := m[a + 1];
for k := a + 2 to b do
begin
t := m[k];
if t < min then min := t;
if t > max then max := t
end;
end;


когда m=(4, 8, 12, 3, 2, 17), то получается такие результаты min = 2, max = 17.когда m = (8, 4, 17, 3, 2,
12),резултаты такие же самие в обоих случаях правильна,но можна подобрать первичные данные чтобы результат процедуры был неправильный.
подберите такие первичные данные и укажите в чом ошибка
я тут нипонел как там а и b что с ними делать и куда нада ввадить ети данные


--------------------
Учусь первый год на программиста в колледже. Учусь на втором курсе в школе программирования при научно-исследовательском институте математики и информатики.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Client
сообщение 11.02.2008 20:07
Сообщение #8


Профи
****

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

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


m=(6,5,4,3,2,1) так попробуй
min := m[a]; max := m[a + 1];
for k := a + 2 to b do
вот здесь ошибка, лучше max и min присвоить m[a] а потом с a+1 до b искать max и min
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
maksimla
сообщение 12.02.2008 19:10
Сообщение #9


Знаток
****

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

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


скока элементов имеет каждый массив

var t: array[1..30] of real;
seka: array[0..200] of real;
s : array[-1..0] of integer;
ss : array[-1..5] of integer;
log : array[-2..2] of boolean;
sek : array[-100..100] of real.

па моему
t= 30;
seka=201 ;
s = 2;
ss= 6;
log = 5;
sek = 201;
провелна


--------------------
Учусь первый год на программиста в колледже. Учусь на втором курсе в школе программирования при научно-исследовательском институте математики и информатики.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
renesko1
сообщение 12.02.2008 19:15
Сообщение #10


поиск
****

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

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


ss имеет 7 элементов

Сообщение отредактировано: renesko1 - 12.02.2008 19:18


--------------------
typedef void Śūnyatā ;
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
maksimla
сообщение 12.02.2008 20:32
Сообщение #11


Знаток
****

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

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


написаны 3 функции массива наименьшего найти

a) function A (m: array[k..n: integer] of real): integer;
var maž: real; { Mažiausias elementas }
nr, { ir jo numeris }
i: integer;
begin
maž := m[k]; nr := k;
for i := k + 1 to n do
if maž > m[i]
then begin
maž := m[i];
nr := i
end;
A := nr
end;
b) function B (m: array[k..n: integer] of real): integer;
var maž: real; { Mažiausias elementas }
nr, { ir jo numeris }
i: integer;
begin
maž := m[n]; nr := n;
for i := n - 1 downto k do
if maž > m[i]
then begin
maž := m[i];
nr := i
end;
B := nr
end;
c) function C (m: array[k..n: integer] of real): integer;
var maž: real; { Mažiausias elementas }
nr, { ir jo numeris }
i: integer;
begin
maž := m[k]; nr := k;
for i := k + 1 to n do
if maž >= m[i]
then begin
maž := m[i];
nr := i
end;
C := nr
end;


а они эквивалентные. почему?
мой ответ
да они эквивалентные. a и b одинаковы толко разница в > i >= , а c обратнай а.
правильно?

Сообщение отредактировано: maksimla - 12.02.2008 20:43


--------------------
Учусь первый год на программиста в колледже. Учусь на втором курсе в школе программирования при научно-исследовательском институте математики и информатики.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 12.02.2008 20:54
Сообщение #12


Гость






Они НЕ эквивалентные, потому как одна из этих функций находит индекс первого вхождения минимального элемента, а еще 2 - индекс последнего вхождения. А это значит, что на одних и тех же входных данных ты получишь разные результаты, так о какой эквивалентности ты говоришь?

Сообщение отредактировано: volvo - 12.02.2008 20:54
 К началу страницы 
+ Ответить 
renesko1
сообщение 12.02.2008 20:58
Сообщение #13


поиск
****

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

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


Если я не ошибаюсь, эти функции возращают номер элемента в котором находится
наибольшее значение.

В A идет проход от первого элемента к последнему, в B идет проход от последнего элемента к первому,
результат один.(если в массиве 1 max элемент)

Но если массив ,к примеру, (1, 2, 4, 1.3, 4) то в A ответ: 3 , а в В ответ: 1.
Это связано с тем что знак строго больше.

А С аналогичен A только условие >= , а не > поэтому в ответ запишится номер последнего max элемента.

ps
я сам новичок поэтому могут быть ошибки


--------------------
typedef void Śūnyatā ;
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
maksimla
сообщение 12.02.2008 21:14
Сообщение #14


Знаток
****

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

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


имеем
 type diena = (vakar, šiandien, rytoj);
vektorius = array [1..30] of real;
var a: vektorius;
b: array [-2..2] of (x, y, z);
c: array ['0'..'9'] of vektorius;
d: array [diena] of 0..23;

каждаму массиву a,b,c,d укажите:
a) скока в нем есть элиментов;
b)какие значение могут иметь элименты;
c)как указать первый и последний элимент;
мои ответы
a) a =real, b= (x,y,z) ,c=real,d= 0..23;
b)?
c)?


--------------------
Учусь первый год на программиста в колледже. Учусь на втором курсе в школе программирования при научно-исследовательском институте математики и информатики.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 12.02.2008 21:22
Сообщение #15


Гость






a) A: 30; B: 5; C: 10; D: 3;
b) A: real; B:(x, y, z); C: array of real; D: 0 .. 23;
c) A[1] и A[30]; B[-2] и B[2]; C['0'] и C['9']; D[vakar] и D[rytoj]

Ты бы про систему типов что-нибудь почитал что-ли? А то вопросы - из тех, которые рассматриваются на первых страницах книг по Паскалю обычно...

P.S. Насколько же в Ada проще работа с массивами...
 К началу страницы 
+ Ответить 
maksimla
сообщение 12.02.2008 22:20
Сообщение #16


Знаток
****

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

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


а ты мог бы за неделю пройти все про массивы и запись в файл самостоятельно с нуля все и ище в школи учится? может посоветуешь книгу скачать чтобы все изучать?
вот исчо пару задачь
const n =...;
type masyvas = array[1..n] of integer;
procedure Tvarka(m: masyvas);
var c: integer; { Masyvo elementas }
i, k: 1..n; { Masyvo indeksai }
begin
for k := 1 to n – 1 do
for j := 1 to n – k do
if m[j] > m[j + 1] then
begin {Du elementai keičiami vietomis}
c := m[j + 1];
m[j + 1] := m[j];
m[j] := c
end;
end;

какой будет прцедуры результат (массив m значение) если перед процедурой,этот массив (точнее,массива m факта параметр) значение было 55 22 44 22, о n = 4.
что выполняет эта процедура


--------------------
Учусь первый год на программиста в колледже. Учусь на втором курсе в школе программирования при научно-исследовательском институте математики и информатики.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
renesko1
сообщение 12.02.2008 23:21
Сообщение #17


поиск
****

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

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


я сам начал изучать pascal c 0 + школьная программа
не знаю где скачать но есть хорошая книжка
учебник для вузов
т.а.павловская
паскаль
программирование на языке выс. уровня
издательство "питер"

ps
там с начала до " обьекты в динам. памяти


--------------------
typedef void Śūnyatā ;
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 12.02.2008 23:24
Сообщение #18


Гость






Цитата
какой будет прцедуры результат
Никакой не будет - процедура не возвращает результат. Вот об этом я и говорю, ты не знаешь основ, а хочешь продвигаться дальше - будешь натыкаться на грабли постоянно...

У тебя в процедуру массив передается по значению, ты с ним можешь делать все что угодно - после выхода из процедуры он не изменится.
 К началу страницы 
+ Ответить 
maksimla
сообщение 13.02.2008 12:10
Сообщение #19


Знаток
****

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

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


jasna

Сообщение отредактировано: maksimla - 13.02.2008 17:58


--------------------
Учусь первый год на программиста в колледже. Учусь на втором курсе в школе программирования при научно-исследовательском институте математики и информатики.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
maksimla
сообщение 16.02.2008 18:59
Сообщение #20


Знаток
****

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

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


задачу решите пожалста .
сделаите програмку
если выстрелить N раз. если попадет премия 2 дополнительных патрона. в фаиле tiras.txt в первай строчке написана число N. В других N строчках вписан ноль (0) если непопал, а если попал (1). если выстрел был удачный в этойже строчке о дополнителных точности выстрела.
пример
5 семь выстрлов удачных
0
1 0 0
1 1 0 0 0
0
1 0 1 1 1 0 0 0 0
напишите программу каторая в фаил taikyk.txt написала скока выстрелов удачных.
в программе нельзя применять eoln и eof функций вместо их пишите циклы.


следущая задача
радился у отца сын и он решил откладывать деньги на свадьбу сына. первичные данные считываются с файла Pinigai.txt. В первой строчке напишите на угад когда сын женится натуральное число. скоко он будет лет собирать.
каждый год откладывает деньги.
пример
18
100
100
100
150
200
68
300
100
300
500
20
30
38
80
90
30
100
1000
вот ответ 3306
напишите программу скока денег собрал в фаил Ves.txt.
вот сделал сам
правильна
program vestuves;
var n,
a,b, i: integer;
pradDuom,
rezult: text;
begin
assign (pradDuom, 'Pinigai.TXT');
assign (rezult, 'Vest.TXT');
reset (pradDuom);
rewrite (rezult);
read (pradDuom, n);
for i := 1 to n do
begin
read (pradDuom, a);
b := b + a;
end;
write (rezult, b);
close (pradDuom);
close (rezult)
end.



и последняя задача
акций курс постоянна меняется. акции лутше покупать когда они дешевые а продавать когда дорогие.
первичные данные - курс акций в первый день года и их изменение в массиве в каторам указываем на скока поднялась акция по сравнению с прошлым днем (от 2 до 365 года дней ).
напишите
а) идеи решения
б) процедуру , результатам было бы два числа
1 кагда акция наивыгодней покупать
2 кагда акцию выгодней продать.
пример 1 дне года акция была 155,5 а потом минялась так :
Metų diena 2 3 4 5 6 7 8 9 10 11 12 13 14
Akcijų kurso pokytis 2 0,5 –1 1,5 –2 –3 –1,5 1 1,5 0,5 6 –0,5 0
значит наивыгодней покупать акции 8 дня , а продать 12 дня.
первичные данные вводите в один массив каторый написан так
Код
const MAX = 365
type Tpokytis = array [1..MAX] of real;

первичных данных массив назовите pokytis
а резултаты переменных назовите dPirkti и dParduoti.
зделайте программу.


--------------------
Учусь первый год на программиста в колледже. Учусь на втором курсе в школе программирования при научно-исследовательском институте математики и информатики.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 



- Текстовая версия 18.07.2025 14:05
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"