Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 17.01.2016
Сообщений: 69
1

Как проверять текстовые переменные с другими текстовыми переменными разницей в одну букву?

04.02.2016, 11:33. Показов 1483. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Вообщем такая проблема, пишу я тест(сам тест в текстовой форме есть), в нём есть подтест в котором выводиться два слова и надо описать их одним или парой слов что у них общего,так вот появился такой вопрос, как проверить ответ и если он отличается от правильного ответа на один или два знака выбить окно о том, что у вас орфографическая ошибка, как вариант я думал просто проверять условием на слова с ошибка опасными местами, например правильный ответ "материк" а глупенький семиклассник написал "матирик", это можно было бы проверить в ручную но у меня 19 пунктов с вопросами, да и ошибки могут быть совсем неожиданные, так что это будет очень долго, так вот возможно ли это автоматизировать?

На форме одна лейба кнопка и эдит;
Delphi
1
2
3
4
5
6
7
8
9
10
procedure TForm13.FormCreate(Sender: TObject);
begin
z2[1,1]:='Азия, Африка ––'; \\ сам вопрос 
end;
 
procedure TForm13.FormShow(Sender: TObject);
begin
i2:=1;
sLabel1.Caption:=z2[i2,1];\\ у меня два варианта теста первый начинается с 1 пункта второй с 19, тут буду проверять какой варианты теста выбрал человек(это я уже сам сделал тут убрал)
end;
где z2 это двоичный массив с вопросами(также туда буду сохранять ответы, которые вводил человек проходивший тест)
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
procedure TForm13.sButton1Click(Sender: TObject);
begin
If i2=1 then \\ первый вопрос теста, дальше будет проверяться 2, 3 ,4 и тд.
begin
if (sEdit1.text='Части света')or(sEdit1.text='части света')   \\ я не знаю как буду писать с мал. или большой буквы
    then
    begin
    geo1:=geo1+2;   \\ начисление балов по определённому направлению 
    z2[i2,2]:=sEdit1.text;  \\ сохранение ответа в массив 
    sEdit1.text:='';  \\ очистка эдита от слова 
    i2:=i2+1;   \\ следующий вопрос 
    sLabel1.Caption:=z2[i2,1]; \\ новы текст в лейбе 
    end
    else
          if (sEdit1.text='Материки')or(sEdit1.text='материки')or(sEdit1.text='континенты')or(sEdit1.text='Континенты')  \\ есть разные ответы и оцениваются по разному (по кол-ву балов )
              then
                begin
                geo1:=geo1+1;
                z2[i2,2]:=sEdit1.text;
                sEdit1.text:='';
                i2:=i2+1;
                sLabel1.Caption:=z2[i2,1];
                end;
end;

вот так сейчас написано может подскажите как написать эту проверку на ошибку, чтобы введённый текст отличался на 1 или 2 знака от правильного ответа, и оно выбивало форму с текстом мол у вас ошибка, помогите пожалуйста
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.02.2016, 11:33
Ответы с готовыми решениями:

Как передать файл методом POST вместе с другими текстовыми полями
Помогите. Не получается передать файл методом POST, чтобы он был в целости и сохранности. Его нужно...

Работа с текстовыми переменными
Доброго времени суток, столкнулся с такой проблемой: Есть у меня такой скрипт: ...

Как вписать текстовые переменные asp в БД SQL ???
Проблема при записи (UPDATE)текста полученного из html-формы в БД SQL. формат поля в БД:...

Чтение строки из файла вместе с другими переменными
Есть структура struct A { int a; std::string name; std::string post; } base;

7
144 / 129 / 46
Регистрация: 12.08.2015
Сообщений: 1,203
Записей в блоге: 1
04.02.2016, 12:14 2
Лучший ответ Сообщение было отмечено Allenum как решение

Решение

Проверка орфографии:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
function A1(S1,S2:String):Integer;
var P1,P2:PChar;
var Err1:Integer;
var I1:Integer;
begin
Err1 := 0;
P1 := PChar(S1);
P2 := PChar(S2);
for I1 := 0 to Length(S1)-1 do
begin
try
if P1[I1]<>P2[I1] then
begin
Err1 := Err1+1;
end;
except
result := -1;
Exit;
end;
end;
result := Err1;
end;
S1 - Оригинальное слово.
S2 - То как написал ученик.

Функция вернёт количество отличающихся букв, или -1 если у слов разная длина.

Добавлено через 2 минуты
Delphi
1
(sEdit1.text='Материки')or(sEdit1.text='материки')
А AnsiLowerCase / AnsiUpperCase не судьба использовать?
1
0 / 0 / 0
Регистрация: 17.01.2016
Сообщений: 69
04.02.2016, 12:33  [ТС] 3
Цитата Сообщение от RostorLuxor Посмотреть сообщение
А AnsiLowerCase / AnsiUpperCase не судьба использовать?
поясни тупому что это?)
а что если ответ фраза например 'Органы крообращения'

