Вторник, 07.01.2025
Pascal 4 All
[ · Новые сообщения · Участники · Правила форума · Поиск · RSS ]

 

  • Страница 1 из 1
  • 1
Модератор форума: Seqular, Pavel  

Имена кроликов
snaper1993Дата: Суббота, 17.11.2007, 20:31 | Сообщение # 1
Бывалый
Группа: Пользователи
Сообщений: 121
Репутация: 2
Замечания: 0%
Статус: Offline
помогите ище ету задачку решить!""

Задача 3. "Поиск имен"

Каждому кролику Дієтенко давал уникальное имя. Конечно, время от времени возникала ситуация, когда имена освобождались и
их можно было снова использовать. Итак, наш фермер имеет список всех возможных имен и список имен имеющихся кроликов.
Составьте программу для того, чтобы со списка возможных имен выбрать лишь те, что являются свободными и их можно использовать снова.

Входные данные: в первой строке стандартного входного потока задается целое N (N<=10000) – количество возможных имен.
В следующих строках записанные одни имена, которые содержат лишь символы латинского алфавита и имеют длину не большую
20. Потом в красной строке содержится целое K (K<=10000) – количество использованных имен. Дальше идет перечень этих имен в отдельных
строках.

Исходные данные: в отдельных строках стандартного исходного потока вывести те имена, которые являются свободными для использования.

Пример входных данных.
4
Mario
Nensi
Gis
Joss
2
Joss
Nensi
Пример исходдных данных.


Я - желанный гость Сайта взаимопомощи программистам Pascal А ты?
 
PavelДата: Суббота, 17.11.2007, 21:24 | Сообщение # 2
Приближенный
Группа: Модераторы
Сообщений: 210
Репутация: 17
Замечания: 0%
Статус: Offline
Так другое дело. Пасиба.

Итак. Мы имеем "стандартный входной поток". Что это такое я не в курсе. Во-вторых: прежде всего необходимо знать, какой тип данных использовать для создания такого огромного стандартного входного потока (2 по 10000 string[20]). Т.е. в данном случае подойдет только использование файлов. Но для примера будет дочтаточно и массива. (применимо к среде TP7) И кстати, две переменные N и К по моему мнению абсолютно не нужны, так я думаю, что перебор вариантов единственно правильное решение. В Паскале. Т.е. берем из первого списка всех имен, и сравниваем его со всем вторым списком занятых имен, если нет, то выводим в результирующий файл.

Тип файл можно запросто заменить на массив. Если требуют (!) переменные K и N, значит просто добавь их куда-нибудь. Думаю, со мной согласятся читатели, что эти переменные действительно не нужны.

Code
program Imena_Krolikam;
uses crt;
var
     all_t, use_t, res_t: text;
     s1, s2: string[20];
     flag: boolean;
begin
clrscr;
assign(all_t, 'allnames.txt');
assign(use_t, 'usedname.txt');
assign(res_t, 'res_name.txt');

reset(all_t);
reset(use_t);
rewrite(res_t);

while not EoF(all_t) do
     begin
     readln(all_t, s1);
     flag := false;
     reset(use_t);
     while not EoF(use_t) do
         begin
         readln(use_t, s2);
         if s1 = s2 then flag := true;
         end;
     close(use_t);
     if flag = false then writeln(res_t, s1);
     end;

close(all_t);
close(res_t);
end.

Файлы приложены к ответу.

Прикрепления: allnames.txt (0.1 Kb) · usedname.txt (0.0 Kb) · RES_NAME.txt (0.0 Kb)
 
snaper1993Дата: Воскресенье, 18.11.2007, 00:30 | Сообщение # 3
Бывалый
Группа: Пользователи
Сообщений: 121
Репутация: 2
Замечания: 0%
Статус: Offline
мне нужно чтобы виводыло только те имена которые не повторяются!

Добавлено (17.11.2007, 17:27)
---------------------------------------------
и штобы было 2 файла
так как я написал

Добавлено (17.11.2007, 17:30)
---------------------------------------------
Пример входних данных.

4
Mario
Nensi
Gig
Joss
2
Joss
Nensi
Пример исходних данных.
Mario
Gig


Я - желанный гость Сайта взаимопомощи программистам Pascal А ты?
 
PavelДата: Воскресенье, 18.11.2007, 10:37 | Сообщение # 4
Приближенный
Группа: Модераторы
Сообщений: 210
Репутация: 17
Замечания: 0%
Статус: Offline
Quote (snaper1993)
мне нужно чтобы виводыло только те имена которые не повторяются!

Тогда

Code
program Imena_Krolikam;  
uses crt;  
var  
      all_t, use_t: text;  
      s1, s2: string[20];  
      flag: boolean;  
begin  
clrscr;  
assign(all_t, 'allnames.txt');  
assign(use_t, 'usedname.txt');  

reset(all_t);  
reset(use_t);  

while not EoF(all_t) do  
      begin  
      readln(all_t, s1);  
      flag := false;  
      reset(use_t);  
      while not EoF(use_t) do  
          begin  
          readln(use_t, s2);  
          if s1 = s2 then flag := true;  
          end;  
      close(use_t);  
      if flag = false then writeln(s1);  
      end;  

readkey;
close(all_t);  
end.

Здесь будут выводится на экран свободные имена. Не в файл. И будет всего два входных файла.
 
snaper1993Дата: Воскресенье, 18.11.2007, 18:49 | Сообщение # 5
Бывалый
Группа: Пользователи
Сообщений: 121
Репутация: 2
Замечания: 0%
Статус: Offline
Большое спасибо!!

Я - желанный гость Сайта взаимопомощи программистам Pascal А ты?
 
PavelДата: Воскресенье, 18.11.2007, 20:45 | Сообщение # 6
Приближенный
Группа: Модераторы
Сообщений: 210
Репутация: 17
Замечания: 0%
Статус: Offline
snaper1993, пожалуйста. Пиши еще, разберемся!
 
snaper1993Дата: Понедельник, 19.11.2007, 02:33 | Сообщение # 7
Бывалый
Группа: Пользователи
Сообщений: 121
Репутация: 2
Замечания: 0%
Статус: Offline
Следуйщий раз напишу через ниделю! (нужна будет помощ!)

Я - желанный гость Сайта взаимопомощи программистам Pascal А ты?
 
  • Страница 1 из 1
  • 1
Поиск:

Copyright MyCorp © 2025
Используются технологии uCoz
javascript:;" rel="nofollow" onclick="loginPopupForm(); return false;