Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.92/64: Рейтинг темы: голосов - 64, средняя оценка - 4.92
0 / 0 / 0
Регистрация: 14.11.2017
Сообщений: 16

Функция сравнивает две строки, игнорируя различия в регистрах

17.02.2018, 19:13. Показов 12860. Ответов 25
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Мне нужно написать программу в которой функция сравнивает две строки, игнорируя различия в регистрах.
Я сначала хотел перевести все буквы в строке к одному регистру, но программа выдает ошибку.Вот фрагмент кода. Исправте его пожалуйста, или предложите боле правильный вариант.
C
1
2
3
4
5
 n=0;
          while(a[n]!=0){
            if(('a'<=a[n])&&(a[n]<='z'))
                 a[n]+='A'-'a';
                 n++;
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.02.2018, 19:13
Ответы с готовыми решениями:

Функция сравнивает две строки, игнорируя различия в регистрах
Я студент 1 курса на зачёт сказали написать программку помогите!! не хочу вылететь из универа С++ Консоль 1. Функция сравнивает...

Как сравнить две строки игнорируя различия в регистрах?
Дело в том, что нельзя использовать основные функции, в моей случае tolower, я очень затрудняюсь в написании кода%-)

Составить функцию совпадает,которая сравнивает две строки, игнорируя пробелы
Составить функцию совпадает,которая сравнивает две строки, игнорируя пробелы. uses crt; function sovpadaet(s1,s2:string):boolean; var...

25
2493 / 1157 / 709
Регистрация: 25.04.2016
Сообщений: 3,326
17.02.2018, 20:38
Лучший ответ Сообщение было отмечено chicagofire как решение

Решение

Оно?
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#include <stdio.h>
#include <string.h>     // предоставляет rand() и srand()
 
/* проверям какой символ нам встретился */
int check_symbol (char c)
{
    int answer = -1;        // если любой знак пунктуации или число
    if (c >= 'a' && c <= 'z') answer = 0;           // если малый символ
    else if (c >= 'A' && c <= 'Z') answer = 1;  // если большой
    return answer;
}
 
int main ()
{
    char * str_one = "Hello, world";    // строки для сравнения
    char * str_two = "hELLo, wOrLD";    // для теста, равны
    //char * str_two = "hELLo, wUrLD";  // для теста, не равны
    //char * str_two = "hELLo, wOrLD!"; // для теста, не равны по длине
 
    // сравниваем длины строк:
    if (strlen(str_one) != strlen(str_two))
    {
        printf("Dont equal!\n");        // если не совпали, выходим
        return -1;
    }
 
    // если длина строк все ж совпала, сравниваем посимвольно:
    int i;          // счетчик
    int eq = 1;     // считаем, что строки совпадают
    int c1, c2;     //результат проверки
    int swp = 'a' - 'A';        // для приведения к одному размеру
    char tmp;       // временаая, чтобы не менять строку
 
    for (i=0; str_one[i] != '\0' && eq > 0; i++)
    {
        tmp = str_two[i];               // чтобы не менять символ в строке
        c1 = check_symbol(str_one[i]);  // проверяем оба символа большие или маленькие
        c2 = check_symbol(str_two[i]);
        if (c1 < c2)    tmp += swp;     // если первый маленький. а второй большой
        if (c1 > c2)    tmp -= swp;     // если первый большой, а второй маленький
        if (str_one[i] != tmp) eq = 0;  // и теперь, сраниваем символы, если не совпали, конец
    }
 
    // результат проверки на экран:
    if (eq > 0) printf("Equal!\n");     //printf("%s!\n", (eq)?"Equal":"Dont equal");
    else printf("Dont equal!\n");
 
    return 0;   // конец программы
}
Добавлено через 2 минуты
Подумайте как гарантированно избежать ошибок при обработке знаков препинания
1
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38203 / 21135 / 4310
Регистрация: 12.02.2012
Сообщений: 34,741
Записей в блоге: 14
17.02.2018, 20:57
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include <stdio.h>
#include <stdlib.h>
 
