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

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

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

 
 Ответить  Открыть новую тему 
> Сырой массив
spektr
сообщение 5.12.2006 20:32
Сообщение #1


Пилотус
**

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

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


у меня задача почти сделана только возникают вопросы.

Задача:

Дана матрица размером N на M,вывести количество строк в которых число положительных элементов больше числа отрицательных элементов.

РЕшение:
PROGRAM bolse;
{ўлў®¤ бва®ЄЁ ў Є®в®а®© Ї®«®¦ЁвҐ«м­ле н«Ґ¬Ґ­в®ўЎ®«миҐ зЁб«  ®ваЁж вҐ«м­ле н«Ґ¬Ґ­в®ў}
uses crt;
VAR
A: array [1..100,1..100] of integer;
i,j,n,m,otr,pol,sum : integer;
BEGIN
clrscr;
WriteLn ('Їа®Ја ¬¬  ўлў®¤  бва®ЄЁ ў Є®в®а®© Ї®«®¦ЁвҐ«м­ле н«Ґ¬Ґ­в®ўЎ®«миҐ зЁб«  ®ваЁж вҐ«м­ле н«Ґ¬Ґ­в®ў');
WriteLn ('введите размерность массива i,j');
ReadLn (n,m);
pol:=0;
otr:=0;
sum:=0;
FOR i:=1 to n DO
FOR j:=1 to m do
Begin
WriteLn ('заполните массив');
readLn (A[i,j]);
End;
FOR i:=1 to n DO
BEGIN
FOR j:=1 to m DO
BEGIN
IF A[i,j]>0
Then
pol:=pol+1
Else
otr:=otr+1;
end;
end;
For i:=1 to n do
BEGIN
If pol>otr
then
sum:=sum+1;
end;
WriteLn ('количество строк',sum);
ReadLn
End.




Вопросы:

1.как сделать так чтобы ноль не считался ни за положительное ни за отрицательное а просто опускался.
2.как сделать так чтобы в блокноте буквы кирилицы не становились таробарщиной
3.здесь скорей всего много ошибок помогите пожалуйста найти,в каком смысле много иногда я согласна с ответом программы а иногда нет,не могу найти закономерность.


буду спасибо за любые найденые ошибки,и не сложные объяснения. smile.gif

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
мисс_граффити
сообщение 5.12.2006 21:29
Сообщение #2


просто человек
******

Группа: Модераторы
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

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


1 и 3 твои вопросы:
PROGRAM bolse;
{ўлў®¤ бва®ЄЁ ў Є®в®а®© Ї®«®¦ЁвҐ«мле н«Ґ¬Ґв®ўЎ®«миҐ зЁб« ®ваЁж ⥫мле н«Ґ¬Ґв®ў}
uses crt;
VAR
A: array [1..100,1..100] of integer;
i,j,n,m,otr,pol,sum : integer;
BEGIN
clrscr;
WriteLn ('programa - vyvod....');
WriteLn ('vvedite razmernost matricy i,j');
ReadLn (n,m);
pol:=0;
otr:=0;
sum:=0;
FOR i:=1 to n DO
FOR j:=1 to m do
Begin
WriteLn ('element ',i,' ',j,' raven');
readLn (A[i,j]);
End;
FOR i:=1 to n DO
BEGIN
FOR j:=1 to m DO
BEGIN
IF A[i,j]>0 Then
pol:=pol+1;
if A[i,j]<0 then {чтобы не считал 0, вместо полного условного оператора сделали 2 неполных}
otr:=otr+1;
end;
If pol>otr then {посмотри внимательно на границы цикла... ты анализировала только инфу по последней строке - если она подходила, то ты считала, что подходят все. если не подходила - то все отвергала}
sum:=sum+1;
end;

clrscr;
for i:=1 to n do
begin
for j:=1 to n do
write(A[i,j],' ');
writeln;
end;
WriteLn ('kolvo strok ',sum);
ReadLn
End.


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
spektr
сообщение 6.12.2006 12:13
Сообщение #3


Пилотус
**

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

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


Большое спасибо,ну ведь теперь уже лучше чем в первый раз???
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 6.12.2006 12:24
Сообщение #4


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Цитата(spektr @ 5.12.2006 21:32) *

2.как сделать так чтобы в блокноте буквы кирилицы не становились таробарщиной

Ноутпад - глючная программа..
Рекомендую тебе использовать Far. Скачать можно с их сайта, http://rarlab.com/
Он имеет даже некоторые специальные средства для русского и полезен с этой точки зрения.
Из его редактора ты сможешь копировать тексты в форум.

Если ты не знакома с этой программой, можешь поспрашивать в разделе OС и ПО.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
мисс_граффити
сообщение 6.12.2006 20:45
Сообщение #5


просто человек
******

Группа: Модераторы
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

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


Цитата(spektr @ 6.12.2006 12:13) *

Большое спасибо,ну ведь теперь уже лучше чем в первый раз???

а первый раз - это где? smile.gif
с чем сравнивать-то?


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 6.12.2006 20:52
Сообщение #6


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

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

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


Зачем лишние переменные ?)

If pol > (M - pol)  then ...




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


просто человек
******

Группа: Модераторы
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

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


Цитата(klem4 @ 6.12.2006 20:52) *

Зачем лишние переменные ?)

If pol > (M - pol)  then ...


а нули?


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 6.12.2006 21:07
Сообщение #8


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

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

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