Добавлено через 4 минуты
ещё пара вопросов для не опытного:
Цитата Сообщение от RostorLuxor Посмотреть сообщение
try
что это? и это?
Цитата Сообщение от RostorLuxor Посмотреть сообщение
if P1[I1]<>P2[I1] then
и это?
Цитата Сообщение от RostorLuxor Посмотреть сообщение
except
ну и это?
Цитата Сообщение от RostorLuxor Посмотреть сообщение
Exit;
0
843 / 738 / 342
Регистрация: 22.09.2012
Сообщений: 5,034
04.02.2016, 13:14 4
Цитата Сообщение от Allenum Посмотреть сообщение
AnsiLowerCase / AnsiUpperCase не судьба использовать?
Да используй сравнение значений без сравнения регистра.

Цитата Сообщение от Allenum Посмотреть сообщение
try
Эу, это начало блока кода где может пойти что-то не так.

Цитата Сообщение от Allenum Посмотреть сообщение
except
Конец блока кода где могло пойти что- то не по плану. И если блоке до except пошло не поплану, переходим в блок кода после except и выполняем его.

Цитата Сообщение от Allenum Посмотреть сообщение
if P1[I1]<>P2[I1] then
Набор переменных это типа PChar, зачем нужны невникал я такие не использую, они вроде как под устарели чуть и всегда можно обойтись без них (ну есть исключения конечно, но это редко).

Цитата Сообщение от Allenum Посмотреть сообщение
Exit;
Выход из кода это.Например есть е тебя эдит и нужно показать что в нем написано вывести на экран, а он пустой например тогда и нечего показывать пустое окно!

Лови пример!

Delphi
1
2
3
4
  if Edit1.Text = '' then
    Exit; //если пустой- выход
 
  ShowMessage(Edit1.Text); //не появится уже
1
0 / 0 / 0
Регистрация: 17.01.2016
Сообщений: 69
04.02.2016, 14:32  [ТС] 5
NIKOLAYY,
Цитата Сообщение от NIKOLAYY Посмотреть сообщение
Да используй сравнение значений без сравнения регистра.
эмм а что такое регистр?
0
5488 / 4403 / 1076
Регистрация: 29.08.2013
Сообщений: 27,591
Записей в блоге: 3
04.02.2016, 14:35 6
БОЛЬШИЕ и маленькие буквы
при сравнении текста А<>а
тогда надо писать или как у тебя if А<>а or A<>A
или написать if A<>uppercase('a') и все
1
144 / 129 / 46
Регистрация: 12.08.2015
Сообщений: 1,203
Записей в блоге: 1
04.02.2016, 14:39 7
Цитата Сообщение от Allenum Посмотреть сообщение
эмм а что такое регистр?
Это разница между маленькими и БОЛЬШИМИ буквами.
1
Почетный модератор
64304 / 47599 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
09.02.2016, 13:12 8
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
procedure TForm1.Button1Click(Sender: TObject);
var mat,rus,geo:double;
begin
mat:=25.55;
rus:=48.26;
geo:=100-mat-rus;
Chart1.Legend.Visible:=false;
with Series1 do
 begin
  Marks.Style:=smsValue; //в метку значение
  Add(mat,'Математика',clBlue);
  Add(rus,'Русский язык',clRed);
  Add(geo,'География',clGreen);
 end;
end;
Миниатюры
Как проверять текстовые переменные с другими текстовыми переменными разницей в одну букву?  
1
09.02.2016, 13:12
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.02.2016, 13:12
Помогаю со студенческими работами здесь

Поменять значения переменных A и В, не пользуясь другими переменными
Доброго времени суток! Помогите плз сделать эти задания на с++ в Builder XE 2 1. Поменять...

Как передавать текстовые переменные из VB??? Неужели никто не знает?
Задача: передать хр. процедуре параметр типа nvarchar. В VB как ни стараюсь - все равно либо...

Как различить текстовые переменные с одинаковыми первыми знаками?
Доброго времени суток. Столкнулся с такой проблемой - в базе mysql есть несколько строк, у которых...

Как соединить две переменные в одну
У меня вопрос, вот есть перменные arr1,arr2,arr3 etc. Так вот, как сделать чтобы через цикл...

Подскажите как можно обьединить 2 переменные в одну
пример: П1=&quot;2534&quot; П2=&quot;253&quot; как получить П3=&quot;2534&quot;

Как вводить только одну букву с клавиатуры?
Написал код игры &quot;Угадай слово&quot;, слово угадывается по одной букве. Проблема в том, что...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru