Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.04.2012, 20:21   #1
Richik123
Пользователь
 
Регистрация: 09.04.2012
Сообщений: 92
По умолчанию Дан двумерный массив, в котором содержатся латинские маленькие буквы, затем вводится предложение с клавиатуры, если из элементов м

Дан двумерный массив, в котором содержатся латинские маленькие буквы, затем вводится предложение с клавиатуры, если из элементов массива можно составить предложение которое мы ввели с клавиаутры, то вывести в файле. Если можно всё закоментить
Richik123 вне форума Ответить с цитированием
Старый 21.04.2012, 00:01   #2
kuy
Форумчанин
 
Аватар для kuy
 
Регистрация: 05.09.2011
Сообщений: 109
По умолчанию

Код:
const n=3; //высота матрицы
      m=2; //ширина матрицы
var mas: array[1..n,1..m] of char = (('b','i'),('g',' '),('a','n')); //твой двумерный массив
    text,bool: string;
    i,j,k: integer;
    p:boolean;
begin
  text:='big ban'; //текст который тебе нужно с клавы ввести, напишеш readln(text);
  bool:='+';     //выдаст вконце - или +, если из элементов массива можно составить предложение
  for i:=1 to length(text) do //проверка каждого символа в строке
   begin
    p:=false;
    for j:=1 to n do  //сравнение символа строки с символами матрицы
     for k:=1 to m do
      if (text[i]=mas[j,k]) then  p:=true;
    if (p) and (bool='+') then bool:='+'
     else bool:='-';
   end;
write(bool); //у меня тут просто выдаёт результат + или -, а тебе нужно если +, то в файл записать, 
//мне лень просто его создавать и описывать)
readln;
end.
kuy вне форума Ответить с цитированием
Старый 21.04.2012, 00:02   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

во-первых, задача несложная.

а во-вторых, нужны правила составления (какие есть ограничения на использование/неиспользование символов из массива, что делать, если в предложении есть, например, пробелы, допускается ли повторное использование символов и т.д.)

наработки есть?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 21.04.2012, 13:55   #4
SlavaSSU
Пользователь
 
Регистрация: 15.04.2012
Сообщений: 46
По умолчанию

в коде kuy повторное использование допускается)

и кстати не понял, почему именно двумерный массив символов?
НИУ СГУ им. Чернышевского

Последний раз редактировалось Stilet; 22.04.2012 в 00:54.
SlavaSSU вне форума Ответить с цитированием
Старый 21.04.2012, 17:07   #5
kuy
Форумчанин
 
Аватар для kuy
 
Регистрация: 05.09.2011
Сообщений: 109
По умолчанию

SlavaSSU, в условии не написано о повторном использовании, можно, нельзя... Усли без повторного использования, то можно так:
Код:
const n=3;
      m=2; 
var mas: array[1..n,1..m] of string = (('g','n'),('b','b'),('i','a')); 
    text,bool: string;
    i,j,k: integer;
    p:boolean;
begin
  text:='bigban'; readln(text);
  bool:='+';    
  for i:=1 to length(text) do 
   begin
    p:=false;
    for j:=1 to n do  
     begin
      for k:=1 to m do
       if (text[i]=mas[j,k]) then
        begin
         mas[j,k]:='';
         p:=true;
         break;
        end;
       if p then break;
     end;
    if (p) and (bool='+') then bool:='+'
     else bool:='-';
   end;
write(bool); 
readln;
end.
kuy вне форума Ответить с цитированием
Старый 21.04.2012, 21:51   #6
Richik123
Пользователь
 
Регистрация: 09.04.2012
Сообщений: 92
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
во-первых, задача несложная.

а во-вторых, нужны правила составления (какие есть ограничения на использование/неиспользование символов из массива, что делать, если в предложении есть, например, пробелы, допускается ли повторное использование символов и т.д.)

