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

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

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

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


Гость






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

Заранеее ОГРОМНОЕ СПАСИБО give_rose.gif
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

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

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


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


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


Новичок
*

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

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


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

ЗАРАНЕЕ СПАСИБО ОГРОМНОЕ ПРЕОГОРОМНОЕ!!!!! !flowers.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Профи
****

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

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


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

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


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


Новичок
*

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

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


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

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


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


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

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

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


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


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


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


Новичок
*

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

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


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


Гость






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

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

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


Новичок
*

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

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


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

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


Гость






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


Новичок
*

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

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


Ну программа то работает,но как-то неправильно.там не должно быть столько значений,когда запускаешь её.Там появляется очень много векторов
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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.

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


Новичок
*

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

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


Спасибо,попробую.Если не так я скажу или покажу примерную программу,потому что я просто не могу объяснить как именно она должна выглядеть. wink.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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;
 К началу страницы 
+ Ответить 
сообщение
Сообщение #18


Новичок
*

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

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


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


Знаток
****

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

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


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


--------------------
Чего хочет женщина – того хочет Бог
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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

 





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