int StrCmp(char *S1, char *S2)
{
    int i;
    char c;
    char *tmp1,*tmp2;
    int l1=strlen(S1);
    int l2=strlen(S2);
    
    tmp1=(char *)calloc(l1+1,1);
    tmp2=(char *)calloc(l2+1,1);
 
    strcpy(tmp1,S1);
    strcpy(tmp2,S2);
    
    for (i=0;i<l1; i++) 
    {
        c=*(tmp1+i);
        if (c>='A' && c<='Z') *(tmp1+i)=*(tmp1+i) | 0x20;
    }
        
    for (i=0;i<l2; i++) 
    {
        c=*(tmp2+i);
        if (c>='A' && c<='Z') *(tmp2+i)=*(tmp2+i) | 0x20;
    }
     
    i=strcmp(tmp1,tmp2);
    free(tmp1);
    free(tmp2);
    return i;
}     
 
int main(int argc, char *argv[])
{
 
  char *Q1="Hello World";
  char *Q2="heLLo wOrlD";
  
  printf("%d\n",StrCmp(Q1,Q2));  
  
  system("PAUSE");  
  return 0;
}
1
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,977
18.02.2018, 02:27
Жуть какая-то!

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
#include <ctype.h>
 
int str_case_cmp(const char * a, const char * b) {
    for ( ; *a && toupper(*a) == toupper(*b); ++a, ++b )
        ;
    return *a - *b;
}
 
int main(void) {
    const char * a = "BlAh bLaH BLah";
    const char * b = "blAh BlaH bLAH";
    
    printf("%s\n", str_case_cmp(a, b) == 0 ? "The same" : "Differs");
    
    return 0;
}
4
229 / 112 / 35
Регистрация: 25.11.2017
Сообщений: 389
18.02.2018, 15:06
Цитата Сообщение от easybudda Посмотреть сообщение
int str_case_cmp(const char * a, const char * b) { for ( ; *a && toupper(*a) == toupper(*b); ++a, ++b ) ; return *a - *b; }
Я бы добавил проверку на
1) то что a и b не NULL
2) то что а не длиннее b, иначе могут быть чудеса с вылетом указателя за пределы массива.
1
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38203 / 21135 / 4310
Регистрация: 12.02.2012
Сообщений: 34,741
Записей в блоге: 14
18.02.2018, 15:14
Цитата Сообщение от easybudda Посмотреть сообщение
toupper
- "Сглотнуть корову всякий сможет, а ты вот получи от нее 12 попросят!..." А. и Б. Стругацкие "Сказка о тройке"
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,977
18.02.2018, 17:14
Цитата Сообщение от spvert Посмотреть сообщение
Я бы добавил проверку на
1) то что a и b не NULL
Можно в принципе, но лень. Не продакшн какой-нибудь.
Цитата Сообщение от spvert Посмотреть сообщение
2) то что а не длиннее b, иначе могут быть чудеса с вылетом указателя за пределы массива.
Абсолютно ни к чему, не будет чудес, не в сказке!


Цитата Сообщение от Catstail Посмотреть сообщение
а ты вот получи от нее 12 попросят!
Да не вопрос!

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
#include <wchar.h>
#include <locale.h>
#include <assert.h>
 
int main(void) {
    wchar_t a[BUFSIZ], b[BUFSIZ];
    char * oldlocale = setlocale(LC_ALL, "ru_RU.UTF-8");
    
    assert(oldlocale);
    
    while ( printf("A: ") && fgetws(a, BUFSIZ, stdin) && *a != L'\n' && printf("B: ") && fgetws(b, BUFSIZ, stdin) )
        printf("Строки %lsодинаковые.\n", ( wcscasecmp(a, b) ) ? L"не " : L"");
    
    setlocale(LC_ALL, oldlocale);
    return 0;
}
Code
1
2
3
4
5
6
7
8
9
10
[andrew@easybook strings]$ gcc -Wall casecmp.c 
[andrew@easybook strings]$ ./a.out 
A: ДВеНаДЦать пОРоСЯт
B: двЕНАдЦАтЬ ПОрОСяТ
Строки одинаковые.
A: и одна корова
B: и адно карова
Строки не одинаковые.
A: 
[andrew@easybook strings]$
1
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38203 / 21135 / 4310
Регистрация: 12.02.2012
Сообщений: 34,741
Записей в блоге: 14
18.02.2018, 17:18
Но использование wcscasecmp - это добывание изюма из булки...
0
18.02.2018, 17:37

