Форум программистов, компьютерный форум, киберфорум
Наши страницы
Pascal ABC
Войти
Регистрация
Восстановить пароль
 
Chimera_
28 / 8 / 1
Регистрация: 26.05.2010
Сообщений: 230
1

Как определить, что пользователь ничего не ввел в поле?

04.02.2015, 13:40. Просмотров 384. Ответов 3
Метки нет (Все метки)

Доброго времени суток!
Задание такое: "дан файл, содержащий сведения об учениках школ: указывается фамилия, имя, отчество, адрес, класс, номер телефона, оценка полученная за три темы. Определить:
а)кол-во учеников, получившие оценки только 4 или 5 за три темы;
б) определить кол-во учеников, не имеющие телефонов."
Прогу написала:
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
program pr1;
label label1;
type b=record
f:string[15];
i:string[15];
o:string[15];
a:string[35];
k:string[15];
t:string[15];
ocenka:integer;
end;
var klass: b;
f1: file of b;
n: integer;
 
procedure add;
    var nzap,i:integer;
begin
assign(f1,'dat1.dat');
rewrite(f1);
writeln('введите количество записей');
readln(nzap);
writeln('введите информацию об учениках');
for i:=1 to nzap do
begin
writeln('введите фамилию ученика');
readln(klass.f);
writeln('введите имя ученика');
readln(klass.i);
writeln('введите отчество ученика');
readln(klass.o);
writeln('введите адрес ученика');
readln(klass.a);
writeln('введите класс ученика');
readln(klass.k);
writeln('введите номер телефона ученика (если телефон отсутствует, необходимо указать "Нет")');
readln(klass.t);
writeln('введите оценку ученика');
readln(klass.ocenka);
write(f1,klass);
writeln('--------------------------');
end;
close(f1);
end;
 
procedure FourFive ; 
begin
assign(f1,'dat1.dat');
reset(f1);
while not eof(f1) do
begin
read(f1,klass);
if (klass.ocenka >= 4) then writeln(klass.f,' из ',klass.k,' его/ее оценка ',klass.ocenka);
end;           
close(f1);
writeln('--------------------------');
end;
 
 
procedure NotHave;
begin
 
assign(f1,'dat1.dat');
reset(f1);
while not eof(f1) do
begin
  read(f1,klass);
  if (klass.t = 'нет') or (klass.t = 'Нет') or (klass.t = 'НЕТ')
  then writeln(klass.f,' из ',klass.k);
end;         
close(f1);
writeln('--------------------------');
end;
 
 
begin
label1: writeln('для ввода данных нажми"1", для решения задач - 2, или 3');
writeln('2 - Фамилии учеников, получивших за 3 темы на 4 и 5');
writeln('3 - Фамилии студентов, защитивших диплом в определенный день');
readln(n);
 
case n of
1: begin
add;
goto Label1;
end;
2: begin
FourFive;
goto Label1;
end;
3: begin
NotHave;
goto Label1;
end;
else exit;
end;
end.
Мне нужно, чтобы в случае отсутствия телефона у ученика не нужно было бы писать "нет". Как отследить событие перехода к следующей записи? Пробовала проверять klass.t = '', klass.t = nil, klass.t = #1310, klass.t = '/r', не помогает
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.02.2015, 13:40
Ответы с готовыми решениями:

Продолжить работу программы если пользователь ничего не ввел
uses crt; var a,x:integer; begin clrscr; a:=77; randomize; writeln(' нажмите 0 для выхода');...

Определить, какую скобку ввел пользователь
Нужно проверить правельно ли сделана. Program number17; var s:char; begin ...

Определить, сколько чисел ввел пользователь
Напишите программу, которая запрашивает у пользователя числа до тех пор, пока каждое следующее...

Вот часть кода, в нем я должен сделать если я ничего не ввожу то чтоб вывело сообщение о том что пользователь не ввел данных, но у меня не выходит
void Magazine::Input() { system("cls"); //locale::global(locale("")); ...

Как определить, что пользователь ничего не выбрал в OpenFileDialog
Открываю диалог для загрузки фото, все работает и загружает, но есть одна проблема. Если не выбрать...

3
Puporev
Модератор
57149 / 43620 / 30152
Регистрация: 18.05.2008
Сообщений: 103,996
04.02.2015, 14:05 2
А почему нельзя вводить нет? Ведь это строковое поле.
Pascal
1
2
writeln('введите номер телефона ученика (если телефон отсутствует, необходимо указать "Нет")');
readln(klass.t);//здесь вводите нет
Считать можно так
Pascal
1
if klass.t='нет' then inc(kol);
0
Chimera_
28 / 8 / 1
Регистрация: 26.05.2010
Сообщений: 230
04.02.2015, 14:27  [ТС] 3
Puporev, я так и делаю
Pascal
1
if (klass.t = 'нет') or (klass.t = 'Нет') or (klass.t = 'НЕТ')
Но это же неудобно. Предположим, что такая программа реально где-то используется. Пользователю ведь проще просто нажать Enter при вводе, чем набирать каждый раз "нет"

Добавлено через 7 минут
goto - это прихоть препода, знаю, что его использование нежелательно практически всегда и без него в данном конкретном случае вполне можно было бы обойтись
0
Puporev
Модератор
57149 / 43620 / 30152
Регистрация: 18.05.2008
Сообщений: 103,996
04.02.2015, 14:53 4
Цитата Сообщение от Chimera_ Посмотреть сообщение
Пользователю ведь проще просто нажать Enter при вводе, чем набирать каждый раз "нет"
Да,в Турбо Паскаль так и делают, получая пустую строку
Pascal
1
if klass.t = '' then
но в АВС это вроде не проходит...

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
04.02.2015, 14:53
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.02.2015, 14:53

Если пользователь ничего не ввел, выводить error
здравствуйте а какой нужно использовать чтоб если пользователь не чего не ввел выводить error знаю...

Как проверить, что пользователь ввел число в переменную string?
Скажите пожалуйста как проверить что пользователь ввел число в переменную string? И как его потом...

Как прочитать вторую строку и сверить ее с тем, что ввел пользователь
вот частичка кода для авторизации: ftp_get($connect,...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru