| 
| 
 | Вопрос # 3 276/ вопрос решён / | 
 |  Здравствуйте, эксперты!рррр!! эти строки!!!
 вот задача такая, вроде легкая, но ошибку кидает(((
 известен проходной балл в универ
 дана строка в которой ФИО и прох. балл отделены одним пробелом. вывести поступил ли он иль нет. помогите пожалуйста!
 Приложение:Переключить в обычный режим program Project2; {$APPTYPE CONSOLE} uses  SysUtils;var s,num,str,l:string;  n,k,i,b,c,cpp:integer;beginwriteln('control post point'); readln(cpp);writeln('insert data'); readln(s);while pos(' ',s)>0 dobegin  b:=0;   for i:=1 to pos(' ',s) do begin  inc(n); end;  delete(s,1,k); end;if l<cpp thenwrite(s+' '++' don`t proshol') elsewrite(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] [Следующая »]  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |