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

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

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

2 страниц V  1 2 >  
 Ответить  Открыть новую тему 
> двумерный массив
KATYSHA
сообщение 16.11.2005 19:13
Сообщение #1


Гость






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

Заранеее ОГРОМНОЕ СПАСИБО give_rose.gif
 К началу страницы 
+ Ответить 
volvo
сообщение 16.11.2005 19:27
Сообщение #2


Гость






Самый простой вариант:
const
m = 3; { число строк }
n = 4; { число столбцов }

var
a: array[1 .. m, 1 .. n] of real;
i_min, i_max, i, j: integer;
sum_plus, sum_minus: real;
begin
{ ввод матрицы }
for i := 1 to n do
for j := 1 to n do begin
write('a[', i:3, j:3, '] = '); readln(a[i, j]);
end;


for i := 1 to m do begin

sum_plus := 0; sum_minus := 0;
i_min := 1; i_max := 1;
for j := 1 to n do begin
if a[i, j] < a[i, i_min] then i_min := j;
if a[i, j] > a[i, i_max] then i_max := j;

if a[i, j] < 0 then sum_minus := sum_minus + a[i, j]
else sum_plus := sum_plus + a[i, j];
end;
a[i, i_min] := sum_minus;
a[i, i_max] := sum_plus;

end;

{ вывод матрицы }
for i := 1 to n do begin
for j := 1 to n do
write(a[i, j]:6:2);
writeln;
end;

end.
 К началу страницы 
+ Ответить 
KATYSHA
сообщение 16.11.2005 21:46
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 48
Пол: Женский
Реальное имя: Катюшка

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


Цитата(volvo @ 16.11.2005 19:27)
Самый простой вариант:


Спасибо огромное!!! !priva1.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
KATYSHA
сообщение 16.11.2005 21:57
Сообщение #4


Новичок
*

Группа: Пользователи
Сообщений: 48
Пол: Женский
Реальное имя: Катюшка

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


А как со сроками сделать и файлами?Помоги ещё разок пожалуйста. blush.gif
1.
Дана строка символов.Группы символов,разделенные одним или несколькими пробелами и не содержащие пробелов внутри себя,будем называть словами.получить логический вектор,элемент которого истина,если в слове четное кол-во символов и ложь-впротивном случае.
2.
Дан файл вещественных чисел.Если среднее арифметическое его компонент превышает значение максимального эл-та файла,удалить из него все отрицательные эл-ты,в противном случае- удалить все положительные.

ЗАРАНЕЕ СПАСИБО ОГРОМНОЕ ПРЕОГОРОМНОЕ!!!!! !flowers.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 17.11.2005 8:05
Сообщение #5


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

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

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


Эхх, я тут посмотрел, на форуме начались дни добрых дел и выкладывания полных решений, так что держи :
lol.gif
про строки
uses crt;

const

limits = [#0..#32,'.',',',':',';','!','?','"'];
type

TWords = array[1..40] of string;
TLogic = array[1..40] of boolean;

var
text : string;
words : TWords;
logic : TLogic;

function GetWords(s : string; var w : TWords; var L : TLogic) : byte;
var
i,back,n : byte;
begin
i := 1;
n := 0;
while(i<=length(s)) do begin
while(i<=length(s)) and (s[i] in limits) do
inc(i);
if i<=length(s) then begin
back := i;
while(i<=length(s)) and not(s[i] in limits) do
inc(i);
inc(n);
w[n] := copy(s, back, i-back);
L[n] := not(odd(length(w[n])));
end;
end;

GetWords := n;
end;

var
i,j : byte;

begin

clrscr;

write('text = '); readln(text);

j := GetWords(text, words, logic);

for i := 1 to j do writeln(words[i],' ', logic[i]:10);

readln;

end.


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


Профи
****

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

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


Цитата(KATYSHA @ 16.11.2005 21:57)
2. Дан файл вещественных чисел.Если среднее арифметическое его компонент превышает значение максимального эл-та файла,удалить из него все отрицательные эл-ты,в противном случае- удалить все положительные.

Cреднее арифметическое компонентов файла всегда будет меньше или равно значению максимального эл-та файла. Может имелось в виду последнего элемента файла?


--------------------
Никогда не жадничай. Свои проблемы с любовью дари людям!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
KATYSHA
сообщение 17.11.2005 10:27
Сообщение #7


Новичок
*

Группа: Пользователи
Сообщений: 48
Пол: Женский
Реальное имя: Катюшка

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


Спасибо огромное!!!! give_rose.gif А можно узнать кем ты работаешь??? kiss2.gif

Добавлено (через 4 минуты):
Цитата(hiv @ 17.11.2005 8:23)
Cреднее арифметическое компонентов файла всегда будет меньше или равно значению максимального эл-та файла. Может имелось в виду последнего элемента файла?


Я переписала задание как есть wacko.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 17.11.2005 14:56
Сообщение #8


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

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

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


Цитата
Я переписала задание как есть


Тогда решение будет бессмысленно ... Уточни задание у препода.


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


Новичок
*

Группа: Пользователи
Сообщений: 48
Пол: Женский
Реальное имя: Катюшка

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


препод говорит,что всё правильно и думать надо blink.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 17.11.2005 16:25
Сообщение #10


Гость






KATYSHA, это невозможно...
Когда среднее арифметическое N элементов максимально? Когда все эти элементы одинаковы, так?

Допустим, все элементы одинаковы и равны "Х", тогда и среднее арифметическое равно "X". РАВНО, но не БОЛЬШЕ !!! Увеличим один элемент на значение "Y", тогда ср. арифметическое увеличится на Y/N, что заведомо меньше чем Y... Так что ср. арифметическое просто НЕ МОЖЕТ быть больше макс. элемента массива...

Так что пускай твой препод сам пошевелит тем, что у него вместо мозгов, и даст другое задание или переформулирует это...
 К началу страницы 
+ Ответить 
KATYSHA
сообщение 18.11.2005 10:41
Сообщение #11


Новичок
*

Группа: Пользователи
Сообщений: 48
Пол: Женский
Реальное имя: Катюшка

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


Кстати,эта программка не работает,klim4(которую ты вначале писал мне) nea.gif Когда вводишь значения,они как бы по кругу идут...............что-то там не то.И объясни,пли з,что за строка вначале limits и почему там в скобках с решеткой числа???

Сообщение отредактировано: KATYSHA - 18.11.2005 10:42
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 18.11.2005 10:55
Сообщение #12


Гость






To: KATYSHA
Пример значений, которые вводишь, приведи... Ненадо просто так говорить, что программа "не работает"... Тестируем мы программы все-таки... dry.gif
 К началу страницы 
+ Ответить 
KATYSHA
сообщение 18.11.2005 12:29
Сообщение #13


Новичок
*

Группа: Пользователи
Сообщений: 48
Пол: Женский
Реальное имя: Катюшка

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


Ну программа то работает,но как-то неправильно.там не должно быть столько значений,когда запускаешь её.Там появляется очень много векторов
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 18.11.2005 12:36
Сообщение #14


Гость






Замени основную программу вот на такую:
begin
clrscr;
write('text = '); readln(text);
j := GetWords(text, words, logic);
for i := 1 to j do write(logic[i]:6);
writeln;

readln;
end.

получишь распечатку только "логического" вектора...
 К началу страницы 
+ Ответить 
KATYSHA
сообщение 18.11.2005 12:56
Сообщение #15


Новичок
*

Группа: Пользователи
Сообщений: 48
Пол: Женский
Реальное имя: Катюшка

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


Спасибо,попробую.Если не так я скажу или покажу примерную программу,потому что я просто не могу объяснить как именно она должна выглядеть. wink.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
KATYSHA
сообщение 18.11.2005 18:46
Сообщение #16


Новичок
*

Группа: Пользователи
Сообщений: 48
Пол: Женский
Реальное имя: Катюшка

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


Цитата(klem4 @ 17.11.2005 8:05)
Эхх, я тут посмотрел, на форуме начались дни добрых дел и выкладывания полных решений, так что держи :
lol.gif
про строки
uses crt;

const

limits = [#0..#32,'.',',',':',';','!','?','"'];
type



Обьясни пожалуйста что за строка такая limits ???? wacko.gif можно как нибудь обойтись в программе без этого limits ну или хотя бы заменить как-нибудь её?

wink.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 18.11.2005 18:50
Сообщение #17


Гость






KATYSHA, это список символов, которыми могут разделяться слова. Следовательно, обойтись без этого можно ТОЛЬКО тогда, когда ты на 100% уверена, что ничего кроме пробелов для разделения слов во введенной тобой строке использоваться НЕ будет...
Тогда поменяй в функции вот так:
   while(i<=length(s)) do begin
while(i<=length(s)) and (s[i] = ' ') do inc(i);
if i<=length(s) then begin
back := i;
while(i<=length(s)) and (s[i] <> ' ') do inc(i);
inc(n);
w[n] := copy(s, back, i-back);
L[n] := not(odd(length(w[n])));
end;
end;
 К началу страницы 
+ Ответить 
KATYSHA
сообщение 18.11.2005 21:37
Сообщение #18


Новичок
*

Группа: Пользователи
Сообщений: 48
Пол: Женский
Реальное имя: Катюшка

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


Это вначале поменять вместо той строки?или это по-моему в середине где-то должно быть кажись rolleyes.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
arhimag
сообщение 18.11.2005 21:38
Сообщение #19


Знаток
****

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

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


Я думаю что гдето в середине!


--------------------
Чего хочет женщина – того хочет Бог
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 18.11.2005 21:51
Сообщение #20


Гость






Цитата
Я думаю что гдето в середине!

yes2.gif В середине... Вместо почти аналогичного куска в программе klem4
Вот так будет выглядеть измененная функция GetWords полностью:

function GetWords(s : string; var w : TWords; var L : TLogic) : byte;
var
i,back,n : byte;
begin
i := 1;
n := 0;
while(i<=length(s)) do begin
while(i<=length(s)) and (s[i] = ' ') do inc(i);
if i<=length(s) then begin
back := i;
while(i<=length(s)) and (s[i] <> ' ') do inc(i);
inc(n);
w[n] := copy(s, back, i-back);
L[n] := not(odd(length(w[n])));
end;
end;

GetWords := n;
end;
 К началу страницы 
+ Ответить 

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

 



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