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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.12.2009, 10:08   #1
Asicks
 
Аватар для Asicks
 
Регистрация: 25.12.2009
Сообщений: 6
Восклицание Сравнение в паскаль

не понимаю как сделать так чтобы после разложения слова на буквы введенного пользователем ,сравнить их с данными массива, на наличие таких же букв. хотяб намек подкиньте плиз а то я уже сгорю скоро((Зачетное задание надежды уже нет
program Zachet;
uses crt;
var a:array[1..4,1..4] of string[20];
n,y:string;
i,j,u:integer;
begin
clrscr;
writeln('Введите слово!');
readln(n);
writeln('"",n,""');
writeln(' length = ', length(n));
writeln('Введите буквы!');
for i:=1 to 4 do
for j:=1 to 4 do begin
writeln('Введите значения элементов ',i,' ',j);
readln(a[i,j]);
end;
for i:=1 to 4 do begin
writeln;
for j:=1 to 4 do
write(a[i,j]:5);
end;
u:=length(n);
for u:=1 to length(n) do begin
writeln;
writeln(copy(n,u,1));
end;
readkey;
end.
То что отображено, разбивает слово на буквы но не сравнивает их с массивом...
Вот само задание:
Пользователь вводит слово, после этого пользователь заполняет двумерный массив, разнообразными символами. Программа должна определить можно ли из символов входящих в массив составить введенное слово.
Хелп ми плииииииизззззз!!!!!!!
Asicks вне форума Ответить с цитированием
Старый 29.12.2009, 11:54   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

а повторное использование букв из массива допускается?
например, если в массиве есть одна буква М и одна А - слово МАМА можно составить или нет?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 29.12.2009, 12:11   #3
Asicks
 
Аватар для Asicks
 
Регистрация: 25.12.2009
Сообщений: 6
По умолчанию

Неа повторное использование букв не допускается Спасибо что отозвался)))
Asicks вне форума Ответить с цитированием
Старый 29.12.2009, 12:33   #4
Asicks
 
Аватар для Asicks
 
Регистрация: 25.12.2009
Сообщений: 6
По умолчанию

я уже как неделю над этим заданием сижу(
Asicks вне форума Ответить с цитированием
Старый 29.12.2009, 13:43   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Неа повторное использование букв не допускается
ну, дык, и в чём проблема то?.. способов решения уйма...
например,
поиск нужной буквы, если нашли, берём её и записываем на её место пробел (или любой неиспользуемый символ, например, #0).
выполняем цикл для всех буковок слова.
всё. задача решена.

код самостоятельно сделаешь? или помочь?

p.s. а если надо введённый массив символов использовать многократно, то самый простой способ - завести временную матрицу для поиска и отметок (стирания) тех буковок, которые нашли, и копировать исходную матрицу во временную перед циклом проверки...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 29.12.2009, 14:27   #6
Asicks
 
Аватар для Asicks
 
Регистрация: 25.12.2009
Сообщений: 6
По умолчанию

Спасииибо)))) Сначало сам попробую))))
Asicks вне форума Ответить с цитированием
Старый 02.01.2010, 13:22   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Так что - код подкинуть?
Или опубликуешь то, что сделано?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 02.01.2010, 14:26   #8
Asicks
 
Аватар для Asicks
 
Регистрация: 25.12.2009
Сообщений: 6
По умолчанию

кооооод)))) плиииз))) позориться не хочу х)
Asicks вне форума Ответить с цитированием
Старый 02.01.2010, 15:20   #9
IT-man
АльTRUEи$т
Форумчанин
 
Аватар для IT-man
 
Регистрация: 19.03.2009
Сообщений: 784
По умолчанию

а может проще тут множества юзать?
Цитата:
«Никто не войдет в Рай, имея хотя бы крупицу гордыни в своем сердце». «Аллах Красив и любит красоту. Гордыня означает отказ от истины и высокомерие»
IT-man вне форума Ответить с цитированием
Старый 02.01.2010, 16:51   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

ладно. вот рабочий код:
Код:
program Zachet;
uses crt;
var a: array[1..4, 1..4] of string[1];
  s : string;
  i, j, k: integer;
  isFound : boolean;
begin
  clrscr;
  writeln('Введите слово!');
  readln(s);
  writeln('"',s,'"', ' length = ', length(s));
  writeln('Введите буквы!');
  for i := 1 to 4 do
    for j := 1 to 4 do begin
      write('Введите значения элементов ', i, ' ', j, ' ');
      readln(a[i, j]);
    end;
  writeln;
  for i := 1 to 4 do begin
    for j := 1 to 4 do
      write(a[i, j]: 3);
    writeln;
  end;

  k := 1;
  isFound := true;
  while (k<= length(s)) and (isFound) do begin
    { поиск буковки s[k] в массиве}
    isFound := false;
    i := 1;
    while (i<=4) and (Not isFound) do
    begin
       j := 1;
       while (j<=4) and (Not isFound) do begin
         if a[i,j] = s[k] then
         {нашли букву в массиве}
         begin
            a[i,j] := #0;
            isFound := true;
         end;
         inc(j);
       end;
       inc(i);
    end;
    inc(k);
  end;
  if isFound
    then WriteLn('Можно составить слово')
    else WriteLn('Нет, слово составить нельзя.');
  readkey;
end.
p.s. код проверки РЕГИСТРОЗАВИСИМ (т.е. если вбили слово аССа - то в массиве должны быть строчные буковки а и две прописные буквы С
это можно изменить - если в сравнении букв приводить их к одному регистру (либо верхнему (строчные буквы), либо к нижнему (прописные буквы))
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сравнение строк Jasper92 Общие вопросы C/C++ 6 23.12.2009 12:49
Сравнение сортировок Паскаль Igomax Помощь студентам 6 24.10.2009 17:58
C# сравнение слов Bobrik Помощь студентам 4 18.05.2009 17:57
Паскаль. Сравнение на подобность треугольников. Координаты вершин в матрице. Jondeer Помощь студентам 3 07.11.2007 07:31