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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 23.09.2011, 20:22   #1
sporter-92
 
Регистрация: 29.12.2009
Сообщений: 7
По умолчанию массив

Уважаемые программисты, я прошу помощи у вас в решении этих двух задач. Так получилось что давно учился в институте(армия, женитьба), а тут решил поступить и вот дали задания, а я не "в зуб ногой"

1. В файле типа RECORD хранится информация о наличии на складе запасных частей для ремонта бытовых приборов: наименование детали, количество единиц на складе, цена одной детали, суммарная стоимость деталей каждого наименования, среднемесячная норма потребления. Составить программу для получения:
• Сведений о деталях, суммарна стоимость которых наибольшая;
• Информации о общем количестве всех деталей на складе.

2. Дан массив 6 х 6. Заменить на 1 элементы тех столбцов, где диагональный элемент отрицательный.
sporter-92 вне форума
Старый 23.09.2011, 21:24   #2
fbus
Форумчанин
 
Аватар для fbus
 
Регистрация: 23.10.2008
Сообщений: 460
По умолчанию

стучись в аську, сделаю
fbus вне форума
Старый 24.09.2011, 06:52   #3
TinMan
Форумчанин
 
Аватар для TinMan
 
Регистрация: 05.09.2011
Сообщений: 869
По умолчанию

Цитата:
Сообщение от fbus Посмотреть сообщение
стучись в аську, сделаю
fbus, для тебя есть раздел Фриланс, сиди там и не высовывайся..

From Stilet: Ты в курсе что за оскорбление форумчан тебе горчичник положен? Я в следующий раз так и сделаю - в баньку отправишся если продолжишь вести себя неполиткорректно

sporter-92, не рекомендую клевать на подобную "помощь". Он за тебя сделает, ты ему заплатишь, а потом снова окажешься ни с чем. Работай со всеми через форум - пользы будет гораздо больше больше.

Цитата:
2. Дан массив 6 х 6. Заменить на 1 элементы тех столбцов, где диагональный элемент отрицательный.
Я написал тебе решение с пояснениями (не проверял). В TurboPascal оно не будет компилироваться (он не понимает такую форму комментариев). Скачай FreePascal с сайта freepascal.org (иди в downloads и выбирай Win32).
Успехов тебе.
Код:
const
  n= 6;  // все конкретные числа заводим в константы
  r= 1;  // замена

var
  i,j: integer;
  a: array[1..n,1..n] of integer;  // объявили массив целых чисел

begin
  for i:=1 to n do for j:=1 to n do  // в двойном цикле заполняем массив
    a[i,j]:= Random(101)-50;  // случайными числами от -50 до +50
  // вывод массива на экран
  Writeln('начальные данные:');   // corrected, Write to Writeln
  for i:=1 to n do begin   // построчно
    for j:=1 to n do Write(a[i,j]:4);    // поэлементно, 4 символа на число
    Writeln   // переход на следующую строку
  end;

  // главный рабочий цикл
  for j:=1 to n do   // проходим по всем столбцам (j - номер столбца)
    if a[j,j]<0 then   // проверка диаг. элемента на отрицательность
      for i:=1 to n do a[i,j]:= r;   // замена элементов j-го столбца

  Writeln;  // пропуск строки
  // вывод массива на экран
  Writeln('преобразованный массив:');
  for i:=1 to n do begin   // построчно
    for j:=1 to n do Write(a[i,j]:4);    // поэлементно, 4 символа на число
    Writeln   // на следующую строку
  end;
  Readln   // задержка до нажатия Enter
end.
Задавай вопросы, что непонятно
Предпочитаю на "ты".

Последний раз редактировалось Stilet; 27.09.2011 в 08:22. Причина: ошибочка была небольшая
TinMan вне форума
Старый 24.09.2011, 17:14   #4
sporter-92
 
Регистрация: 29.12.2009
Сообщений: 7
По умолчанию

огромное спасибо, если бы не TinMan, не знаю как и отблагодарить. Спасибо это большая помощь

TinMan я скачал FreePascal, при запуске программы пишет в compiler messegers :
12.pas(20,34) Error I1legal expression
12.pas(26,4) Fatal: There were 1 errors compiling module, stopping
12.pas(0) Fatal: Compilation aborted

Что это, и как с ним бороться?

Последний раз редактировалось Stilet; 27.09.2011 в 08:20.
sporter-92 вне форума
Старый 24.09.2011, 18:11   #5
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

а на какую строку указывает? (первая ошибка)
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума
Старый 24.09.2011, 18:12   #6
sporter-92
 
Регистрация: 29.12.2009
Сообщений: 7
По умолчанию

я не могу определить

одну исправил

всё нашёл проблему, спасибо за помощь

Последний раз редактировалось Serge_Bliznykov; 26.09.2011 в 15:25.
sporter-92 вне форума
Старый 25.09.2011, 02:42   #7
TinMan
Форумчанин
 
Аватар для TinMan
 
Регистрация: 05.09.2011
Сообщений: 869
По умолчанию

Цитата:
Сообщение от sporter-92 Посмотреть сообщение
я не могу определить
"Поиграй" немного с FP. Попробуй сделать минимальную прогу ("Hello Wordl"). А потом НАРОЧНО делай в ней ошибки - посмотри, как будет реагировать компилятор. Когда знаешь, ГДЕ ошибка, проще разобраться с сообщениями об ошибках.

Еще одно замечание.
Есть ошибки КОМПИЛЯЦИИ и есть ошибки ВЫПОЛНЕНИЯ - последние появляются после компиляции, если она прошла успешно и прога запущена. Про них тоже можно узнать, в какой строке они произошли. Но надо изменить настройки среды FP.
Зайди в раздел Options - Debugger. Там выбери пункт "Generate also backtrace line info".

И ОБЯЗАТЕЛЬНО зайди в Options - Compiler - Generated Code и поставь крестики на всех проверках (Range check ... Obj Meth call). Это тебе поможет искать скрытые ошибки. Там же, сними ВСЮ оптимизацию - она мешает отладке.

Приходи еще и спрашивай.
Предпочитаю на "ты".
TinMan вне форума
Старый 25.09.2011, 02:51   #8
TinMan
Форумчанин
 
Аватар для TinMan
 
Регистрация: 05.09.2011
Сообщений: 869
По умолчанию

Еще добавлю:
Цитата:
Сообщение от Alex11223 Посмотреть сообщение
а на какую строку указывает? (первая ошибка)
Номер строки - первое число в скобках, в данном случае 20. У меня тот код скомпилировался - видимо, у Sporter-92 была ошибка при копировании.

Кстати, Sporter, удобно еще иметь Far:
http://www.farmanager.com/index.php?l=ru
У него есть нужные кодировки (866 и 1256), через него удобно копировать из браузера (если напрямую в FP, то проблема с русскими буквами).
Предпочитаю на "ты".
TinMan вне форума
Старый 25.09.2011, 03:04   #9
TinMan
Форумчанин
 
Аватар для TinMan
 
Регистрация: 05.09.2011
Сообщений: 869
По умолчанию

Откомпилировал и запустил, и онаружил один недочет. В строке 13 нужно не Write, а Writeln - иначе формат сбивается. Исправь, пожалуйста (я сейчас подправлю в оригинале).

И еще одно.
В том виде, как оно есть, массив заполняется псевдослучайными значениями - случайная последовательность повторяется при каждом запуске. Это очень удобно для отладки. Но чтобы потом получить по-настоящему случайные числа (раздные от запуска к запуску программы), вставь перед циклом заполнения такую строку:
Цитата:
Randomize;
Предпочитаю на "ты".
TinMan вне форума
Старый 26.09.2011, 15:05   #10
sporter-92
 
Регистрация: 29.12.2009
Сообщений: 7
По умолчанию

TinMan, мне помогли написать код к 1 задаче, но она не компилируется. Я когда увидел код ошалел, от того какой он длинный и понятное дело не разберусь. Если не затруднит посмотри:

Код:
Program PascalGuru;
uses crt;

type m = record
          fio   :string[40];
          tip   :string[20];
          god   :integer;
          ssp   :real;
          ndef  :string[20];
          data  :string[20];
         end;

var massiv:array[1..50] of m;
    i,n,code,zgod:integer;
    summa:real;
    s:string;
    f:text;