Не по теме:

Цитата Сообщение от Catstail Посмотреть сообщение
это добывание изюма из булки...
А откуда же его ещё берут?

0
 Аватар для CoderHuligan
1753 / 1019 / 257
Регистрация: 30.06.2015
Сообщений: 5,132
Записей в блоге: 56
18.02.2018, 17:38
Цитата Сообщение от spvert Посмотреть сообщение
Я бы добавил проверку на
1) то что a и b не NULL
2) то что а не длиннее b, иначе могут быть чудеса с вылетом указателя за пределы массива.
А можно ещё чё-нить туда добавить, включай воображение.
Мне кажется каждая функция должна делать только одну работу, и изначально подрузамевать валидность входных параметров. А проверку их валидности должны выполнять другие функции. Отдельные, которые выполняют свою собственную работу. Это только моё собственное ИМХО.
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,977
18.02.2018, 17:53
Цитата Сообщение от CoderHuligan Посмотреть сообщение
А проверку их валидности должны выполнять другие функции.
Не, по-хорошему функция действительно должна корректно обрабатывать невалидные параметры. Но в учебном примере если специально не оговорено, можно и подзабить на это...
0
 Аватар для CoderHuligan
1753 / 1019 / 257
Регистрация: 30.06.2015
Сообщений: 5,132
Записей в блоге: 56
18.02.2018, 18:16
Цитата Сообщение от easybudda Посмотреть сообщение
Не, по-хорошему функция действительно должна корректно обрабатывать невалидные параметры. Но в учебном примере если специально не оговорено, можно и подзабить на это...
Да, действительно, так принято. Существующие архитектуры все построены на этом. С одной стороны это хорошо, а с другой происходит переизбыток кода там, где в общем этого часто и не требуется. Универсализм, конечно, не позволяет плодить много сущностей, однако суживает рамки эффективности. Да и с безопасностью кода, как-то до сих пор не складывается. Корпоративные соглашения, даже мода, вынуждает придерживаться определённого стиля, они задают основной тон. Если нам надо запихать одну строку в конец другой, так, чтобы не вылететь за пределы буфера, то сначала проверяем dst и src на валидность специальной функцией, а потом подаём их в функцию cpy, которая это делает "не глядя на лица", ибо знает что "усё в порядке". В этом случае мы можем менять функцию проверки независимо от функции копирования. Также мы можем применять cpy в том случае, когда уверены в валидности параметров в критичных по времени исполнения кода отделах программы. Это просто даёт более гибкий код.
0
2493 / 1157 / 709
Регистрация: 25.04.2016
Сообщений: 3,326
18.02.2018, 21:49
easybudda, согласен, средствами стандартной библиотеки, задача решается буквально в 3 строчки, но, когда подобные задания дают при обучении, в 99,9% случаев предполагается, что ученик должен реализовать алгоритм ключевой функции самостоятельно, т.е. по сути написать свой аналог strlen(), strcmp(), atoi(), toupper(), fgets(), realloc(), abs() / fabs() и прочих, - по сути написать велосипед. Так что да, с одной стороны ужас, а с другой - вполне привычная и обыденная практика для учебных заведений.

И тут вы и правы, и в то же время совершенно не правы.
0
229 / 112 / 35
Регистрация: 25.11.2017
Сообщений: 389
18.02.2018, 22:09
Цитата Сообщение от easybudda Посмотреть сообщение
Абсолютно ни к чему, не будет чудес, не в сказке!
Я об аккуратности.
Ну давайте, например, так
const char *a = "Проба Пера";
const char *b = "Проба Пера с какими-нибудь расширенными хотелками по отношению к полученному тексту";

Результат?

Добавлено через 8 минут
Ну, да, в общем отрицательное значение результата тоже трактуется как false, поэтому срабатывает.

Добавлено через 4 минуты

Не по теме:

Цитата Сообщение от CoderHuligan Посмотреть сообщение
А можно ещё чё-нить туда добавить, включай воображение.
Мне кажется каждая функция должна делать только одну работу, и изначально подрузамевать валидность входных параметров.
Наверное поэтому у меня сейчас Firefox с пятком открытых вкладок сожрал 6.5 гигов оперативки.
Программисты либо не умеют, либо не хотят писать аккуратный код.
И если их с самого начала учить писать черти как, не думая, ничего хорошего в будущем ожидать не придется.

0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,977
18.02.2018, 23:59
Цитата Сообщение от stake-k26 Посмотреть сообщение
по сути написать велосипед.
C
1
#define to_upper(c) ( ( (c) >= 'a' && (c) <= 'z' ) ? (c) + 'A' - 'a' : (c) )
Остальное, как в посте #4

Цитата Сообщение от spvert Посмотреть сообщение
Добавлено через 8 минут
Ну, да, в общем отрицательное значение результата тоже трактуется как false, поэтому срабатывает.
если а короче, не пройдёт *a, если b короче, не пройдёт *a == *b.
0
229 / 112 / 35
Регистрация: 25.11.2017
Сообщений: 389
19.02.2018, 09:12
Цитата Сообщение от easybudda Посмотреть сообщение
если а короче, не пройдёт *a, если b короче, не пройдёт *a == *b.
Если а короче, то *a - *b даст не 0. В этом и фокус у вас получился. Если бы ориентация была только на *a, то вот тут сработала бы неприятность, описанная мной выше, когда b длиннее, но при этом на всей длине a они совпадают. Так что от меня за эту конструкцию честный плюс.
0
 Аватар для CoderHuligan
1753 / 1019 / 257
Регистрация: 30.06.2015
Сообщений: 5,132
Записей в блоге: 56
19.02.2018, 11:10
Цитата Сообщение от spvert Посмотреть сообщение
Наверное поэтому у меня сейчас Firefox с пятком открытых вкладок сожрал 6.5 гигов оперативки.
Программисты либо не умеют, либо не хотят писать аккуратный код.
Ужас..
Они идут по пути наименьшего сопротивления путём открытия нового экземпляра браузера как отдельного процесса, поэтому чем больше вкладок, тем больше "браузеров файрфокс" у вас будет запущено одновременно. Конечно это никуда не годится, но что-ж поделаешь, таковы реалии жизни, не линкс же юзать, хотя.. иногда пользуюсь)))
Цитата Сообщение от spvert Посмотреть сообщение
И если их с самого начала учить писать черти как, не думая, ничего хорошего в будущем ожидать не придется.
Их с самого начала учат писать на джавах и шарпах, поэтому их моск замылен с самого начала их трудовой, си речь, бредовой, деятельности. А надо начинать с асма, потом переход на си, тогда научатся экономить не только байты с килобайтами, но и наше время и нервы.
0
775 / 444 / 93
Регистрация: 24.10.2012
Сообщений: 3,240
Записей в блоге: 5
20.02.2018, 21:36
подкину свои варианты решения данной задачи, может быть подойдут?

-
первый вариант решения задачи сравнения строк без учета регистра (и, без применения ф-й toupper и tolower):

Кликните здесь для просмотра всего текста
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <string.h>
 
unsigned short str_is_equal(char *str_1, char *str_2) {
 
    short i = 0, str_len, a;
 
    str_len = strlen(str_1);
 
    if( str_len != strlen(str_2) ) return 0;
 
    while( i < str_len ) {
 
        a = *(str_1 + i) - *(str_2 + i);
 
        if( a != 0 && abs(a) != 32 ) return 0;
        
        i++;
    }
 
    return 1;
}


, второй вариант решения задачи без применения в исходном коде подключаемой библиотеки работы со строками (string.h) на чистом С(Си):

Кликните здесь для просмотра всего текста
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
unsigned short ansi_c_89_strlen(char *str_1) {
 
    short i = 0;
 
    while( *(str_1 + i) ) i++;
 
    return i;
}
 
unsigned short ansi_c_89_abs(short n) {
 
    return n < 0 ? -n : n ; 
}
 
unsigned short str_is_equal(char *str_1, char *str_2) {
 
    short i = 0, str_len, a;
 
    str_len = ansi_c_89_strlen(str_1);
 
    if( str_len != ansi_c_89_strlen(str_2) ) return 0;
 
    while( i < str_len ) {
 
        a = *(str_1 + i) - *(str_2 + i);
 
        if( a != 0 && ansi_c_89_abs(a) != 32 ) return 0;
        
        i++;
    }
 
    return 1;
}


вроде оба варианта работают корректно - проверял не однократно. да, в случае если строки одинаковые выдает цифровое значение "1" (истина) если разные "0" (ложь). chicagofire, так же должно быть?

-
имхо, мне очень понравилось решение от easybudda (сообщ. №4):

C
1
2
3
4
5
...
 
for ( ; *a && toupper(*a) == toupper(*b); ++a, ++b )
 
...
все реализовано, короче говоря, в одной строчке. только, не очень пойму, почему:

C
1
2
3
4
5
...
 
return *a - *b;
 
...
? наверное, щас, на вечер башка уже не "варит" (моя).

-
Catstail, ф-я StrCmp (сообщ. №3)

C
1
2
3
4
5
...
 
int StrCmp(char *S1, char *S2)
 
...
это же ужас! Вы пошутили наверное? 30 строк кода! что она вообще делает? Да, это какой-то юмор, наверное, либо от усталости.

Не по теме:

Ни на кого не "наезжаю", просто, говорю. В языке С(Си) еще junior, только практикуюсь, иногда, по разным справочникам.



Добавлено через 1 минуту
да и вариант решения с сообщ. №2, тоже, какой-то ужас . щас нет времени разобраться во всем этом коде.
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,977
20.02.2018, 23:00
Цитата Сообщение от tolimadokara Посмотреть сообщение
только, не очень пойму
А Вы инструкцию к strcmp почитайте. Функция возвращает отрицательное число, если первая строка лексикографически меньше второй, положительное, если первая строка лексикографически больше, и ноль, если строки равны. Это гораздо практичнее, чем возвращать 0 или 1.
0
775 / 444 / 93
Регистрация: 24.10.2012
Сообщений: 3,240
Записей в блоге: 5
21.02.2018, 11:17
Цитата Сообщение от easybudda
Цитата Сообщение от tolimadokara
только, не очень пойму
А Вы инструкцию к strcmp почитайте
easybudda, но, у Вас там нет ф-и strcmp? её вообще нет нигде в коде этой темы.

easybudda, вообще, ещё позавчера случайно зашел в эту тему и мне понравилось Ваше решение, грубо говоря - в одну строчку:

C
1
2
3
4
5
...
 
for ( ; *a && toupper(*a) == toupper(*b); ++a, ++b )
 
...
, потом, думаю, зачем отвечать в этой теме? вопрос решен уже, самым эффективным, сжатым в коде способом через toupper. интуитивно понятно что самый короткий способ решения задачи через сравнение по toupper, tolower.

дальше, заделал еврейский алгоритм, грубо говоря в "ядре" алгоритма две строчки:

Кликните здесь для просмотра всего текста
C
1
2
3
4
5
6
7
...
 
a = *(str_1 + i) - *(str_2 + i);
 
        if( a != 0 && abs(a) != 32 ) return 0;
 
...


и хотел сравнить эти реализации по времени - какая быстрее отработает, через toupper или реализация с не понятным извратом. да лень эти замеры уже делать, через time. кажется что реализация с toupper быстрее отработает.

-
chicagofire, в этом решении в первом спойлере в коде ещё требуется обязательное подключение библиотеки math для ф-и abs:

C
1
#include <math.h>
Добавлено через 4 минуты
а, есть strcmp, здесь, в строке №30...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.02.2018, 11:17
Помогаю со студенческими работами здесь

Разработать функцию, которая сравнивает две строки, игнорируя количество пробелов между словами
Имеется такое задание: Разработать функцию, которая сравнивает две строки, игнорируя количество пробелов между словами. Можете объяснить...

Разработать функцию, которая сравнивает две строки, игнорируя количество пробелов между словами.
Пишу в Microsoft Visual Studio -&gt;Win32 Console application -&gt;C++. Помогите пожалуйста Разработать функцию, которая сравнивает две строки,...

Функция, сравнивающая две строки, игнорируя количество пробелов между словами
Разработать функцию, которая сравнивает две строки, игнорируя количество пробелов между словами (использовать функции работы со строками). ...

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

Составить подпрограмму, которая сравнивает две строки
Составить подпрограмму, которая сравнивает две строки.


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru