|
Вопрос # 3 276/ вопрос решён / |
|
Здравствуйте, эксперты!
рррр!! эти строки!!!
вот задача такая, вроде легкая, но ошибку кидает(((
известен проходной балл в универ
дана строка в которой ФИО и прох. балл отделены одним пробелом. вывести поступил ли он иль нет. помогите пожалуйста!
Приложение: Переключить в обычный режим- program Project2;
-
- {$APPTYPE CONSOLE}
-
- uses
- SysUtils;
- var s,num,str,l:string; n,k,i,b,c,cpp:integer;
- begin
- writeln('control post point'); readln(cpp);
- writeln('insert data'); readln(s);
- while pos(' ',s)>0 do
- begin
- b:=0;
-
- for i:=1 to pos(' ',s) do begin
- inc(n); end;
- delete(s,1,k);
-
- end;
- if l<cpp then
- write(s+' '++' don`t proshol') else
- write(s+' '+l+' proshol');
- readln;
- end.
-
 |
Вопрос задал: I{ () T (статус: Посетитель)
Вопрос отправлен: 12 октября 2009, 21:00
Состояние вопроса: решён, ответов: 2.
|
Ответ #1. Отвечает эксперт: Паровоз
Здравствуйте, I{ () T!
В строке
l:=length(s)
переменная l должна иметь целочисленный тип, а не строковый.
 |
Ответ отправил: Паровоз (статус: 10-ый класс)
Время отправки: 12 октября 2009, 21:34
Оценка за ответ: 5
Комментарий к оценке: спасибо)
|
Ответ #2. Отвечает эксперт: min@y™
Найди 10 отличий:
program p3276;
{$APPTYPE CONSOLE}
uses
SysUtils;
// Функция извлечения из строки завершающего числа
function ExtractLastNumber(const S: string): Integer;
var
Number: string; // Кусок строки, содержащий число
Index: Integer; // Параметр цикла
begin
Number:= ''; // Инициализация переменной
// Проход по строке от конца к началу - извлечение числа.
for Index:= Length(S) downto 1 do
if S[Index] in ['0'..'9'] // если текущий символ - цифра,
then Number:= S[Index] + Number // то добавляю её к куску строки, содержащему число,
else Break; // иначе - выхожу из цикла (число получено).
// Преобразование куска строки, содержащего число, в 32-битное целое (Integer):
// функция TryStrToInt() возвращает True, если первый параметр (Number)
// действительно удалось преобразовать в 32-битное целое.
if not TryStrToInt(Number, Result)
then Result:= -1; // <--- если преобразование не удалось.
end;
var
Data: string; // Вводимая строка (ФИО и балл)
Cpp: Integer; // Вводимый проходной балл.
L: Integer; // Извлекаемый набранный балл из строки Data
begin // начало проги :)
Write(' Enter the control post point: ');
ReadLn(Cpp); // Ввод проходного балла
Write(' Enter the data: ');
ReadLn(Data); // Ввод ФИО и балла
L:= ExtractLastNumber(Data); // Извлечение балла из введённой строки
if L <> -1 // Если извлечение успешно,
then if L < Cpp // то: если балл меньше проходного,
then write(' don`t proshol') // то вывод "не прошёл"
else write(' proshol') // иначе - "прошёл"
else WriteLn(' Data is incorrect.'); // иначе - вывод "неверно введённые данные" (в конце строки - нечисло)
ReadLn; // Ожидание нажатия Enter
end. // конец проги :)
 |
Ответ отправил: min@y™ (статус: Доктор наук)
Время отправки: 13 октября 2009, 08:52
Оценка за ответ: 5
Комментарий к оценке: ОБАЛДЕТЬ!!!!! все понятно(иначе и быть не может)
|
Мини-форум вопроса
Всего сообщений: 25; последнее сообщение — 14 октября 2009, 22:15; участников в обсуждении: 5.
Страницы: [« Предыдущая] [1] [2]
|
I{ () T (статус: Посетитель), 14 октября 2009, 19:23 [#21]:
зачем? а не лучше ли код укорачивать по возможности? легче наверно ведь через val чем целую функцию писать?(хотя, дело вкуса)
у меня нет мании величия...Великие люди этим не страдают)))
.......лень порождает ненависть к жизни......
|
|
Егор (статус: 10-ый класс), 14 октября 2009, 19:39 [#22]:
I{ () T:
а как бы ты написал подобную программу сейчас?
Опасайтесь багов в приведенном выше коде; я только доказал корректность, но не запускал его.
— Donald E. Knuth.
|
|
I{ () T (статус: Посетитель), 14 октября 2009, 19:40 [#23]:
ввод всех данных. далее, так как сказано что фио отделено ОДНИМ пробелом от балла, то нахожу этот балл...вот тут загвостка, прервод строки в число...далее сравнение балла студента с проходным и потом вывод...вроде все
у меня нет мании величия...Великие люди этим не страдают)))
.......лень порождает ненависть к жизни......
|
|
I{ () T (статус: Посетитель), 14 октября 2009, 19:41 [#24]:
program Project2;
{$APPTYPE CONSOLE}
uses
SysUtils;
var s,num,str:string; n,k,i,b,c,l,cpp:integer;
begin
writeln('control post point'); readln(cpp);
writeln('insert data'); readln(s);
while pos(' ',s)>0 do
begin
b:=0;
for i:=1 to pos(' ',s) do begin
inc(n); end;
delete(s,1,k); BREAK;
l:=length(s);
s := s + ' ';
if l<cpp then
write(s,l,' don''t proshol') else
write(s,l,' proshol');
end;
readln;
end. ВВОЖУ, ВСЕ НОРМ, НО ПОТОМ ОТВЕТ НЕ ВЫВОДИТ
у меня нет мании величия...Великие люди этим не страдают)))
.......лень порождает ненависть к жизни......
|
|
min@y™ (статус: Доктор наук), 14 октября 2009, 22:15 [#25]:
Цитата (I{ () T):
ВВОЖУ, ВСЕ НОРМ, НО ПОТОМ ОТВЕТ НЕ ВЫВОДИТ
Задолбал, возьми мою прогу.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
31 января 2011, 19:36: Статус вопроса изменён на решённый (изменил модератор Ерёмин А.А.): Автоматическая обработка (2 и более ответов с оценкой 5)
Страницы: [« Предыдущая] [1] [2]
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|