Страница 1 из 1

Кто-нибудь посмотрите на это! Нужен совет!!

Добавлено: 06 янв 2008, 18:08
Creativ_Doc
В общем задача такова: Дана символьная матрица S(7,7). Определить номера тех
строк матрицы, которые содержат больше цифр, чем других символов.
Я вывожу эту матрицу из звездочек и цифр. с вводом матрицы вроде нет проблем, но вот с остальным что-то не лады....((((((( Буду очень благодарен за советы..!!!!!


rogram Matrica;

{$APPTYPE CONSOLE}

uses
SysUtils;
var a:array[1..20,1..20] of char;
b:array [1..10] of char = ('0','1','2','3','4','5','6','7','8','9');
i,j,n,m,z,ch,index:integer;
begin
writeln('Vvedite koli4ectvo ctrok(n) i ctolbcov(m): ');
readln(n,m);
writeln('VVedite postro4no ',n,' strok po ',m, ' elementov');
for i:=1 to n do
begin
for j:=1 to m do read(a[i,j]);
readln;
end;
writeln('VVedenniy massiv:');
for i:=1 to n do
begin
for j:=1 to m do write(a[i,j]:2);
writeln;
readln;
end;
begin
for i:=1 to n do
begin
ch:=0;
z:=0;
for j:=1 to m do
if a[i,j]=b then
inc(ch);index:=i;
if a[i,j]='*' then
inc(z);
end;
begin
if ch>z then
writeln('nomera strok=',index,);
end;

Re: Кто-нибудь посмотрите на это! Нужен совет!!

Добавлено: 06 янв 2008, 21:59
Хыиуду
Ууу...
Проверка:
if (a[i,j]<='9') and (a[i,j]>='0')
Все, больше ничего не надо. Массив b не нужен совершенно
В остальной логике разбираться сложно, используйте тег [ code] - [ /code] (без пробела), а то нечитабельно

Re: Кто-нибудь посмотрите на это! Нужен совет!!

Добавлено: 06 янв 2008, 22:15
Creativ_Doc
Спасибо, но извини что-то я непонял:
Вот код:

Код: Выделить всё

rogram Matrica;

{$APPTYPE CONSOLE}

uses
SysUtils;
var a:array[1..20,1..20] of char;
b:array [1..10] of char = ('0','1','2','3','4','5','6','7','8','9');
i,j,n,m,z,ch,index:integer;
begin
writeln('Vvedite koli4ectvo ctrok(n) i ctolbcov(m): ');
readln(n,m);
writeln('VVedite postro4no ',n,' strok po ',m, ' elementov');
for i:=1 to n do
begin
for j:=1 to m do read(a[i,j]);
readln;
end;
writeln('VVedenniy massiv:');
for i:=1 to n do
begin
for j:=1 to m do write(a[i,j]:2);
writeln;
readln;
end;
begin
for i:=1 to n do
begin
ch:=0;
z:=0;
for j:=1 to m do
if a[i,j]=b[i] then
inc(ch);index:=i;
if a[i,j]='*' then
inc(z);
end;
begin
if ch>z then
writeln('nomera strok=',index,);
end;

Re: Кто-нибудь посмотрите на это! Нужен совет!!

Добавлено: 06 янв 2008, 22:18
Creativ_Doc
В общем у меня не получается с выводом номера строки где больше цифр!!

Re: Кто-нибудь посмотрите на это! Нужен совет!!

Добавлено: 07 янв 2008, 01:01
Turboworld
Creativ_Doc писал(а):В общем у меня не получается с выводом номера строки где больше цифр!!
хорошим стилем было бы писать цикл FOR вот так:

Код: Выделить всё

for j:=1 to m do [b]begin[/b]
   [i]бла-бла-бла[/i]  
[b]end;[/b]

Может из-за этого и косяки получаются у тебя. Т.е. если нету бегина и энда, тогда цикл FOR выполняется только для одного оператора, который следует сразу за ним. То же самое и для оператора IF. Вообще я рекомендую ВСЕГДА ставить begin и end. Сэкономишь уйму времени (за счёт сокращения времени отладки, а также при модернизации проги). :)

Re: Кто-нибудь посмотрите на это! Нужен совет!!

Добавлено: 07 янв 2008, 21:58
Creativ_Doc
Подскажи пожалуйста: как вот мне номера строк в матрице записать в другой одномерный массив. Большая просьба на примере каком-нибудь. :rolleyes:

Re: Кто-нибудь посмотрите на это! Нужен совет!!

Добавлено: 08 янв 2008, 00:41
Turboworld
Creativ_Doc писал(а):Подскажи пожалуйста: как вот мне номера строк в матрице записать в другой одномерный массив. Большая просьба на примере каком-нибудь. :rolleyes:
обязательно в массив запихивать одномерный их? можно же по мере нахождения выплёвывать номера на экран :)

Re: Кто-нибудь посмотрите на это! Нужен совет!!

Добавлено: 09 янв 2008, 11:33
Хыиуду
Гм, та же песня, но на новый лад...
Тег code сделан для того, чтобы можно было выделять блоки текста (циклы, подпрограммы и т.д.) отступами. А так - тот же погонный текст, только в рамочке.
В каждой строке делаем проверку (пусть i - номер строки, j - номер элемента в строке)
cifr:=0;
ne_cifr:=0;
for j:=1 to N do
if (a[i,j]<='9') and (a[i,j]>='0') then inc(cifr) else inc(ne_cifr);
if cifr>ne_cifr then writeln ('В строке номер ',i,' цифр больше, чем не цифр');

Re: Кто-нибудь посмотрите на это! Нужен совет!!

Добавлено: 09 янв 2008, 20:23
Creativ_Doc
Спасибо большое!!! Я решил эту задачу...!! :) Ты подсказал мне очень хороший момент!!! Оказывается все так просто было!!!! :rolleyes: Спасибо!!!