|
Вопрос # 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] [Следующая »]
|
Паровоз (статус: 10-ый класс), 13 октября 2009, 11:19 [#1]:
Цитата:
Найди 10 отличий
Проще найти 10 совпадений:
1) program
2) {$APPTYPE CONSOLE}
3) uses SysUtils;
4) :=
5) begin
6) for
7) do
8) end
9) write
10) readln
|
|
I{ () T (статус: Посетитель), 13 октября 2009, 16:19 [#2]:
2 min@y)))) не в обиду, но вы как всегда на высоком полете ее написали))) я ай эм школьник пока) но все равно спасибо=)
у меня нет мании величия...Великие люди этим не страдают)))
.......лень порождает ненависть к жизни......
|
|
I{ () T (статус: Посетитель), 13 октября 2009, 16:26 [#3]:
write(s+' '+l+' don`t proshol') else
write(s+' '+l+' proshol');........не совместимы данные
у меня нет мании величия...Великие люди этим не страдают)))
.......лень порождает ненависть к жизни......
|
|
min@y™ (статус: Доктор наук), 13 октября 2009, 16:35 [#4]:
Цитата (I{ () T):
не в обиду, но вы как всегда на высоком полете ее написали))) я ай эм школьник пока) но все равно спасибо=)
А чо, не работает, что ли?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
I{ () T (статус: Посетитель), 13 октября 2009, 16:37 [#5]:
работает. железно работает. но у училки шары будут отсего кода......и мноооого вопросов))
у меня нет мании величия...Великие люди этим не страдают)))
.......лень порождает ненависть к жизни......
|
|
min@y™ (статус: Доктор наук), 13 октября 2009, 16:51 [#6]:
Цитата (I{ () T):
но у училки шары будут отсего кода......и мноооого вопросов))
Да ладно! Быть этого не может! Программка-то примитивнейшая. Ну какие могут быть по ней вопросы, а? Что тебе в ней непонятно?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
I{ () T (статус: Посетитель), 13 октября 2009, 17:42 [#7]:
then Number:= S[Index] + Number
if L <> -1
for example...
у меня нет мании величия...Великие люди этим не страдают)))
.......лень порождает ненависть к жизни......
|
|
Вадим К (статус: Академик), 13 октября 2009, 18:07 [#8]:
В целом, многие преподаватели ставят плохую оценку, если программа правильная, но студент не понимает её. И могут поставить хорошую, если даже программа неверная, но студент может объяснить её и что у него не так. Я в свое время точно так же делал.
P.S. Я считаю это нормальным поведением. Хотя иногда девочкам за красивые глазки можно ставить позитивную оценку, если конечно они улыбаются , а не скалятся.
Галочка "подтверждения прочтения" - вселенское зло.
|
|
I{ () T (статус: Посетитель), 13 октября 2009, 18:32 [#9]:
ну я вот могу объяснить прогу, но почему он ошибку выдает тут??? write(s+' '+l+' don`t proshol') else
write(s+' '+l+' proshol');........не совместимы данные
у меня нет мании величия...Великие люди этим не страдают)))
.......лень порождает ненависть к жизни......
|
|
Вадим К (статус: Академик), 13 октября 2009, 18:44 [#10]:
ну вот. и на самом простом завалились и не сдали. пытаетесь сложить строку и число.
наиболее просто написать эту строку так
s := s + ' ';
//....
write(s,l,' don''t proshol') else
write(s,l,' proshol');
P.S. а min@y™ не знает как кавычку вставить одиночную...не думал.
Галочка "подтверждения прочтения" - вселенское зло.
|
|
min@y™ (статус: Доктор наук), 13 октября 2009, 18:51 [#11]:
Цитата (Вадим К):
P.S. а min@y™ не знает как кавычку вставить одиночную...не думал.
Утверждение неверно. Я занимаюсь программированием на паскале/delphi с 1990 года. Но в своём примере я и не хотел эту кавычку куда-либо вставлять.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Вадим К (статус: Академик), 13 октября 2009, 19:04 [#12]:
я же по доброму
но на делфи програмировать с 1990 года... это сильно сказано. Ну то что было 12 лет отроду - ну мало чего. А то что делфи в 90 году ещё не было.... хотя...
Галочка "подтверждения прочтения" - вселенское зло.
|
|
min@y™ (статус: Доктор наук), 13 октября 2009, 19:12 [#13]:
Я ответ подкорректировал комментариями. Теперь что-то ещё непонятно или как?
Цитата (Вадим К):
но на делфи програмировать с 1990 года... это сильно сказано. Ну то что было 12 лет отроду - ну мало чего. А то что делфи в 90 году ещё не было.... хотя...
Издеваешься? По губам читай:
Цитата (min@y™):
Я занимаюсь программированием на паскале/delphi с 1990 года.
Мне папаша (Ц.Е.Н.) притаранил мой первый комп ещё при совке - в 90-м году, за что я ему охрененно благодарен. Да, это был 286-й, но на моё счастье там был борланд паскаль. Благодаря этому компу и наличию на нём паскаля я щас работаю программистом.
З.Ы. Не надо голословных утверждений.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
I{ () T (статус: Посетитель), 13 октября 2009, 20:12 [#14]:
2 min@y
// Преобразование куска строки, содержащего число, в 32-битное целое (Integer):
// функция TryStrToInt() возвращает True, если первый параметр (Number)
// действительно удалось преобразовать в 32-битное целое.
if not TryStrToInt(Number, Result)
then Result:= -1; // <--- если преобразование не удалось.
end;
а это более упрощенно нельзя перевести?
у меня нет мании величия...Великие люди этим не страдают)))
.......лень порождает ненависть к жизни......
|
|
min@y™ (статус: Доктор наук), 13 октября 2009, 20:34 [#15]:
Цитата (I{ () T):
а это более упрощенно нельзя перевести?
Не понял, поясни. Неужели ещё что-то непонятно?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
I{ () T (статус: Посетитель), 13 октября 2009, 21:05 [#16]:
-1 непонятно..... обычно 0 или 1
у меня нет мании величия...Великие люди этим не страдают)))
.......лень порождает ненависть к жизни......
|
|
min@y™ (статус: Доктор наук), 13 октября 2009, 21:16 [#17]:
-1 я выдаю из функции в случае ошибки преобразования, чтобы потом выдать соответствующее сообщение. Вот и всё.
L:= ExtractLastNumber(Data); // Извлечение балла из введённой строки
if L <> -1 // Если извлечение успешно,
then if L < Cpp // то: если балл меньше проходного,
then write(' don`t proshol') // то вывод "не прошёл"
else write(' proshol') // иначе - "прошёл"
else WriteLn(' Data is incorrect.'); // иначе - вывод "неверно введённые данные" (в конце строки - нечисло)
-1 я возвращаю только ради ветвления if L <> -1. И не важно, -1 это или -2364526, главное, что такое значение нельзя выдать за набранный абитуриентом проходной балл, число-то отрицательное. Чуешь логику?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
I{ () T (статус: Посетитель), 13 октября 2009, 21:30 [#18]:
чую=)))
у меня нет мании величия...Великие люди этим не страдают)))
.......лень порождает ненависть к жизни......
|
|
I{ () T (статус: Посетитель), 14 октября 2009, 14:34 [#19]:
во...function ExtractLastNumber эту функцию же можно проще записать? через val?
у меня нет мании величия...Великие люди этим не страдают)))
.......лень порождает ненависть к жизни......
|
|
min@y™ (статус: Доктор наук), 14 октября 2009, 15:33 [#20]:
Цитата (I{ () T):
function ExtractLastNumber эту функцию же можно проще записать? через val?
Что значит проще? Чтоб в ней было меньше кода или тебе имя функции не нравится? Можно сделать и через процедуру Val(), блин, НО ЗАЧЕМ?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
Страницы: [1] [2] [Следующая »]
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|