Вопрос № 177486: Здравствуйте уважаемые эксперты. Помогите в решении задачи. Условие задачи. Заданы сведения о сотрудниках некоторой организации. Формат сведений: Фамилия, заработная плата. Количество сведений любое. Сохранить сведения в памяти и файле. Прочитать...
Вопрос № 177486:
Здравствуйте уважаемые эксперты. Помогите в решении задачи. Условие задачи. Заданы сведения о сотрудниках некоторой организации. Формат сведений: Фамилия, заработная плата. Количество сведений любое. Сохранить сведения в памяти и файле. Прочитать из файла по запросу и определить среднюю заработную плату всех сотрудников организации. Предусмотреть дополнение сведений и их исправление. Вид программы.
Нужно
написать: 1. Процедуру сохранения сведений в файле. 2. Процедуру Обработки сведений. Открыть файл и загрузить с изменением цвета шрифта. Вывести сообщение при отсуствии файла. Используя функцию вычисления средней зарплаты вычислить среднюю зарплату. Фамилии вывести в Memo1 с упорядочиванием по алфавиту. Результат программы.
Отвечает Евгений/Genia007/, Бакалавр :
Здравствуйте, Спиридонов Данил Сергеевич. Вот добавленная процедура сохранения данных в файл:
Код:
procedure TForm1.N7Click(Sender: TObject); var i, j, y: word; f: TextFile; begin y:= 0; AssignFile(f, 'stringdrid.txt'); // Связали переменную с файлом
Rewrite(f); // Открыли файл для перезаписи with StringGrid1 do // Делаем для сетки begin for i:= 0 to RowCount - 1 do if Cells[0, i] <> '' then inc(y); // Считаем сколько занято ячеек в сетке // Записываем номер колонки и строки Writeln(f, ColCount); Writeln(f, y); // Записываем содержимое ячейки for i:= 0 to ColCount - 1 do for j:= 0 to y - 1 do<
br> Writeln(F, Cells[i, j]); end; CloseFile(F); // Закрыли файл end;
Процедура загрузки данных из файла:
Код:
procedure TForm1.N2Click(Sender: TObject); var f: TextFile; x, i, j: Integer; str: String; begin StringGriD1.Font.Color:=
clGreen; // Делаем шрифт сетки зелённым {If not OpenDialog1.Execute then exit; } if not Fileexists('stringdrid.txt') then begin // Выводим сообщение при отсутствии файла ShowMessage('Файла не существует.'); exit; end; AssignFile(f, {OpenDialog1.FileName}'stringdrid.txt'); // Связали переменную с файлом Reset(f); // Открыли файл на чтение with StringGrid1 do // Делаем для
сетки begin // Получаем номер колонки Readln(f, x); ColCount:= x; // Получаем номер строки Readln(f, x); RowCount:= x; // Загружаем сетку for i:= 0 to ColCount - 1 do for j:= 0 to RowCount - 1 do begin Readln(f, str); Cells[i, j]:= str; end; end; CloseFile(f); // Закрыли файл StatusBar1.Panels[0].Text:= 'n = ' + IntToStr(StringGrid1.RowCount
- 1); // Выдаём на статус бар количество записей в сетке StatusBar1.Panels[1].Text:= ExtractFilePath(ParamStr(0)) + 'stringdrid.txt'; // Выдаём на статус бар полный путь к файлу end;
Изменённая процедура расчёта и вывода средней зарплаты:
Код:
procedure TForm1.N6Click(Sender: TObject); var i: integer; k: real; list: TStringList; begin i:=1; setlength(mas,1); while StringGrid1.Cells[0,i]<>'' do begin mas[i-1].Familiya:= stringgrid1.Cells[0,i]; mas[i-1].Zarplata:= StrToInt(StringGrid1.Cells[1,i]); i:= i + 1; setlength(mas, i); end; n:= i - 1; k:= count(mas); Edit1.Text:= FloattostrF(k, ffFixed, 8,
2); Memo1.Clear; // Отчистили memo List:= TStringList.Create; // Создали список for i:= 1 to StringGrid1.RowCount do if StringGrid1.Cells[0, i] <> '' then List.Add(StringGrid1.Cells[0, i]); // Загружаем в список данные List.Sort; // Сортируем список Memo1.Lines.AddStrings(List); // Добавили данние в memo List.Free; // Освободили список end;
* Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи.
(полный список тарифов)
** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
*** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.