IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> процедура и файлы
сообщение
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 143
Пол: Мужской

Репутация: -  0  +


есть такое задание, вроде и несложно, только у меня проблема с процедурами появилась, заштопорился (почти всю ночь на спал), помогите чем сможете...
условие такое: определить зарплати каждого сотрудника за каждый месяц, которые он получил после высчитывания налога. Вывести начальные даные и полученные результаты, использовать двумерный массив.
По этому условию нужно написать три программы: 1-ую просто с обработкой массива, 2 -ую использовав процедуры и функции (причём сама программа должна иметь только вызовы процедур), 3-ью использовав для хранения начальных результатов ы промежуточных значений типизированые файлы.
Вот первая:
Код

uses crt;
  const
  M=12;

    Var
     zp:array [1..100,1..M] of real;
     i,j,k,P:word;


  Begin
   clrscr;
   write ('k-stvo sotrud K=');
   readln(K);
   for i:=1 to K do
   for j:=1 to M do
   begin
   write ('zar_plata ',i,' sotrud za ',j, ' meciac Zp=' );
   readln(zp[i,j]);
   end;

   write ('nalog v % P=');
   readln(P);

   writeln ('zar_platu bez naloga');
   writeln;
   write ('nomer m ');
   for j:=1 to m do
   write(j,' m   ');
   writeln;
   for i:=1 to K do
   begin
   write (i,'sotrud ');
   for j:=1 to M do
   begin
   write (zp[i,j]:0:1 );
   write(' ');
   end;
   writeln;
   end;

   writeln;
   writeln ('zar_platu posle naloga');
   writeln;
   write ('nomer m ');
   for j:=1 to m do
   write(j,' m   ');
   writeln;
   for i:=1 to K do
   begin
   write (i,'sotrud ');
   for j:=1 to M do
   begin
   write (zp[i,j]-((zp[i,j]/100)*P):0:1);
   write(' ');
   end;
   writeln;
   end;
  readkey
  End.


тут вроде как всё нормально, на её основе я сделал вторую:
Код

uses crt;
  const
  M=12;
  Type
   masiv=array [1..100,1..m] of real;

  procedure vvod(var zp:masiv; K:integer);
   var
    i,j:integer;
  begin
   write ('k-stvo sotrud K=');
   readln(K);
   for i:=1 to K do
   for j:=1 to M do
   begin
   write ('zar_plata ',i,' sotrud za ',j, ' mecyac Zp=' );
   readln(zp[i,j]);
   end;
  End;

  Procedure Nalog(var Zp:masiv;  K:integer);
  var
   P:real;
   j,i:integer;
  Begin
  write ('nalog v % P=');
   readln(P);
   writeln;
   writeln ('zar_platu posle naloga');
   writeln;
   write ('nomer m     ');
   for j:=1 to M do
   write(j,' mic ');
   writeln;
   for i:=1 to K do
   begin
   write (i,' sotrud ');
   for j:=1 to M do
   begin
   write (zp[i,j]-((zp[i,j]/100)*P):0:1);
   write(' ');
   end;
   writeln;
   end;
  End;

Procedure Vuvod(var Zp:masiv;K:integer);
  var
  j,i:integer;
  Begin
  writeln ('zar_platu bez naloga');
   writeln;
   write ('nomer m   ');
   for j:=1 to m do
   write(j,' mic ');
   writeln;
   for i:=1 to K do
   begin
   write (i,' sotrud ');
   for j:=1 to M do
   begin
   write (zp[i,j]:0:1 );
   write(' ');
   end;
   writeln;
   end;
  End;

  VAR
  a:masiv;
  kl:integer;
  BEGIN
  clrscr;
  vvod(a,kl);
  vuvod(a,kl);
  nalog(a,kl);
  readkey
  END.

выдаёт бред, что не так?
и если кто подскажет как третью переработать буду очень благодарен
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Цитата
выдаёт бред, что не так?
Здесь ошибка:
procedure vvod(var zp:masiv; K:integer);
Ты не возвращаешь значение K в основную программу, поэтому ничего и не печатается...

Так попробуй:
procedure vvod(var zp:masiv; Var K:integer);
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


у меня в таком виде не выводит ничего...
надо не
procedure vvod(var zp:masiv; K:integer);

а
procedure vvod(var zp:masiv; var K:integer);


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Пионер
**

Группа: Пользователи
Сообщений: 143
Пол: Мужской

Репутация: -  0  +


good.gif
надо же, а я столько сидел, ломал голову,
ну а с третьей поможете...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


Цитата(Yurka @ 21.10.2006 14:20) *

good.gif
надо же, а я столько сидел, ломал голову,
ну а с третьей поможете...

конечно поможем!
но ты сначала сам попробуй


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 12.08.2020 13:27
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name