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

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

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

> Задачи на строки и массивы+1 на последовательность
mafia1232
сообщение 1.06.2005 23:30
Сообщение #1


Новичок
*

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

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


У меня есть несколько задач и их надо решить на завтра. Пожалуйста хелп. ОЧЕНЬ НАДО. Вот условия первой:
дан одномерный массив An подсчитать количество четных элементов и их сумму
получилось вот что, но есть ошибки
Исходный код

program p21;
uses crt;
type
vector=array [1..100] of integer;
var
A:vector;
s,i,n,K:integer;
procedure Init(n:integer; var A:vector;ch:char);
var
i:integer;
begin
writeln('vvod elementov massiva ',ch);
for i:=1 to n do
begin
write('vvedite [',i,'] elementov massiva ',ch);
readln(A[i]);
end;
end;
procedure Print(n:integer;A:vector; ch:char);
var
i:integer;
begin
writeln('vivod elementov massiva ',ch);
for i:=1 to n do
write(A[i]:3, ' ');
writeln;
end;
function Rez(n:integer;A:vector):integer;
Var
i,m:integer;
begin
m:=0;
for i:=1 to n do
if (A[i] mod 2=0) then m:=m+1;
Rez:=m;
end;
begin
clrscr;
writeln('vvedite rrazmernost');
readln(n);
Init(n,A,'A');
Print(n,A,'A');
K:=Rez(n,A);
if K=0 then
writeln('chetnix elementov net')
else
writeln('chislo chetnix elementov', K);
readln(K);
s:=s+K;
writeln('symma = ',s);
readln;
end.


Если такие темы существуют, то прошу прощения

Сообщение отредактировано: volvo - 9.09.2005 9:55
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
3 страниц V  1 2 3 >  
 Ответить  Открыть новую тему 
Ответов(1 - 19)
mafia1232
сообщение 1.06.2005 23:34
Сообщение #2


Новичок
*

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

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


Вот условия второй:
сформировать массив Bm элементами которго являются нечетные элементы массива A имеющие четные индексы(не понял последний пункт условий).
исходник на формирования массива из нулевых элементов массива A
Исходный код

program p23;
uses crt;
type
vector=array[1..100] of integer;
var
A,B:vector;
n,k:integer;
procedure vvod(var A:vector; n:integer; ch:char);
var
i:integer;
begin
writeln('vvod elmentov massiva ',ch);
for i:=1 to n do
begin
writeln('vvedite [',i,'] elementov massiva ',ch,' ');
readln(A[i]);
end;
end;
procedure print(A:vector;n:integer; ch:char);
var
i:integer;
begin
writeln('vivod elementov massiva ',ch);
for i:=1 to n do
write(A[i]:3,' ');
writeln;
end;
procedure rez(A:vector;n:integer; Var B:vector;var k:integer);
var
i:integer;
begin
k:=0;
for i:=1 to n do
if A[i]=0 then
begin
k:=k+1;
B[k]:=i;
end;
end;
begin
clrscr;
writeln('vvedite ramernost massiva ');
readln(n);
vvod(A,n,'A');
rez(A,n,B,k);
if k=0 then
writeln('iskomiu massive ne svormirovan')
else
begin
print(A,n,'A');
print(B,k,'B');
end;
readln;
end.


переделайте плиз
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Guest
сообщение 1.06.2005 23:54
Сообщение #3


Гость






2. Замени Rez на вот такой:
procedure rez(A:vector;n:integer; Var B:vector;var k:integer);
var i:integer;
begin
k:=0;
for i:=1 to n do
if (not odd(i)) and odd(A[i]) then begin
k:=k+1; B[k]:=A[i];
end;
end;
 К началу страницы 
+ Ответить 
volvo
сообщение 2.06.2005 0:00
Сообщение #4


Гость






Ну а в первом задании менять придется как Rez так и основной блок программы:
function Rez(n:integer;A:vector; Var Sum: integer):integer;
Var i,m:integer;
begin
m:=0; sum := 0;
for i:=1 to n do
if not odd(A[i]) then begin
inc(m); inc(sum, A[i]);
end;
Rez:=m;
end;

begin
clrscr;
writeln('vvedite rrazmernost');
readln(n);
Init(n,A,'A');
Print(n,A,'A');
K:=Rez(n,A, s);
if K=0 then writeln('chetnix elementov net')
else begin
writeln('chislo chetnix elementov', K);
writeln('symma = ',s);
end;
readln;
end.
 К началу страницы 
+ Ответить 
mafia1232
сообщение 2.06.2005 0:16
Сообщение #5


Новичок
*

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

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


условие задачи номер 3:
Даны 3 прямоугольные матрицы различной размерности.Получить вектор, каждый компонент которого яв-ся числом элементов больше заданного "a"
соответствующий столбцу матрицы

вариант число элементов строки матрицы, также больше "а", введенного с клавы.
Исходный код

Program p25;
uses crt;
type matr=array[1..10,1..10] of integer;
type vector=array[1..10] of integer;
var
n,m:integer;{razmernost' matrizi}
z: integer;{chislo sravneniu}
A,B,C:matr;{isxodnie matrizi}
VA,VB,VC:vector;{rezyl'tat}
{vvod elementov matrizi}
procedure mv(name:char;n,m:integer; var A:matr);
Var
i,j:integer;
begin
for i:=1 to n do
begin
for j:=1 to m do
begin
write(' ',name,'[',i:1,',',j:1,']= ');
readln(A[i,j]);
end;
end;
end;
{prozedyra pechati elementov matrizi}
procedure mp(A:matr;n,m:integer);
var
i,j:integer;
begin
for i:=1 to n do
begin
for j:=1 to m do
write(A[i,j]:4);
writeln;
end;
end;
{prozedyra pechati elementov vectora-rezyl'tata}
procedure mprez(VA:vector;m:integer);
var
i:integer;
begin
for i:=1 to m do
write(VA[i]:4);
writeln;
end;
{prozedyra formirovaniya rezyl'tata}
procedure mr(A:matr;z,n,m:integer;var VA:vector);
var
i,j,k:integer;
begin
for j:=1 to m do
begin
k:=0;
for i:=1 to n do
if A[i,j]>z then k:=k+1;
VA[j]:=k;
end;
end;
begin
clrscr;
writeln('Vvedite chislo dlya sravneniya');
Readln(z);
Writeln('Vvedite razmernost pervou matrizi n i m ');
readln(n,m);
mv('A',n,m,A);
writeln('matriza 1');
mp(A,n,m);
mr(A,z,n,m,VA);
writeln;
writeln('rezyltat');
mprez(VA,m);
readln;
clrscr;
writeln('vvedite ramernost 2 matrizi n i m');
readln(n,m);
mv('B',n,m,B ) ;
writeln('matriza 2');
mp(B,n,m);
mr(B,z,n,m,VB);
writeln;
writeln('rezyltat');
mprez(VB,m);
readln;
clrscr;
writeln('vvedite ramernost 3 matrizi n i m');
readln(n,m);
mv('C',n,m,C);
writeln('matriza 3');
mp(C,n,m);
mr(C,z,n,m,VC);
writeln;
writeln('rezyltat');
mprez(VC,m);
readln;
end.


Сообщение отредактировано: volvo - 9.09.2005 9:56
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 2.06.2005 0:30
Сообщение #6


Гость






Цитата(mafia1232 @ 2.06.05 0:16)
Даны 3 прямоугольной матрицы различной размерности. Получить вектор, каждый компонент которого яв-ся числом элементов больше заданного "a" соответствующий столбцу матрицы

wacko.gif Переведи... Это чего значит?

Погоди, но тут и считается по СТОЛБЦАМ, но никак не по строкам:
procedure mr(A:matr;z,n,m:integer;var VA:vector);
...
begin
for j:=1 to m do begin
k:=0;
for i:=1 to n do
if A[i,j]>z then k:=k+1;
VA[j]:=k;
end;
end;
 К началу страницы 
+ Ответить 
mafia1232
сообщение 2.06.2005 0:33
Сообщение #7


Новичок
*

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

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


прямоугольная матрица значит что у матрицы кол-во столбцов не равно
кол-ву строк. размерность разная значит ты вводищь скоко будет строк и столбцов для каждой матрицы. вот файл если надо

Сообщение отредактировано: mafia1232 - 2.06.2005 0:34


Прикрепленные файлы
Прикрепленный файл  25.PAS ( 1.65 килобайт ) Кол-во скачиваний: 155
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 2.06.2005 0:40
Сообщение #8


Гость






Цитата(mafia1232 @ 2.06.05 0:33)
прямоугольная матрица значит что у матрицы кол-во столбцов не равно кол-ву строк. размерность разная значит ты вводищь скоко будет строк и столбцов для каждой матрицы. вот файл если надо

sad.gif Спасибо огромное за столь ценную информацию - я весь интернет облазил, ничего не нашел про прямоугольные матрицы...

Чего, издеваешься?

Тебе вообще ничего менять не надо... Пост выше читай. Программа которую ты привел именно и работает, как тебе нужно.
 К началу страницы 
+ Ответить 
mafia1232
сообщение 2.06.2005 0:58
Сообщение #9


Новичок
*

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

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


j это столбец а i строка . так что считает прога по строкам
ps: про матрицы я тебе письмо написал. (sorry for флуд)

Сообщение отредактировано: mafia1232 - 2.06.2005 0:59
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
mafia1232
сообщение 2.06.2005 1:08
Сообщение #10


Новичок
*

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

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


еще задачка: из каждой очередной четвертки символов строки удалить вторую пару символов.

пример на то что второю букву в первом слове удаляет из всех остальных слов
program p13;
uses crt;
var
s,s1:string;
i,l:integer;
ch:char;
begin
clrscr;
writeln('vvedite stroky');
readln(s);
ch:=s[2];
l:=length(s);
s1:=' ';
for i:=1 to l do
if s[i]=ch then s1 :=s1
else
s1:=s1+s[i];
writeln('stroka= ',s1);
readln;
end.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 2.06.2005 1:10
Сообщение #11


Гость






Цитата(mafia1232 @ 2.06.05 0:58)
j это столбец а i строка. так что считает прога по строкам

Я дико извиняюсь, но ИМЕННО потому, что J это столбец, а I это - строка, цикл

Код
for j := ...
 for i := ...
   if A[i, j] ...

пройдет по элементам
j = 1: A[1, 1] - A[2, 1] - A[3, 1] ... { 1-ый СТОЛБЕЦ }
j = 2: A[1, 2] - A[2, 2] - A[3, 2] ... { 2-ой СТОЛБЕЦ }
...

По столбцам, следовательно. Что и требовалось доказать...

P.S. Флуд прекращай
 К началу страницы 
+ Ответить 
mafia1232
сообщение 2.06.2005 1:11
Сообщение #12


Новичок
*

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

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


задача еще одна: ввести фамилию, имя , отчество как одну строку, состоящую из слов.
Определить длину строки и кол-во букв "а" в ней. Вывести самое короткое слово.

!Ты бы лучше программы сразу себе писал, чем примеры...!

:low: Мог бы проги писать сразу sad.gif , я бы тогда не спрашивал бы
а про прогу на прямоугольные матрицы A[j,i] должно быть вроде что б по столбцам.

а вот таким способами я решаю задачки :p12: :p1: :ypr:

Сообщение отредактировано: mafia1232 - 2.06.2005 1:36
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 2.06.2005 8:18
Сообщение #13


Гость






Цитата(mafia1232 @ 2.06.05 1:11)
а про прогу на прямоугольные матрицы A[j,i] должно быть вроде что б по столбцам.

У тебя же индекс I изменяется первым - что ты никак понять не можешь, я же тебе привел пример изменения индексов матрицы, внимательно посмотри...

:p12: Вот так почаще делай !!!
 К началу страницы 
+ Ответить 
hiv
сообщение 2.06.2005 8:21
Сообщение #14


Профи
****

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

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


Цитата(mafia1232 @ 2.06.05 2:11)
а вот таким способами я решаю задачки :p12: :p1: :ypr:

У меня другой способ:
:p1: :ypr: :p12: :p1: :ypr: :p12: :p1: :D


--------------------
Никогда не жадничай. Свои проблемы с любовью дари людям!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Guest
сообщение 2.06.2005 8:46
Сообщение #15


Гость






про матрицы понял.
делаю, но не помогает. А оставшиеся 2 сделайте от Сегодня, 01:11 AM и Сегодня, 01:08 AM , а то очень надо.
и спасибо за другие
 К началу страницы 
+ Ответить 
hiv
сообщение 2.06.2005 9:12
Сообщение #16


Профи
****

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

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


Цитата(mafia1232 @ 2.06.05 2:08)
еще задачка: из каждой очередной четвертки символов строки удалить вторую пару символов.

Вот решение из 4-х строк:
program p13;
var
s :string;
i :integer;
begin
writeln('vvedite stroky');
readln(s);
for i:=(length(s) div 4) downto 1 do delete(s,(i-1)*4+3,2);
writeln('stroka=',s);
end.


--------------------
Никогда не жадничай. Свои проблемы с любовью дари людям!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
hiv
сообщение 2.06.2005 9:20
Сообщение #17


Профи
****

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

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


Цитата(mafia1232 @ 2.06.05 2:11)
задача еще одна: ввести фамилию, имя , отчество как одну строку, состоящую из слов. Определить длину строки и кол-во букв "а" в ней. Вывести самое короткое слово.
Длину строки ты уже умеешь определять. А количество считают таким способом:
count:=0;
for i:=1 to length(s) do
if s[i]='a' then inc(count);
Где count - и есть счетчик, который увеличивается на еденицу в цикле когда i-тый символ есть буква a.
Ну а последнее - думаю сам сможешь сделать. Если нет, то выкладывай код - поможем! smile.gif

Сообщение отредактировано: hiv - 2.06.2005 9:21


--------------------
Никогда не жадничай. Свои проблемы с любовью дари людям!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
mafia1232
сообщение 2.06.2005 9:22
Сообщение #18


Новичок
*

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

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


а вопрос что делает команда "downto" а то я не въехал. объясните
а прога работает если строка без пробелов.

в var не надо count прописать а то у меня ругается

Сообщение отредактировано: mafia1232 - 2.06.2005 9:44
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
hiv
сообщение 2.06.2005 9:25
Сообщение #19


Профи
****

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

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


Если TO увеличивает на 1, то DOWNTO уменьшает на 1. УЧИ МАТЧАСТЬ!
А насчет пробелов в задании ничего не было сказано...


--------------------
Никогда не жадничай. Свои проблемы с любовью дари людям!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 2.06.2005 9:33
Сообщение #20


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

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


удаление последней пары из каждой четверки, можно так :

uses crt;
var s:string;
i,bword:integer;

Begin
clrscr;
write('s=');
readln(s);
i:=1;
while(i<=length(s)) do
begin
inc(i,2);
delete(s,i,2);
end;
writeln('s=',s);
readln;
end.




12pp34pp56pp78pp ->>> 12345678

вариан hiv'a компактнее, но мне кажется этот проще для понимания ;)

Сообщение отредактировано: klem4 - 2.06.2005 9:45


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 



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