Ну так - то да ... хотя если считать ноль положительным smile.gif С другой стороны можно и не считать ... )) Ноль сложное число ...


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


просто человек
******

Группа: Модераторы
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

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


Цитата(spektr @ 5.12.2006 20:32) *

1.как сделать так чтобы ноль не считался ни за положительное ни за отрицательное а просто опускался.

smile.gif
следуем пожеланиям автора темы...


Да мой косяк, через строчку прочитал "дано". Виноват, исправлюсь. klem4


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
spektr
сообщение 9.12.2006 9:38
Сообщение #10


Пилотус
**

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

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


а он придрался сказал что нужно ввести каких-то 2 вектора чтобы в каждой строке оди считал положительные другой отрицательные а уже потом что бы все это сравнивалось,если честно я не очень поняла,что на до сделать не поможите?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
spektr
сообщение 9.12.2006 10:06
Сообщение #11


Пилотус
**

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

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


задача на двумерный массив сравнивать с этим)))))))))))
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 9.12.2006 12:25
Сообщение #12


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Мисс_Граффити, твой недогляд.. Обнуление счетчиков положительных элементов стояло вне цикла по строкам. Думаю, это и есть причина того, почему препод попросил вывести столбцы положительных и отрицательных элементов - тогда ошибка будет более очевидна. Респект преподу - не лыком шит smile.gif.
Привожу исправленный вариант программы (с восстановленной верхним комментарием - орфография автра сохранена smile.gif)
PROGRAM bolse;
{вывод строки в которой положительны элеметовбольше числа отрицательых элеметов}
uses crt;
VAR
A: array [1..100,1..100] of integer;
i,j,n,m,otr,pol,sum : integer;
BEGIN
clrscr;
WriteLn ('programa - vyvod....');
WriteLn ('vvedite razmernost matricy i,j');
ReadLn (n,m);
FOR i:=1 to n DO
FOR j:=1 to m do
Begin
WriteLn ('element ',i,' ',j,' raven');
readLn (A[i,j]);
End;
sum:=0;
FOR i:=1 to n DO BEGIN
pol:=0; {обнуление pol и otr должно стоять внутри цикла по строкам}
otr:=0;
FOR j:=1 to m DO BEGIN
IF A[i,j]>0 Then
pol:=pol+1;
if A[i,j]<0 then {чтобы не считал 0, вместо полного условного оператора сделали 2 неполных}
otr:=otr+1;
end;
If pol>otr then
sum:=sum+1;
end;

clrscr;
for i:=1 to n do
begin
for j:=1 to n do
write(A[i,j],' ');
writeln;
end;
WriteLn ('kolvo strok ',sum);
ReadLn
End.

Spektr, разберись, в чем была ошибка, и покажи этот вариант препу. Может, он на этот раз не станет настаивать на выводе векторов. Если продолжит - приходи еще, это плевое в общем-то дело.. smile.gif


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
spektr
сообщение 9.12.2006 13:10
Сообщение #13


Пилотус
**

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

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


мож не надо,
у меня информатика = истерика, mega_chok.gif
формула еще со школы осталась.мож сразу и так как это делается???
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Michael_Rybak
сообщение 9.12.2006 13:14
Сообщение #14


Michael_Rybak
*****

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

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


Скачай себе WinMerge и будет тебе удобно сравнивать.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
spektr
сообщение 9.12.2006 13:34
Сообщение #15


Пилотус
**

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

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


Цитата
Скачай себе WinMerge и будет тебе удобно сравнивать.

что это ???
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Michael_Rybak
сообщение 9.12.2006 13:37
Сообщение #16


Michael_Rybak
*****

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

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


Вот скриншоты.

Даешь ему 2 файлика, он красиво показывает, что поменялось.

Сообщение отредактировано: Michael_Rybak - 9.12.2006 13:38
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 9.12.2006 13:45
Сообщение #17


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Цитата(spektr @ 9.12.2006 14:10) *

мож не надо,
у меня информатика = истерика, mega_chok.gif
формула еще со школы осталась.мож сразу и так как это делается???

в таком случае я точно пас.. Извиняюсь за флуд.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Гость
сообщение 9.12.2006 14:16
Сообщение #18


Гость






uses crt;
VAR
A: array[1 .. 100, 1 .. 102] of integer;
i, j, m, n, count: integer;

BEGIN
clrscr;
WriteLn ('programa - vyvod....');
WriteLn ('vvedite razmernost matricy i,j');
ReadLn (n,m);

count := 0;

for i := 1 to n do begin

A[i, 101] := 0; A[i, 102] := 0;
for j := 1 to m do begin
WriteLn ('element ',i,' ',j,' raven');
readLn (A[i,j]);

if a[i, j] < 0 then A[i, 101] := A[i, 101] + 1
else if a[i, j] > 0 then A[i, 102] := A[i, 102] + 1;

end;

if A[i, 101] < A[i, 102] then count := count + 1;

end;

clrscr;
for i := 1 to n do begin
for j := 1 to m do write(A[i,j]:4);
writeln('':5, a[i, 101]:4, a[i, 102]:4)
end;

WriteLn ('kolvo strok = ', count);
ReadLn
End.
После матрицы - 2 вектор-столбца, первый - количество отрицательных элементов сторки, второй - положительных... Чтобы не плодить лишние переменные все хранится в том же массиве - А (там просто добавлено 2 столбца: 101-ый - для подсчета количества отрицательных элементов, 102-ой для положительных)...
 К началу страницы 
+ Ответить 

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

 



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