М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
vlad0ss
vlad0ss
27.11.2022 11:10 •  Информатика

Паскаль, не могу разобраться в чем ошибка. в общем напишите программу создать, нетекстовый файл, который содержит информацию о телефонах сотрудников учреждения (фамилия, инициалы, номер телефона). требуется: а) найти номер телефона сотрудника по его фамилии б) переписать в алфавитном порядке в текстовый файл информацию о сотрудниках, у которых первые цифры телефона 41.

👇
Ответ:
алинкаблн
алинкаблн
27.11.2022
{1 шаг - Создать типизированный файл!}
Program Ex;
uses  crt;
Const Name='Baze';
       type
           StFio = string[30];
           Adress=string[50];
           RecBook = record
                        Fio : StFio;{Ф.И.О}
                        Adress: Adress;{Адрес}
                        num_tel:string[20]{Телефон};
                      end;

           mas= array[1..30] of RecBook;
        var
           BookFile : file of RecBook;
               Work : RecBook;
                Vid : Char;
           End_Menu : boolean;
               A: mas;

procedure sort_buble(var a:mas; count:integer);
var c:mas;
    last,current:integer;
begin
     for last := count downto 2 do
       for current := 1 to last-1 do
       begin
         if a[current].fio > a[current+1].fio then
     begin
        c[1]:=a[current];
        a[current]:=a[current+1];
        a[current+1]:=c[1];
     end;
       end;
end;

Procedure OutputRec_z;
begin
  with Work do
   begin
     Gotoxy(2,2);  Write(' ФИО ');
     gotoxy(19,2);  Write(' Tel  ');
     gotoxy(35,2);  Write(' Адрес ');
     gotoxy(2,4);   Write(fio);
     gotoxy(19,4);  Write(num_tel);
     gotoxy(35,4);  writeln(adress);
   end;
   readkey;
   clrscr;
end;

Procedure Find;
var
   Findst:string;
   End_Menu2:boolean;
begin
   Write(' Введите строку поиска(FIO) ');
   readln(Findst);
   TextColor(15);
   Clrscr;
   Assign(BookFile,Name);
   {$I-}    Reset(BookFile);   {$I+}
   if IOresult = 0 then
          begin
               Seek(BookFile, 0);
               while (not Eof(BookFile)) do
begin
     Clrscr;
     Read(BookFile,Work);
     if Pos(FindSt,Work.fio)<>0 then
       OutputRec_z;
end;
 writeln('Больше записей удовлетворяющих критерию поиска не обнаружено');
      readkey;
          end
end;

var f:text;
Procedure Find_b;
var
   i,j:integer;
begin
   TextColor(15);   Clrscr;
   Assign(BookFile,Name);
   {$I-}   Reset(BookFile);
   {$I+}
   if IOresult = 0 then
          begin
               i:=0;{кол-во записей тел которых начинается с 41}
               Seek(BookFile, 0);
               while (not Eof(BookFile)) do
               begin
                    Read(BookFile,Work);
                      if (Pos('41',Work.num_tel)=1) then
     begin
       i:=i+1;
       a[i]:=work;
     end;
     end;
     sort_buble(a, i);
     assign(f,'res.txt');
     rewrite(f);
     for j:=1 to i do
     writeln(f,a[j].fio,' ', a[i].num_tel:7);
     close(f);
  end;
end;

{}
        Procedure AddRec;
                  begin
                       Clrscr;
                       Write(' номер добавляемой записи ');
                       TextColor(15);
                       Write(FilePos(BookFile)+1);
                       with Work do
                            begin
                            writeln;
                                 Write(' ФИО ');
                                 Readln(fio);
                                 Write(' Телефон ');
                                 Readln(num_tel);
                                 Write(' Адрес ');
                                 Readln(adress);
                                 Write(BookFile,Work);
                            end;
                  end;
{}
        Procedure Create_Book_Phone;
                  var
                     Ind, Count : integer;
                  begin
                       Clrscr;
                       Textcolor(15);
                       Assign(BookFile,Name);
                       Rewrite(BookFile);
                       Write(' Создаю новый файл ');
                       Writeln(Name);
                       Write(' Введите количество записей в файле ');
                       Readln(Count);
                       for Ind := 1 to Count do AddRec;
                       Writeln;
                       Writeln(' Создание завершено');
                       Writeln;
                       Writeln(' Количество записей в файле ');
                       Writeln(Filesize(BookFile));
                       Close(BookFile);
                  end;
{}
        Procedure OutputRec;
                  begin
                       Clrscr;
                       Read(BookFile,Work);
                       with Work do
                            begin
                                 Gotoxy(10,2);  Write('ФИО ');
                                 gotoxy(34,2);  Write('Телефон  ');
                                 gotoxy(50,2);  Write('Адрес ');                                
                                 gotoxy(2,4);   Write(fio);
                                 gotoxy(35,4);  Write(num_tel);
                                 gotoxy(50,4);  writeln(adress);
                                 readkey;
                                 clrscr;
                             end;
                  end;
{}
        Procedure OutputAllRec;
                  begin
                       Clrscr;
                       Assign(BookFile,Name);
                       {$I-} Reset(BookFile);{$I+}
                       if IOresult = 0 then
                          begin
                               Seek(BookFile, 0);
                               while (not Eof(BookFile)) do
                                OutputRec;
                          end
                       end;

{}
BEGIN
     ClrScr;
     Textbackground(0);
     Vid := ' ';
     End_Menu := False;
     repeat
      Textcolor(15);
      Write(' Текущий Файл:',chr(13),Name);
           Writeln;
           Writeln;
           Writeln('');
           Writeln;
           Writeln('Меню:');
           Writeln('  2  Cоздать новый файл');
           Writeln('  3  Просмотреть все ');
           Writeln('  4  Найти номер телефона сотрудника по его фамилии');
           Writeln('  5  Переписать в алф. порядке в текстовый файл информацию о сотрудниках первые цифры телефона 41');
           Writeln('  8  Bыход');
           Readln(Vid);
           case Vid of
               '2' : Create_Book_Phone;
               '3' : OutputAllRec;
               '4' : Find;
               '5' : Find_b;
               '8' : End_Menu := true;
           end;
           ClrScr;
     until End_Menu;
END.
4,5(60 оценок)
Открыть все ответы
Ответ:
Anna256829
Anna256829
27.11.2022
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <locale.h>
//Максимальная длина вводимой строки#define Mx_s 255
//Массив символов, которые //необходиом удалить в начале и конце строкиchar sim[] = { '\t', ' '};//Функция проверяющая входит ли данный символ c в массив simint char_in_arr(char c) { int f = 0; for (int i = 0; i < strlen(sim); i++) { if (c == sim[i]) { f = 1; break; } } return f;}

int main(){ setlocale(LC_ALL, "rus"); //Вводимая строка char s[Mx_s]; //Ввод данных printf("\n >> Введите строку\n <<"); fgets(s, Mx_s, stdin); int l = strlen(s) - 1; //Переменные для определения отсечений в начале и конце строки int pos_b = 0; int pos_e = l-1; //Проверяем начало строки //Если нам попадаются удаляемые символы то увеличиваем значение pos_b for (;(pos_b < l) && char_in_arr(s[pos_b]); pos_b++) {}
//Проверяем конец строки //Если нам попадаются удаляемые символы то уменьшаем значение pos_e for (;(pos_e >= 0) && (char_in_arr(s[pos_e])); pos_e--) {}
//Длина отсеченного отрезка int l2 = pos_e - pos_b + 1; //Если длина корректа то if (l2 > 0) { //Строка для результата char s2[Mx_s];
//Идем по строке s1 int pos = 0; for (int i = pos_b, k_s = 0; i <= pos_e; i++) { //Считаем пробелы, идущие подряд if (s[i] == ' ') k_s++; else k_s = 0;
//Если это не подряд идущие пробел if (k_s < 2) { //записываем символ в s2 s2[pos] = s[i]; pos++; } } s2[pos] = '\0';
//Вывод результат printf("\n >> Результат\n <<"); fputs(s2,stdout); } else //Строка пуста/Содержит только символы из массива sim printf("\n >> Ошибка в строке\n");
system("pause>>void"); return 0;}
4,4(56 оценок)
Ответ:
Vasyy123
Vasyy123
27.11.2022
Const n=5;
var 
a:array[1..n,1..n] of integer;
b:array[1..n] of integer;
i,j,max,min,s:integer;
begin
Randomize;
writeln('Исходный массив:');
for i:=1 to n do
 begin
 for j:=1 to n do
  begin
   a[i,j]:=random(21);
   write(a[i,j]:4);
  end;
  writeln;
 end;
max:=a[1,n];
for i:=2 to n do
  if a[i,n-i+1]>max then max:=a[i,n-i+1];
writeln('1. max = ',max);
for i:=1 to n do
 begin
 min:=a[i,1];
 for j:=2 to n do
  if a[i,j]<min then min:=a[i,j];
 b[i]:=min;
 end;
s:=0;
writeln('2. Массив B');
for i:=1 to n do 
 begin
 write(b[i]:4);
 s:=s+b[i];
 end;
writeln;
writeln('3. среднее = ',s/n);
for i:=1 to n do 
 if b[i]>s/n then write(b[i]:4);
writeln;
end.

Пример:
Исходный массив:
  10  19  15  17  10
  12  12  10   1   5
  17   8   8  14  15
  12  11   8   0  13
   2   2   4  10   6
1. max = 11
2. Массив B
  10   1   8   0   2
3. среднее = 4.2
  10   8
4,6(87 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