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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 27.09.2011, 03:46   #11
TinMan
Форумчанин
 
Аватар для TinMan
 
Регистрация: 05.09.2011
Сообщений: 869
По умолчанию

Цитата:
Сообщение от sporter-92 Посмотреть сообщение
TinMan, мне помогли написать код к 1 задаче, но она не компилируется.
У меня все скомпилировалось. При запуске программа сразу пытается открыть файл bd211.txt, и если его нет - вываливается с ошибкой 2 (файл не найден). Если создать пустой файл, прога работает - только, ессно, вся база по нулям.

В этой программе есть неточность. В условии говорится про файл типа RECORD, а в ней использован файл типа text. Использовать text удобнее, поскольку его можно наполнять в обычном блокноте (а для типа record придется заполнение писать самому). Но условие есть условие..

Программы такого типа всегда громоздки (потому люди пользуются готовыми базами данных), но ничего сложного в них нет. Просто нужно аккуратно все прописать
Цитата:
Я когда увидел код ошалел, от того какой он длинный и понятное дело не разберусь.
Скажи,
1. сколько у тебя есть времени;
2. насколько серьезно ты хочешь вникнуть.
Я (и не только я) могу помочь, но только если ты сам хочешь разобраться.
Предпочитаю на "ты".
TinMan вне форума
Старый 28.09.2011, 23:19   #12
sporter-92
 
Регистрация: 29.12.2009
Сообщений: 7
По умолчанию

Спасибо за отклик. Времени есть до понедельника. Хотелось бы разобраться что к чему и откуда куда. Сразу вопрос: "(а для типа record придется заполнение писать самому)." Как это делается, если не затруднит в примерах
sporter-92 вне форума
Старый 29.09.2011, 04:29   #13
TinMan
Форумчанин
 
Аватар для TinMan
 
Регистрация: 05.09.2011
Сообщений: 869
По умолчанию

пример? ну, как-то так..
Код:
type
  tRec= record
    item: string;  // название
    price: real;  // цена
    total: integer;  // количество
    rate: real;  // расход (средний расход может быть нецелым)
  end;
    
var
  Store: array[1..m] of tRec;
  n: integer;   // заполненность массива

...
function AddRec: integer;
begin
  Inc(n);
  with Store[n] do begin
    Write('item title: ');
    Readln(item);
    Write('price: ');
    Readln(price);
    Write('quantity: ');
    Readln(total);
    Write('monthly rate: ');
    Readln(rate)
  end;
  AddRec:= n
end;
(писал прямо тут, могут быть ошибки) Это простейший ввод без проверок на корректность, без защиты от дурака. Кроме него, по-хорошему-то, нужна еще и возможность редактирования - и это даже в самом простом варианте будет сложнее, чем ввод.

Если честно, мне кажется, что до пнд слишком мало времени..
Предпочитаю на "ты".
TinMan вне форума
Старый 30.09.2011, 22:40   #14
sporter-92
 
Регистрация: 29.12.2009
Сообщений: 7
По умолчанию

TinMan, был у педагога сегодня, он сообщил мне что программы не правильно написаны.

2.
Код:
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 Writeln(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.
"
И еще одно.
В том виде, как оно есть, массив заполняется псевдослучайными значениями - случайная последовательность повторяется при каждом запуске. Это очень удобно для отладки. Но чтобы потом получить по-настоящему случайные числа (раздные от запуска к запуску программы), вставь перед циклом заполнения такую строку:
Цитата:
Randomize; "

я не разобрался в какую строчку вставить "Randomize;"....скорее всего из-за этого и забраковали

вопрос 2.

Как быть с первой задачей "при запуске программа сразу пытается открыть файл bd211.txt, и если его нет - вываливается с ошибкой 2 (файл не найден). Если создать пустой файл, прога работает - только, ессно, вся база по нулям."
Как это исправить?
sporter-92 вне форума
Старый 30.09.2011, 22:46   #15
sporter-92
 
Регистрация: 29.12.2009
Сообщений: 7
По умолчанию

Код:
begin
for i:=1 to n do for j:=1 to n do
a[i,j]:=Random(101)-50;
write('начальные данные:');
for i:=1 to n do begin
for j:=11 to n do write(a[i,j]:4);
writeln
end;
откуда число J:=11?
sporter-92 вне форума
Старый 30.09.2011, 23:35   #16
TinMan
Форумчанин
 
Аватар для TinMan
 
Регистрация: 05.09.2011
Сообщений: 869
По умолчанию

Цитата:
Сообщение от sporter-92 Посмотреть сообщение
TinMan, был у педагога сегодня, он сообщил мне что программы не правильно написаны.
, ну, это их любимое занятие - шпынять студентов, особенно если сделано не так, как они говорили )). Нужно быть к этому готовым. А это значит - разобраться так, чтобы уметь ответить на любой вопрос. Что он еще говорил? Если ничего - тебе надо было вытягивать из него инфу: "скажите, пожалуйста, из чего именно можно сделать такой вывод". Или: "это относится к тому, как программа работает, или к способу реализации?" Не отключай мозги при разговоре с препом и не бойся. Задавай вопросы.

Цитата:
я не разобрался в какую строчку вставить "Randomize;"....скорее всего из-за этого и забраковали
Попробую на этом примере показать тебе, как надо поступать в будущем.

1. смотришь документацию. У тебя есть учебник по Pascal? В любом виде, бумажном или электронном. Если нет - приобрети.

2. думаешь.. Если мы вставим ПОСЛЕ процесса заполнения массива - сможет это повлиять на его значения? Очевидно, что нет. Значит, вставлять нужно ДО заполнения. Тут заполнение идет сразу, так что это однозначно определяет место вставки: самая первая строка тела программы.

3. экспериментируешь.. Вставь в ЛЮБОЕ место и запусти прогу (не бойся, комп НЕ ВЗОРВЕТСЯ). Исправилось? Если нет - переставь в другое место и повтори. Если да - попробуй осмыслить результат.

4. спрашиваешь. Можно в этой теме, а можно создать другую, с одним очень коротким вопросом: "куда вставлять Randomize, чтобы заполнение массива не было одинаковым?"

Первые три пункта не обязательно в этой последовательности, но 4 лучше в конце. Понял? И учти: это не только для новичков, Я ТОЖЕ ТАК ПОСТУПАЮ. Эти способы - главное в понятии "быть программистом".

Цитата:
Как быть с первой задачей "при запуске программа сразу пытается открыть файл bd211.txt, и если его нет - вываливается с ошибкой 2 (файл не найден). Если создать пустой файл, прога работает - только, ессно, вся база по нулям."
Как это исправить?
Обрабатывать ошибку открытия файла. В случае "файл не найден" создавать пустую базу, иначе читать файл. Вот так примерно можно:
Код:
{$I-}  // отключение выхода из программы по ошибке ввода
Reset(f);  // попытка открыть файл
{$I+}  // снова включить
if IOresult=0 then  // если не было ошибки при открытии
  <читаем файл>
Спортер, активнее. Иначе я не смогу помочь. Обучение - это 20% учитель и 80% сам ученик.
Предпочитаю на "ты".
TinMan вне форума
Старый 23.04.2013, 17:45   #17
Денис20
Новичок
Джуниор
 
Регистрация: 23.04.2013
Сообщений: 1
По умолчанию

ребят, а с решением этой задачи мог бы кто помочь??


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


Купить рекламу на форуме - 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