Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 3 276

/ вопрос решён /

Здравствуйте, эксперты!
рррр!! эти строки!!!
вот задача такая, вроде легкая, но ошибку кидает(((
известен проходной балл в универ
дана строка в которой ФИО и прох. балл отделены одним пробелом. вывести поступил ли он иль нет. помогите пожалуйста!

Приложение:
  1. program Project2;
  2.  
  3. {$APPTYPE CONSOLE}
  4.  
  5. uses
  6. SysUtils;
  7. var s,num,str,l:string; n,k,i,b,c,cpp:integer;
  8. begin
  9. writeln('control post point'); readln(cpp);
  10. writeln('insert data'); readln(s);
  11. while pos(' ',s)>0 do
  12. begin
  13. b:=0;
  14.  
  15. for i:=1 to pos(' ',s) do begin
  16. inc(n); end;
  17. delete(s,1,k);
  18.  
  19. end;
  20. if l<cpp then
  21. write(s+' '++' don`t proshol') else
  22. write(s+' '+l+' proshol');
  23. readln;
  24. end.
  25.  


I{ () T Вопрос решён, но можно продолжить его обсуждение в мини-форуме

Вопрос задал: 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

I{ () T (статус: Посетитель), 14 октября 2009, 19:23 [#21]:

зачем? а не лучше ли код укорачивать по возможности? легче наверно ведь через val чем целую функцию писать?(хотя, дело вкуса)
у меня нет мании величия...Великие люди этим не страдают)))
.......лень порождает ненависть к жизни......
Егор

Егор (статус: 10-ый класс), 14 октября 2009, 19:39 [#22]:

I{ () T:
а как бы ты написал подобную программу сейчас?
Опасайтесь багов в приведенном выше коде; я только доказал корректность, но не запускал его.
— Donald E. Knuth.
I{ () T

I{ () T (статус: Посетитель), 14 октября 2009, 19:40 [#23]:

ввод всех данных. далее, так как сказано что фио отделено ОДНИМ пробелом от балла, то нахожу этот балл...вот тут загвостка, прервод строки в число...далее сравнение балла студента с проходным и потом вывод...вроде все
у меня нет мании величия...Великие люди этим не страдают)))
.......лень порождает ненависть к жизни......
I{ () T

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)&gt;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&lt;cpp then
write(s,l,' don''t proshol') else
write(s,l,' proshol');
end;
readln;
end.
ВВОЖУ, ВСЕ НОРМ, НО ПОТОМ ОТВЕТ НЕ ВЫВОДИТ
у меня нет мании величия...Великие люди этим не страдают)))
.......лень порождает ненависть к жизни......
min@y™

min@y™ (статус: Доктор наук), 14 октября 2009, 22:15 [#25]:

Цитата (I{ () T):


ВВОЖУ, ВСЕ НОРМ, НО ПОТОМ ОТВЕТ НЕ ВЫВОДИТ


Задолбал, возьми мою прогу.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!

31 января 2011, 19:36: Статус вопроса изменён на решённый (изменил модератор Ерёмин А.А.): Автоматическая обработка (2 и более ответов с оценкой 5)

Страницы: [« Предыдущая] [1] [2]

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 25 апреля 2026, 21:07
Выполнено за 0.03 сек.