Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.05.2016, 16:13   #1
destra1j
Пользователь
 
Регистрация: 04.05.2016
Сообщений: 47
По умолчанию [PaskalABC.NET]Исправте ошибку

Код:
var 
mas:array[1..100]of integer;
s,stemp:string;
i,j,c,k,buf:integer;
begin
readln(c);
 s:=s+' ';
 stemp:='';
 j:=0;
 for i:=1 to length(s) do
 begin
   if s[i]=' ' then
      begin 
       if stemp<>''then
       begin
         j:=j+1;
        val(stemp,mas[j],c);
         stemp:='';
         end
        end
        else
        stemp:=stemp+s[i]
        end;
        
       for i:=1 to j do
         write(mas[i],';');
        val(buf,s[i],c); //здесь ошибка
         for i:=0 to j do
          for k:=i+1 to j do
          if s[i]<s[k] then 
           begin 
            buf:=s[i];
            s[i]:=s[k];
            s[k]:=buf;
            end;
         end.
я не пойму где я протупил подскажите плз
destra1j вне форума Ответить с цитированием
Старый 14.05.2016, 16:24   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

по синтаксису правильно будет:
Код:
val(s[i],buf,c);
(см. описание процедуры ниже).
НО!
Я вообще никакого смысла в этой строчке не вижу!
Выкиньте её напрочь.

или расскажите, какую задачу Вы решаете?!



выдержка из Help'а по процедуре VAL
Цитата:
Код:
Val (procedure)
___________________________
Converts a string value to its numeric
representation.

 Declaration:
 procedure Val(S; var V; var Code: Integer);
where:
  S          string-type variable; must be a sequence of characters that
             form a signed whole number
  V          integer-type or real-type variable
  Code       variable of type Integer.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 14.05.2016, 18:51   #3
destra1j
Пользователь
 
Регистрация: 04.05.2016
Сообщений: 47
По умолчанию

Дана строка символов, состоящая из произвольных десятичных чисел, разделенных пробелами. Вывести на экран числа этой строки в порядке возрастания их значений

Ну я начал так чтоб в масив записывались числа со строки но если встречен пробел то пропускать его и переходить к следующему символу в строке.
Ошибка в сортировке
destra1j вне форума Ответить с цитированием
Старый 14.05.2016, 19:31   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

ясно. ошибок много.

разбирайте готовое решение:
Код:
var
  mas: array[1..100] of integer;
  s, stemp: string;
  i, j, c, k, buf: integer;
begin
 //readln(s);
  s := '12 456 17 352 200 2 1';

  s := s + ' ';
  stemp := '';
  j := 0;
  for i := 1 to length(s) do
  begin
    if s[i] = ' ' then
    begin
      if stemp <> '' then
      begin
        val(stemp, k, c);
        if c = 0 then begin
          j := j + 1;
          mas[j] := k
        end;
        stemp := '';
      end
    end
    else
      stemp := stemp + s[i];
  end;

  // сортировка
  for i := 1 to j - 1 do
    for k := i + 1 to j do
      if mas[i] > mas[k] then
      begin
        buf := mas[i];
        mas[i] := mas[k];
        mas[k] := buf;
      end;

  // вывод результата
  WriteLn('результат:');
  for i := 1 to j do Write(mas[i], ' ');
  WriteLn;
end.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 14.05.2016, 19:40   #5
destra1j
Пользователь
 
Регистрация: 04.05.2016
Сообщений: 47
По умолчанию

Код:
var
  mas: array[1..100] of integer;
  s, stemp: string;
  i, j, c, k, buf: integer;
begin
 writeln('введите строку чисел');
 readln(s);
  

  s := s + ' ';
  stemp := '';
  j := 0;
  for i := 1 to length(s) do
  begin
    if s[i] = ' ' then
    begin
      if stemp <> '' then
      begin
        val(stemp, k, c);
        if c = 0 then begin
          j := j + 1;
          mas[j] := k
        end;
        stemp := '';
      end
    end
    else
      stemp := stemp + s[i];
  end;

  // сортировка
  for i := 1 to j - 1 do
    for k := i + 1 to j do
      if mas[i] > mas[k] then
      begin
        buf := mas[i];
        mas[i] := mas[k];
        mas[k] := buf;
      end;

  // вывод результата
  WriteLn('результат:');
  for i := 1 to j do Write(mas[i], ' ');
  WriteLn;
end.
немного переделал
destra1j вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Графика (PaskalABC.net) Dezodor Помощь студентам 2 26.04.2013 01:47
Исправте ошибку Drago56 Паскаль, Turbo Pascal, PascalABC.NET 7 19.12.2010 10:18
Исправте ошибку Drago56 Общие вопросы C/C++ 7 15.12.2010 16:09
Исправте ошибку dimon305 Помощь студентам 0 18.05.2010 21:23
Исправте ошибку Jasper92 Общие вопросы C/C++ 1 28.12.2009 15:24