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

За вознаграждение или нахаляву (если повезёт)

Модераторы: Хыиуду, MOTOCoder, Medved, dr.Jekill

Ответить
Creativ_Doc
Сообщения: 6
Зарегистрирован: 06 янв 2008, 17:58

В общем задача такова: Дана символьная матрица 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;
Хыиуду
Сообщения: 2442
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

Ууу...
Проверка:
if (a[i,j]<='9') and (a[i,j]>='0')
Все, больше ничего не надо. Массив b не нужен совершенно
В остальной логике разбираться сложно, используйте тег [ code] - [ /code] (без пробела), а то нечитабельно
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Creativ_Doc
Сообщения: 6
Зарегистрирован: 06 янв 2008, 17:58

Спасибо, но извини что-то я непонял:
Вот код:

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

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;
Creativ_Doc
Сообщения: 6
Зарегистрирован: 06 янв 2008, 17:58

В общем у меня не получается с выводом номера строки где больше цифр!!
Аватара пользователя
Turboworld
Сообщения: 29
Зарегистрирован: 27 дек 2007, 23:31
Контактная информация:

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

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

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

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

Подскажи пожалуйста: как вот мне номера строк в матрице записать в другой одномерный массив. Большая просьба на примере каком-нибудь. :rolleyes:
Аватара пользователя
Turboworld
Сообщения: 29
Зарегистрирован: 27 дек 2007, 23:31
Контактная информация:

Creativ_Doc писал(а):Подскажи пожалуйста: как вот мне номера строк в матрице записать в другой одномерный массив. Большая просьба на примере каком-нибудь. :rolleyes:
обязательно в массив запихивать одномерный их? можно же по мере нахождения выплёвывать номера на экран :)
Решаю задачки на Паскале. Практически любой сложности. Да, дорого. Но договориться всегда можно. Аська 337351594 ;)
Хыиуду
Сообщения: 2442
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

Гм, та же песня, но на новый лад...
Тег 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,' цифр больше, чем не цифр');
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Creativ_Doc
Сообщения: 6
Зарегистрирован: 06 янв 2008, 17:58

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