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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.12.2017, 22:50   #1
Tynya
Пользователь
 
Регистрация: 06.12.2017
Сообщений: 13
По умолчанию Меню в базе данных

Делаю базу данных. И у меня не работает нормально минюшка, где:
1. Заполнение данных
2. Вывод данных
3. Поиск по имени
И т.д.
Мой мозг еще не вырос для таких задач, а препад видимо не вникает в это...
Первый пункт у меня получился. Можно заносить данные. Но при нажатии других чисел у меня снова выводится текст из меню. Где я накосячила?
Вложения
Тип файла: zip proect_v3.zip (1.0 Кб, 8 просмотров)
Tynya вне форума Ответить с цитированием
Старый 06.12.2017, 23:18   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,515
По умолчанию

не знает сколько выводить. НЕ задано значение ПЕРВОГО параметра (n)
for i:=1 to 0 // НЕ выполнится НИ РАЗУ и стало быть нет никакого вывода

Код:
  procedure vivod (n:integer; var a:massiv);
  var i:integer;
  begin
  writeln ('Введите кол-во строк');
  readln (n);
  for i:=1 to n do
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 06.12.2017, 23:41   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

так устроит?

Код:
program tynya;

uses crt;

const
  m1 = 255;

type
  pcgame = record
    name: string[40];
    data: string[10];
    rating: integer;
    dlc: string[4];
    engine: string[15];
  end;

type
  massiv = array[1..m1] of pcgame;

procedure zap(var n: integer; var a: massiv);
var
  i: integer;
begin
  writeln('Введите кол-во строк');
  readln(n);
  for i := 1 to n do
    with a[i] do 
    begin
      writeln('Наименование: ');
      readln(name);
      writeln('Дата выхода: ');
      readln(data);
      writeln('Оценка metacritic: ');
      readln(rating);
      writeln('DLC: ');
      readln(dlc);
      writeln('Игровой движок: ');
      readln(engine);
    end;
end;

procedure vivod(n: integer; var a: massiv);
var
  i: integer;
begin
  for i := 1 to n do
    with a[i] do
      writeln(name:45, data:15, rating:10, dlc:10, engine:20);
end;

procedure engine(n: integer; var a: massiv);
var
  i: integer;
  z: string;
begin
  WriteLn('Введите название игры:');
  readln(z);
  for i := 1 to n do
  begin
    if (z = a[i].name) then
      writeln('Игра работает на ', a[i].engine);
  end;
end;

procedure maxin(n: integer; var a: massiv);
var
  i, max: integer;
  x: string;
begin
  max := a[1].rating;
  x := a[1].name;
  for i := 1 to n do 
    if (a[i].rating > max) then
    begin
      max := a[i].rating;
      x := a[i].name;
    end;
  writeln(x);
  writeln;
end;

procedure mini(n: integer; var a: massiv);
var
  i, min: integer;
  x: string;
begin
  min := a[1].rating;
  x := a[1].name;
  for i := 1 to n do
    if (a[i].rating < min) and (a[i].rating > 0) then
    begin
      min := a[i].rating;
      x := a[i].name;
    end;
  writeln(x);
  writeln;
end;

procedure dlc(n: integer; var a: massiv);
var
  i, y: integer;
begin
  for i := 1 to n do
  begin
    if a[i].dlc = '+' then
      inc(y);
  end;
  writeln(y);
  writeln;
end;

procedure infa(n: integer; var a: massiv);
var
  i: integer;
  z: string;
begin
  writeln('Введите имя игры: ');
  readln(z);
  for i := 1 to n do 
    if a[i].name=z then
    begin
      writeln('Наименование: ':45, 'Дата выхода: ':16, 'Оценка: ':11, 'DLC: ':10, 'Движок: ':20);
      writeln(a[i].name:45, a[i].data:15, a[i].rating:10, a[i].dlc:10, a[i].engine:20);
    end;
end;

procedure menu;
begin
  writeln('База данных игры');
  writeln('Выберите действие');
  writeln('1-заполнение');
  writeln('2-вывод');
  writeln('3-движок');
  writeln('4-макс');
  writeln('5-мин');
  writeln('6-длс');
  writeln('7-инфа');
  writeln('8-выход из программы');
  
end;

var
  games: massiv;
  k, n: integer;

begin
  clrscr;
  repeat
    menu; 
    readln(k);
    case k of 
      1: zap(n, games);
      2: vivod(n, games);
      3: engine(n, games);
      4: maxin(n, games);
      5: mini(n, games);
      6: dlc(n, games);
      7: infa(n, games);
      8: writeln('poka');
    end;
  until k = 8;
end.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 07.12.2017, 12:23   #4
Tynya
Пользователь
 
Регистрация: 06.12.2017
Сообщений: 13
По умолчанию

Спасибо!
Tynya вне форума Ответить с цитированием
Старый 07.12.2017, 12:23   #5
Tynya
Пользователь
 
Регистрация: 06.12.2017
Сообщений: 13
По умолчанию

Спасибо, уже пофиксила.))
Tynya вне форума Ответить с цитированием
Старый 07.12.2017, 13:18   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от Tynya Посмотреть сообщение
Спасибо, уже пофиксила.))
пожалуйста.

я ваш код исправил значительно, поэтому и выложил полностью.
У Вас по исправленному коду вопросов не возникло?
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ID в базе данных kuzmich БД в Delphi 5 17.12.2013 15:58
Поиск данных по таблице в базе данных Awesome96 БД в Delphi 1 03.12.2012 09:53
надо привязать php сайт к базе данных Access и что бы при заполнение формы на сайте данные сохранялись в базе Алёна_))) Microsoft Office Access 2 20.06.2012 12:24
сохранение данных в базе данных VaskoPavel Помощь студентам 6 13.09.2011 10:49