Форум программистов, компьютерный форум, киберфорум
Turbo Pascal
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/8: Рейтинг темы: голосов - 8, средняя оценка - 5.00
11 / 11 / 2
Регистрация: 01.10.2010
Сообщений: 139
1

Где допущена ошибка?

18.09.2011, 09:05. Показов 1506. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
База данных учета автомобилей.
Управление:
Enter - добавление записи в базу.
z - просмотр записей.
X - удаление записи.

Я добавляю несколько записей, затем удаляю какую-нибудь запись и нажимаю Enter, чтобы добавить еще одну запись и почему-то первое поле у меня автоматически заполняется, т.е. на экран выводиться Марка:Год: а заполнение начинается со 2-го поля.
Немогу понять в чем ошибка, помогите пожалуйста.

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
uses crt;
type
 p=^cars;
 cars=record
  mark:string;
  year:integer;
  price:integer;
  class:string;
  next:p;
  prev:p;
  end;
 
var head:p;
    key:char;
 
procedure create(var ahead:p);
var cur,p1:p;
    i:integer;
    key2:char;
begin
i:=2;
if ahead=nil then
    begin
    new(ahead);
    writeln('1-ya zapis:');
    write('Marka:');
    readln(ahead^.mark);
    write('God');
    readln(ahead^.year);
    write('Klass:');
    readln(ahead^.class);
    write('Cena:');
    readln(ahead^.price);
    ahead^.next:=nil;
    ahead^.prev:=nil;
    end
else
    begin
    cur:=ahead;
    while cur^.next<>nil do
    begin
    inc(i);
    cur:=cur^.next;
    end;
 
    new(p1);
    cur^.next:=p1;
    p1^.next:=nil;
    p1^.prev:=cur;
    cur:=p1;
    writeln(i,'-ya zapis:');
    write('Marka:');
    readln(cur^.mark);
    write('God:');
    readln(cur^.year);
    write('Klass:');
    readln(cur^.class);
    write('Cena:');
    readln(cur^.price);
 
   end;
 
end;
 
procedure del(var ahead:p);
var cur,p1:p;
    num,numd,count:integer;
begin
count:=0;
cur:=ahead;
 
while cur<>nil do
begin
cur:=cur^.next;
inc(count);
end;
 
numd:=1;
repeat
write('VVedite nomer udalyaemoi zapisi:');
read(num);
if (num>count)or(num<0)then
 begin
 clrscr;
 writeln('Dannoi zapisi net');
 end;
until (num>0)and(num<=count);
 
if (num>1) then begin
cur:=ahead;
 
while numd<num-1 do
begin
cur:=cur^.next;
inc(numd);
end;
 
p1:=cur^.next;
cur^.next:=cur^.next^.next;
cur:=cur^.next;
cur^.prev:=cur^.prev^.prev;
dispose(p1);
end;
 
if num=1 then
begin
cur:=ahead^.next;
cur^.prev:=nil;
p1:=ahead;
ahead:=cur;
dispose(p1);
end;
 
end;
 
procedure view(ahead:p);
var cur:p;
    i:integer;
begin
cur:=ahead;
i:=0;
while cur<>nil do
begin
inc(i);
writeln(i,'-ya zapis:');
writeln('Marka:',cur^.mark);
writeln('God',cur^.year);
writeln('Klass:',cur^.class);
writeln('Cena:',cur^.price);
writeln;
cur:=cur^.next;
end;
end;
 
begin
head:=nil;
clrscr;
create(head);
repeat
key:=readkey;
case key of
#13:begin
    clrscr;
    create(head);
    end;
 
'z':begin
    clrscr;
    view(head);
    end;
 
'x':begin
    clrscr;
    del(head);
    end;
end;
until key=#27;
end.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.09.2011, 09:05
Ответы с готовыми решениями:

В каком из условных операторов допущена синтаксическая ошибка
В каком из условных операторов допущена синтаксическая ошибка: A) if B=0 then (‘Деление на ноль...

Укажите номер строки программы, в которой допущена ошибка, поставьте запятую, а затем без пробелов запишите строку правильно.
Укажите номер строки программы, в которой допущена ошибка, поставьте запятую, а затем без пробелов...

Где допущена ошибка?
clc clear all syms x y=sin(x)-2.*cos(x) j=int(y,-2,2) double(j) При запуске программы...

Где допущена ошибка
Не могу понять почему не происходит авторизация метод //Метод авторизует пользователя на сайте....

5
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
18.09.2011, 09:37 2
В код не вникал, но думаю не стоит клавишу Enter использовать в меню, она же еще выполняет и чтение readln.

Добавлено через 8 минут
Не понял как осуществляется выход из процедуры create(head); Что ни нажимал просит вводить новую запись...
0
11 / 11 / 2
Регистрация: 01.10.2010
Сообщений: 139
18.09.2011, 09:49  [ТС] 3
Выход производится когда заполняется последнее поле Цена, а потом если снова нажимаешь Enter нужно заполнять новую запись, т.е. после заполнения последнего поля нужно нажимать Z-чтобы посмотреть записи, X-чтобы удалить запись.

Изменение клавиши не помогло
0
11 / 11 / 2
Регистрация: 01.10.2010
Сообщений: 139
19.09.2011, 13:17  [ТС] 4
Хм...проблема была в строке 82, исправил на readln стало все норм. Кто-нибудь может объяснить почему был косяк?
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
19.09.2011, 13:22 5
В Турбо Паскале, в отличие например от АВС процедура read считывает информацию с клавиатуры в буфер и чтобы ее вытащить нужно написать readln
Pascal
1
2
3
4
read(a);
read(b);
read(c);
readln;
поэтому лучше сразу писать
Pascal
1
readln(a,b,c);
1
481 / 119 / 17
Регистрация: 30.09.2010
Сообщений: 473
19.09.2011, 13:25 6
Потому, что read оставляет #13#10 в буфере ввода (не очищает его до конца), и следующая операция ввода понимает эту ситуацию так, как если бы была нажата клавиша <Enter> - операции ввода работают не с клавиатурой, а с буфером. Можно вообще извратиться и в буфер фигни напихать, а программа поймет это как ввод с клавиатуры.
1
19.09.2011, 13:25
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.09.2011, 13:25
Помогаю со студенческими работами здесь

Где допущена ошибка? :( Движение фигуры по кругу
Доброе времени суток! Помогите, пожалуйста, закончить программу. Долго уже над ней мучаюсь и не...

Допущена ошибка в коде программы, где конкретно?
VBA, Word. Программа работает правильно, ошибок не выдает, но результата нет (ничего не изменяет)....

Решение СЛАУ методом Зейделя, где допущена ошибка?
Нужно решить эту систему методом Зейделя с точностью 0,001 Сначала я привожу ее к удобному для...

Не проходит выборка данных. где допущена ошибка и поясните почему? Спасибо
&lt;? if (isset($_GET)) {$cat = $_GET; } if (!isset($cat)) {$cat = 0;} /* Проверяем, является ли...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru