Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Ответ
 
Опции темы
Старый 16.05.2012, 23:01   #1
Начинающий програм
Форумчанин
 
Аватар для Начинающий програм
 
Регистрация: 22.11.2011
Сообщений: 201
По умолчанию функция nonalpha( string), которая возвращает позицию его первой литеры, не являющейся буквой (Delphi)

Всем доброго времени суток! Помогите пожалуйста найти ошибку в коде.

Условие задачи.
Напишите функцию nonalpha, которая получает параметр str типа string и возвращает позицию его первой литеры, не являющейся буквой(как латинского, так и русского алфавитов) строчной или прописной. Например, nonalpha(‘stev7n’) дает 5.

Код:
program Project111117;

{$APPTYPE CONSOLE}

uses
  SysUtils,
  windows;

Function nonalpha(str:integer):string;
var
  c:char;
  p:integer;
begin
  writeln('Введите в одну строчку символы, последний из которых точка');
  read(c);
  p:=0;
  while c<>'.' do
    begin
      if c in ['A'..'Z'] then
        begin
          p:=p+1
        end;
      read(c)
    end;
  writeln(p)
  end;

var
  str:integer;
  a:string;
begin
  setconsolecp(1251);
  setconsoleoutputcp(1251);
  a:=nonalpha(str);
  write(a);
  readln
end.
Начинающий програм вне форума   Ответить с цитированием
Старый 16.05.2012, 23:06   #2
Valio
Сливочное масло
Участник клуба
 
Аватар для Valio
 
Регистрация: 01.01.2011
Сообщений: 1,149
По умолчанию

Цитата:
которая получает параметр str типа string и возвращает позицию его первой литеры
и

Код:
nonalpha(str:integer):string;
?
Сливочное масло Valio - компиляция как по маслу
Valio вне форума   Ответить с цитированием
Старый 16.05.2012, 23:17   #3
Начинающий програм
Форумчанин
 
Аватар для Начинающий програм
 
Регистрация: 22.11.2011
Сообщений: 201
По умолчанию

Вот еще вариант, но тоже не работает

Код:

program Project111117;

{$APPTYPE CONSOLE}

uses
  SysUtils,
  windows;

function nonalpha (str:string): integer;
var i:integer;
    Glas:char;
Begin
  result:=-1;
  i:=1;
  while (i<=length(str)) and (result<0) do
    begin
      if ((str[i]<'a') or (str[i]>'z')) and ((str[i]<'A') or (str[i]>'Z')) and (pos(str[i],Glas)=0) then result:=i;
      inc(i);
    end;
End;

var
  str:integer;
  a:string;
begin
  setconsolecp(1251);
  setconsoleoutputcp(1251);
  a:=nonalpha(str);
  write(a);
  readln
end.
Начинающий програм вне форума   Ответить с цитированием
Старый 16.05.2012, 23:23   #4
Valio
Сливочное масло
Участник клуба
 
Аватар для Valio
 
Регистрация: 01.01.2011
Сообщений: 1,149
По умолчанию

Ты вообще понимаешь, что ты пишешь? Тут просто всё неправильно.

Для начало напиши:
1. Запрос у пользователя слова.
2. Вывод этого слова на экран.
3. Функция которая возвращает длину этой строки.
4. Выведи результат работы функции.
Сливочное масло Valio - компиляция как по маслу
Valio вне форума   Ответить с цитированием
Старый 16.05.2012, 23:30   #5
BDA
Модератор
Заслуженный модератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 5,429
По умолчанию

Код:
program Project2;

{$APPTYPE CONSOLE}

uses
  SysUtils,
  windows;

var
  s: string;

function noalpha(var st: string): integer;
var
  i: integer;
  b: set of char;
begin
  noalpha := -1;
  if length(st) = 0 then exit;
  i := 1;
  b := ['A'..'Z', 'a'..'z', chr(192)..chr(255)];
  while (st[i] in b) and (i <= length(st)) do inc(i);
  if i <= length(st) then
    noalpha := i;
end;

begin
  setconsolecp(1251);
  setconsoleoutputcp(1251);
  readln(s);
  writeln(noalpha(s));
  readln;
end.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме   Ответить с цитированием
Старый 17.05.2012, 21:00   #6
Начинающий програм
Форумчанин
 
Аватар для Начинающий програм
 
Регистрация: 22.11.2011
Сообщений: 201
По умолчанию

Код:
chr(192)..chr(255) //поясните рожалуйста что это обозначает
Начинающий програм вне форума   Ответить с цитированием
Старый 17.05.2012, 21:04   #7
BDA
Модератор
Заслуженный модератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 5,429
По умолчанию

Это русские буквы в кодировке windows-1251.
http://ru.wikipedia.org/wiki/Windows-1251
Кстати, я забыл буквы Ё и ё.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме   Ответить с цитированием
Старый 17.05.2012, 21:20   #8
Начинающий програм
Форумчанин
 
Аватар для Начинающий програм
 
Регистрация: 22.11.2011
Сообщений: 201
По умолчанию

Я Вам очень благодарен!
Начинающий програм вне форума   Ответить с цитированием
Ответ
Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi функция которая возвращает 2 значения gufon Общие вопросы Delphi 10 24.02.2012 08:03
Создать функцию Max, которая находит в заданном целочисленном массиве максимальный элемень и возвращает его. массив передается в к devs Помощь студентам 2 21.12.2011 11:40
Функция, которая возвращает количество нулевых бит в символах строки. MeTeOpA Общие вопросы C/C++ 7 26.02.2011 07:31
Функция которая возвращает динамический массив gagarin0 Помощь студентам 5 19.01.2011 14:48
функция gcd, которая возвращает наибольший общий делитель двух целых чисел Jereme Общие вопросы C/C++ 2 21.01.2010 02:49