наработки есть?
повторное допускается..наработок нет((

Цитата:
Сообщение от SlavaSSU Посмотреть сообщение
и кстати не понял, почему именно двумерный массив символов?
такой задали

Цитата:
Сообщение от kuy Посмотреть сообщение
Код:
const n=3; //высота матрицы
      m=2; //ширина матрицы
var mas: array[1..n,1..m] of char = (('b','i'),('g',' '),('a','n')); //твой двумерный массив
    text,bool: string;
    i,j,k: integer;
    p:boolean;
begin
  text:='big ban'; //текст который тебе нужно с клавы ввести, напишеш readln(text);
  bool:='+';     //выдаст вконце - или +, если из элементов массива можно составить предложение
  for i:=1 to length(text) do //проверка каждого символа в строке
   begin
    p:=false;
    for j:=1 to n do  //сравнение символа строки с символами матрицы
     for k:=1 to m do
      if (text[i]=mas[j,k]) then  p:=true;
    if (p) and (bool='+') then bool:='+'
     else bool:='-';
   end;
write(bool); //у меня тут просто выдаёт результат + или -, а тебе нужно если +, то в файл записать, 
//мне лень просто его создавать и описывать)
readln;
end.

массив побольше надо и предложение буду с клавиатуры вводить

Последний раз редактировалось Stilet; 22.04.2012 в 00:53.
Richik123 вне форума Ответить с цитированием
Старый 22.04.2012, 14:08   #7
SlavaSSU
Пользователь
 
Регистрация: 15.04.2012
Сообщений: 46
По умолчанию

Код:

var
a:array[1..256] of byte;
b:array[1..10,1..10] of char;
s:string;
n,m,i,j:integer;
begin
for i:=50 to 150 do a[i]:=0;
writeln('vvedite kolichestvo strok i stolbcov');
readln(n,m);
writeln('vvedite simvoli');
for i:=1 to n do begin
for j:=1 to m do begin read(b[i,j]); a[ord(b[i,j])]:=1; end;
readln;
end;
writeln('vvedite slovo');
readln(s); writeln('res');
for i:=1 to n do begin
for j:=1 to m do write(b[i,j],' ');
writeln;
end;
writeln('s=',s);
for i:=1 to length(s) do if a[ord(s[i])]=0 then begin writeln('NO'); exit; end;
writeln('YES');
readln;
end.
НИУ СГУ им. Чернышевского
SlavaSSU вне форума Ответить с цитированием
Старый 22.04.2012, 16:09   #8
Richik123
Пользователь
 
Регистрация: 09.04.2012
Сообщений: 92
По умолчанию

Цитата:
Сообщение от SlavaSSU Посмотреть сообщение
Код:

var
a:array[1..256] of byte;
b:array[1..10,1..10] of char;
s:string;
n,m,i,j:integer;
begin
for i:=50 to 150 do a[i]:=0;
writeln('vvedite kolichestvo strok i stolbcov');
readln(n,m);
writeln('vvedite simvoli');
for i:=1 to n do begin
for j:=1 to m do begin read(b[i,j]); a[ord(b[i,j])]:=1; end;
readln;
end;
writeln('vvedite slovo');
readln(s); writeln('res');
for i:=1 to n do begin
for j:=1 to m do write(b[i,j],' ');
writeln;
end;
writeln('s=',s);
for i:=1 to length(s) do if a[ord(s[i])]=0 then begin writeln('NO'); exit; end;
writeln('YES');
readln;
end.
можно с комментариями
Richik123 вне форума Ответить с цитированием
Старый 22.04.2012, 17:34   #9
SlavaSSU
Пользователь
 
Регистрация: 15.04.2012
Сообщений: 46
По умолчанию объяснил как смог)))

Код:
var
a:array[1..256] of byte; {массив из нулей и единиц,}
b:array[1..10,1..10] of char;{твой массив символов}
s:string;{твоя строка}
n,m,i,j:integer;
begin
for i:=50 to 150 do a[i]:=0;{сначала обнуляем все элементы массива(т.е. никакой символ еще не встречался)}
writeln('vvedite kolichestvo strok i stolbcov');
readln(n,m);
writeln('vvedite simvoli');
for i:=1 to n do begin
for j:=1 to m do begin read(b[i,j]); a[ord(b[i,j])]:=1;
{функция ord возвращает код символа, например был символ 'x' и пусть его код 77(я точно не знаю), 
тогда ord(x)=77, и элемент массива а[77] станет равным единице,
 что соответствует тому, что в твоей матрице символов есть символ,
 код которого равен 77} end;
readln;
end;
writeln('vvedite slovo');
readln(s); writeln('res');
for i:=1 to n do begin{}
for j:=1 to m do write(b[i,j],' ');
writeln;
end;
writeln('s=',s);{выводишь свою матрицу и строку}
for i:=1 to length(s) do if a[ord(s[i])]=0 then begin writeln('NO'); exit; end;
writeln('YES');
{здесь берешь сначала первый символ строки, допустим он 'p', 
опять же ord возвратит код , например, 99, и мы проверяем a[99], 
если этот элемент массива равен нулю значит его не было в твоей матрице символов, поэтому выводим 'NO', и завершаем программу, 
а если он равен 1(т.е. ты вводил этот символ в матрицу), тогда 
просто будем проверять следующий символ строки 
(for i:=1 to length(s)), дальше напишем writeln('YES');,
 если нельзя составить твою строку из символов матрицы,
 то программа аварийно завершится и до сюда не дойдет, 
если же она дошла до сюда - значит можно это сделать }
readln;
end.
НИУ СГУ им. Чернышевского
SlavaSSU вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дан двумерный массив. Найти сумму и количество элементов в каждом столбце, положительных и лежащих вне главной диагонали Alexbmgn Помощь студентам 1 25.12.2011 22:21
Обработка строки: из больших латинских делать маленькие латинские VARVAR_GIO Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 23.06.2011 12:41
Дан массив целых чисел P ,состоящий из 30 элементов.Заполнить его с клавиатуры Darkin Паскаль, Turbo Pascal, PascalABC.NET 4 26.05.2011 17:37
Дан массив А(20). Получить массив В(20), в котором В(1)=А(2), В(2)=А(1), В(3)=А(4), В(4)=А(3) и т.д. Выве nikita1 Помощь студентам 5 01.12.2010 18:16
Дан массив из N элементов (чисел),определить количество элементов кратных 3. Woha Общие вопросы C/C++ 2 08.12.2008 13:12