function mindata:string;      {функция нахождения самой ранней даты}
type data=record
                den:integer;
                mes:integer;
                god:integer;
          end;
var i,t,k,code,mingod:integer;
    m_d,m_m,m_g:integer;
    x:string;
    A:array [1..50] of data;
begin
for i:=1 to n do
begin
s:=massiv[i].data; {!}
x:=copy(s,1,pos('.',s)-1 );
      delete(s,1,pos('.',s) );
      val(x,t,code);
      
             A[i].den:=t;
      x:=copy(s,1,pos('.',s)-1 );
      delete(s,1,pos('.',s) );
      val(x,t,code);
             A[i].mes:=t;
      val(s,t,code);
             A[i].god:=t;
end;
m_g:=A[1].god; t:=1;
for i:=2 to n do
    if A[i].god<m_g then begin m_g:=A[i].god; t:=i;  end;

m_m:=A[t].mes; k:=t;
for i:=t+1 to n do
    if A[i].god=m_g then
    if A[i].mes<m_m then begin m_m:=A[i].mes; k:=i;  end;

m_d:=A[k].den;
for i:=k+1 to n do
    if A[i].god=m_g then
    if A[i].mes=m_m then
    if A[i].den<m_d then m_d:=A[i].den;
    
s:='';
str(m_d,x);
if length(x)=1 then s:=s+'0'+x+'.' else s:=s+x+'.';
str(m_m,x);
if length(x)=1 then s:=s+'0'+x+'.' else s:=s+x+'.';
str(m_g,x);
s:=s+x;
    
mindata:=s;
end;
begin
assign (f,'bd211.txt' ); reset (f);

i:=0;
while not eof(f) do begin
inc(i);
readln(f,s);
massiv[i].fio:=copy(s,1,pos(';',s)-1 );                  delete(s,1,pos(';',s)+1 );
massiv[i].tip:=copy(s,1,pos(';',s)-1 );                  delete(s,1,pos(';',s)+1 );
val(copy(s,1,pos(';',s)-1 ),massiv[i].god,code );        delete(s,1,pos(';',s)+1 );
val(copy(s,1,pos(';',s)-1 ),massiv[i].ssp,code );        delete(s,1,pos(';',s)+1 );
massiv[i].ndef:=copy(s,1,pos(';',s)-1 );                 delete(s,1,pos(';',s)+1 );
massiv[i].data:=s;
end;
n:=i;
{  ниже представлен вывод всех записей на экран}
for i:=1 to n do
writeln(massiv[i].fio:15,massiv[i].tip:15,massiv[i].god:7,massiv[i].ssp:8:2,massiv[i].ndef:10,massiv[i].data:13);

writeln('1:');  writeln;
write('Byli prinyaty na remont ranishe drugih: ');  writeln;    writeln;

for i:=1 to n do
if massiv[i].data=mindata then
writeln(massiv[i].fio:15,massiv[i].tip:15,massiv[i].god:7,massiv[i].ssp:8:2,massiv[i].ndef:10,massiv[i].data:13);

writeln; writeln('2:');  writeln;
write('Vvedite GOD, dlya kotorogo nado poschitati summu: '); readln(zgod);
writeln;
summa:=0;
for i:=1 to n do
if massiv[i].god=zgod then summa:=summa+massiv[i].ssp;


writeln('Summa: ',summa:0:2);


close(f);
readln;
end.

________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 26.09.2011 в 20:41.
sporter-92 вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задан вектор X[20]. Положительные числа переписать в массив Y, а отрицательные в массив W leha_demi Помощь студентам 2 24.09.2011 18:12
Запись координат в массив в реал тайм, Как записать координаты в массив Dark19 Visual C++ 2 21.06.2011 18:45
Из массив А получить массив В, удвоив все нечётные элементы удвоены ( на Pascal) KARTER Помощь студентам 1 18.06.2011 19:58
Массив - Нужно написать массив и распечатать на экран с конца в начало(язык С++) econ Помощь студентам 1 29.05.2011 22:02
Упорядочить массив в порядке возрастания и напечатать входной и исходный массив. TheVenny Помощь студентам 3 26.11.2008 15:06