Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 23.11.2024
Сообщений: 6

Необходимо разработать программу для валидации банковских карт

30.11.2024, 09:15. Показов 2258. Ответов 11

Студворк — интернет-сервис помощи студентам
Задание
Необходимо разработать программу для валидации банковский
карт. Программа должна проверять корректность введенного
номера и выводить название платежной системы и банка
эмитента, входящего в топ 10 банков РФ. Отдельной переменной
DEBUG должна включаться трассировка, выводящая все шаги
алгоритма валидации банковской карты.
Программа должна быть реализована на языке Pascal
Критерии оценки
Программа выполняет указанныев задании требованияв полном
объеме
Программа может обрабатывать все возможные ошибки при
выполнении
Чистота кода и отсутствиеcodesmells
- Названия переменных отражают хранящиесятам данные
- Названия переменных безтранслита
- Отступы 4 пробела для выделения вложений в блоках кода
(тело if или цикла)
- Скобки, ограничивающие блоки кода, расположены
правильно
- Разделение пустыми строками кода отвечающий за разный
функционал программы
Пример корректной работы
программы
Ввод:
Введите номер банковской карты: 4897 9803 1885 1582
Вывод:
Номер корректен
Платежнаясистема: VISA
Банк эмитент: Сбер
Вопросы длязащиты
Объяснить предметную терминологию:
банк-эквайер, банк-эмитент, платежнаясистема, БИН.
ОбъяснитьIT терминологию:
Программа, язык программирования, программный код,
компилятор, машинный код, исполняемый файл, частота
процессора, такт, переменная, типы данных в Pascal, условные
конструкции Pascal, Циклы Pascal,блок кода,
Умение детально объяснить принцип работы программы и ее
алгоритмов.
Какаябывает память у компьютера
Почему числовые переменные ограничены по размеру памяти
Дополнительно все разбить на функции и процедуры
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
30.11.2024, 09:15
Ответы с готовыми решениями:

Алгоритм Луна для валидации кредитных карт
Привет всем! Нужна помощь! Нужно запрограммировать алгоритм луна для валидации кредитных карт! Проф тип жестокий а я новичёк пока не...

Рефакторинг кода для генерации, валидации и записи в файл номеров платежных карт
В учебных и практических целях реализовал код, генерирующий номера платежных карт, состоящих из 16 цифр, а также их проверку по алгоритму...

Считыватель UID банковских карт
В рамках дипломного проекта делаю систему учёта посещаемости на ардуине. Приобрёл модуль RC522 для считывания RFID меток, так как было...

11
Модератор
10361 / 5635 / 3394
Регистрация: 17.08.2012
Сообщений: 17,197
30.11.2024, 13:59
Ничего сложного. Разбить на цифры, проверить корректность номера карты алгоритмом Луна, расшифровать БИН.

Только вот загвоздка: мы ни разу не банкиры, и нам доступно не всё.

Выложите таблицу БИН для Ваших десяти банков. Помните, так как у нас используются карты "МИР", для них БИН должен состоять из восьми цифр, а не из шести.

Да, и с какой целью Вы выложили вопросы, на которые придётся отвечать Вам? Здесь не обучающий сайт, потрудитесь всё найти и выучить сами.
1
Модератор
10361 / 5635 / 3394
Регистрация: 17.08.2012
Сообщений: 17,197
01.12.2024, 22:32
Какого лешего Вы мне "спасибку" поставили? С какого перепуга? Я ещё Вам не помог, потому что у меня нет БИНов. Я не банкир. Но Вы-то почти банкир, может, у Вас БИНы есть? Они, если что, не секретные, просто их знают только те, кому это действительно нужно.

Я нашёл базу БИНов на сайте какого-то американского банка, но там даже СБЕРа нет, по понятным причинам.

Выкладывайте БИНы и названия 10 ведущих банков РФ, тогда помогу.
0
0 / 0 / 0
Регистрация: 23.11.2024
Сообщений: 6
16.12.2024, 18:49  [ТС]
Cyborg Drone, Первая цифра БИН указывает на платежную систему (для карт «Мир» — первые две цифры):
- 4 — Visa;

- 5 — MasterCard;

- 6 — UnionPay;

- 22 — «Мир».

1)Альфа-Банк: 521178, 548673, 548601, 45841, 415428, 676371, 477964

2)Газпромбанк: 548999, 526483

3)МТС Банк — 533736/540616

4)Открытие — 434146, 405870, 544573, 532301

5) Райффайзен Банк: 462730, 462729

6)Тинькофф банк: 521324, 437773

7) Сбербанк: 427683, 63900, 67758, 427901, 54693, 427644, 427601, 427901, 427631

8) Хоум Кредит: 445435

9) Яндекс-Деньги: 518901

10) Промсвязьбанк: 447817, 447818, 476208 , 476206, 554759, 520373
0
Модератор
10361 / 5635 / 3394
Регистрация: 17.08.2012
Сообщений: 17,197
16.12.2024, 21:55
Лучший ответ Сообщение было отмечено mikhlop100 как решение

Решение

Долго не отвечал, потому что программа, хоть и простая, но муторная, и потребовала внимательного подхода.

Вот программа согласно требований к Вашему заданию:
Pascal
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
//{$Define DEBUG} //переменная DEBUG, для вывода отладочной информации удалить "//" в начале строки
 
type
    index = (bank_name, BINs); //тип для сепарации имени банка и его БИНов
 
const
    //платёжные системы
    payment_system: array['0'..'9'] of string[80] = (
        'неизвестна',
        'какая-то авиалиния',
        'какая-то авиалиния',
        'American Express или какая-то организациия сферы путешествий и развлечений',
        'Visa',
        'Mastercard',
        'Union Pay или какая-то мерчендайзинговая компания',
        'какая-то топливная компания',
        'какое-то предприятие в сфере телекоммуникаций',
        'государственные ассигнации');
 
    //названия и БИНы банков, каждый БИН должен быть обрамлён пробелами
    bank_count = 10; //количество банков
    banks: array[1..bank_count, bank_name..BINs] of string[80] = (
        ('Альфа-Банк', ' 521178 548673 548601 2245841 415428 676371 477964 '),
        ('Газпромбанк', ' 548999 526483 '),
        ('МТС Банк', ' 533736 540616 '),
        ('Открытие', ' 434146 405870 544573 532301 '),
        ('Райффайзен Банк', ' 2262730 462729 '),
        ('Тинькофф банк', ' 521324 437773 '),
        ('Сбербанк', ' 427683 2263900 2267758 427901 2254693 427644 427601 427901 427631 489798 '),
        ('Хоум Кредит', ' 445435 '),
        ('Яндекс-Деньги', ' 518901 '),
        ('Промсвязьбанк', ' 447817 447818 476208 476206 554759 520373 '));
 
var
    number, BIN: string; //строки с номером карты и БИНом
    i, d, s: integer; //счётчик, число, сумма
    correct, found: boolean; //флаги корректности (отсутствия ошибок) и наличия БИН
begin
    write('Введите номер банковской карты: ');
    readln(number); //ввод номера банковской карты
    {$Ifdef DEBUG}
    writeln('Введён номер карты: ', number);
    writeln('Проверка длины номера карты...');
    {$Endif}
    correct := length(number) = 19; //длина номера вместе с пробелами должна быть 19
    if not correct then //если длина номера неверная, то...
        begin
            {$Ifdef DEBUG}
            writeln('Неправильная длина номера (', length(number), ').') //сообщаем об этом
            {$Endif}
        end
    else //иначе (если длина номера верная)
        begin  //проверяем символы
            {$Ifdef DEBUG}
            writeln('Длина номера карты корректна.');
            writeln('Проверка символов...');
            {$Endif}
            i := 1; //пока первый символ
            while i <= 19 do //цикл проверки символлов
                begin
                    correct := (i mod 5 = 0) and (number[i] = ' ') //на позициях. кратных 5, должен быть пробел,
                        or (i mod 5 <> 0) and (number[i] in ['0'..'9']); //на остальных позициях цифры
                    if correct then //если символ верный, то
                        inc(i) //переходим к следующему
                    else //иначе (если символ не верный)
                        break //прекращаем проверку
                end;
            if not correct then //если есть некорректный символ, то
                begin
                    {$Ifdef DEBUG}
                    writeln('Номер не соответствует шаблону 0000 0000 0000 0000.'); //сообщаем об этом
                    writeln(number); //печатаем номер
                    for i := 1 to i-1 do //переходим на позицию перед символом
                        write(' ');
                    writeln('|'); //печатаем указатель на символ
                    writeln('Некорректный символ') //сообщаем о некорректном символе
                    {$Endif}
                end
            else //иначе (если нет некорректного символа)
                begin
                    {$Ifdef DEBUG}
                    writeln('Символы корректны.');
                    writeln('Удаление пробелов...');
                    {$Endif}
                    for i := 3 downto 1 do //удаляем пробелы
                        delete(number, 5*i, 1);
                    {$Ifdef DEBUG}
                    writeln('Пробелы удалены.');
                    writeln('Проверка корректности номера алгоритмом Луна...');
                    {$Endif}
                    s := 0; //контрольная сумма пока равна 0
                    for i := 1 to 16 do //цикл проверки номера алгоритмом Луна
                        begin
                            d := ord(number[i]) - ord('0'); //переводим символ в число
                            if odd(i) then //если номер символа нечётный, то
                                begin
                                    d := d * 2; //умножаем число на 2
                                    if d > 9 then  //если число больше 9, то
                                        dec(d, 9); //вычитаем из числа 9
                                end;
                            inc(s, d) //добавляем число к контрольной сумме
                        end;
                    correct := s mod 10 = 0 //контрольная сумма должна быть кратна 10
                end;
        end;
    if not correct then //если номер некорректен, то
        writeln('Номер не корректен') //сообщаем об этом
    else //если номер корректен, то
        begin
            writeln('Номер корректен.'); //сообщаем об этом
            write('Платёжная система: '); //определяем и печатаем платёжную систему
            if copy(number, 1, 2) = '22' then //если первые две цифры "22", то
                writeln('Мир') //это "Мир"
            else //иначе (если первые две цифры не "22")
                writeln(payment_system[number[1]]); //печатаем платёжную систему
            if number[1] > '0' then //если первая цифра номера не "0", то
                begin //определяем банк по БИН
                    write('Банк-эмитент: ');
                    if copy(number, 1, 2) = '22' then //если первые две цифры "22", то
                        BIN := ' ' + copy(number, 1, 7) + ' ' //БИН состоит из первых 7 цифр
                    else //иначе (если первые две цифры не "22")
                        BIN := ' ' + copy(number, 1, 6) + ' '; //БИН состоит из первых 6 цифр
                    i := 0; //номер банка, пока 0
                    repeat //цикл поиска банка
                        inc(i); //следующий банк
                        found := pos(BIN, banks[i, BINs]) > 0; //проверяем, есть ли БИН
                    until found or (i = bank_count) //Выходим из цикла, если банк найден, или банки кончились
                end;
            if found then //если банк найден, то
                writeln(banks[i, bank_name]) //печатаем название найденного банка
            else //иначе (если банк не найден)
                writeln('неизвестен') //печатаем, что банк неизвестен
        end;
    write('Нажмите клавишу <Enter> для завершения программы...');
    readln
end.
Комментарии, поясняющие операторы программы, при желаниии, перед сдачей можете удалить.

Среди БИНов, которые Вы указали, есть пятизначные, чего быть не может. Обычно БИН состоит из 6 или из 7 цифр. Я решил, что это БИНы платёжной системы "Мир", и добавил им 22 в начало.

В номере банковской карты из примера содержится БИН, который Вы не указали. Добавил этот БИН к Сбербанку.

Количество БИНов для разных банков разное, поэтому для хранения БИНов была применена строка. Конечно, по уму нужно было сделать список, но это очень сильно усложнило бы программу. БИНы с обеих сторон ограничены пробелами для того, чтобы поиск был корректен. Иначе возможно спутать семизначный и шестизначный БИН, если они различаются только наличием дополнительной двойки.

Если что не так, подправьте массивы payment_system и/или banks. При добавлении/удалении банков в/из banks не забудьте скорректировать константу bank_count. При добавлении/удалении БИНов в/из banks просто добавьте или удалите БИНы, следите, чтобы они были шестизначными или семизначными, и были ограничены пробелами и в начале, и в конце.

Так как в примере нет ввода переменной DEBUG, я сделал вывод отладочной информации с помощью директив компилятора (это специальные комментарии, начинающиеся с {$). Если нужно выводить отладочную информацию, то уберите первые два символа // в первой строке. Тогда переменная DEBUG будет определена, и отладочная информация будет выводиться. Для отключения вывода отладочной информации, естественно, эти два символа нужно добавить в начало первой строки. Тогда переменная DEBUG не будет определена, и отладочная информация выводиться не будет. В программе то, что относится к выводу отладочной информации, располагается между директивами компилятора {$Ifdef DEBUG} и {$Endif}.

Разбирайтесь, там всё просто, на самом деле.

И пишите, если что не так. Подрихтуем.

Добавлено через 17 минут
Ах, да, чуть не забыл. Программа обрабатывает только 16-значные номера карт (15 рабочих и 1 проверочная цифра). Поэтому часть алгоритма Луна для чётного количества рабочих цифр не реализована за ненадобностью.
1
0 / 0 / 0
Регистрация: 21.02.2022
Сообщений: 3
13.01.2025, 06:45
из истории
https://www.freeformatter.com/... dator.html

 Комментарий модератора 
Внимание! Нижеприведённый код без переделки использовать нельзя!

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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
Function CheckCode(cardcode : String) : Boolean;
var
  x          : Integer;
  s          : String;
  s2         : String;
  c          : Array [0..15] of char;
  i          : Array [0..15] of integer;
  index      : Integer;
  lastnumber : Integer;
  summa      : integer;
  lastnumber_solver : integer;
begin
  result := false;
  s := cardcode;
  s2 := '';
  index := 0;
  for x := 0 to 15 do c[x] := '0';
  for x := 1 to s.Length do
  begin
    if s[x] = ' ' then
    else
    begin
      s2 := s2 + s[x];
      c[index] := s[x];
      index := index + 1;
    end;
  end;
  lastnumber := strtoint(c[15]);
  for x := 0 to 14 do
  begin
    i[14 - x] := strtoint(c[x]);
  end;
  for x := 0 to 14 do
  begin
   if x mod 2 = 0 then
    i[x] := i[x] * 2;
  end;
  for x := 0 to 14 do
  begin
   if i[x] > 9 then
    i[x] := i[x] - 9;
  end;
  summa := 0;
  for x := 0 to 14 do
    summa := summa + i[x];
  lastnumber_solver := summa mod 10;
  result :=  lastnumber_solver = lastnumber;
end;
запуск
Delphi
1
2
3
4
5
6
7
procedure TForm1.Button2Click(Sender: TObject);
begin
 if   CheckCode(edit1.Text) then
   Showmessage('Корректный')
   else
   Showmessage('не корректный');
end;
0
0 / 0 / 0
Регистрация: 21.02.2022
Сообщений: 3
13.01.2025, 06:58
Код на Delphi 10.4
Вложения
Тип файла: rar 13 Алгоритм проверки.rar (2.45 Мб, 5 просмотров)
0
Модератор
10361 / 5635 / 3394
Регистрация: 17.08.2012
Сообщений: 17,197
13.01.2025, 20:35
ndenis, не торопитесь возмущаться, я сейчас Вам всё поясню.

Добавлено через 4 часа 57 минут
ndenis, пожалуйста, проверяйте Ваш код перед публикацией, если не желаете прослыть лжецом и/или троллем. Внимательнее отностиесь к Вашим словам, если их оценивают миллионы людей.

Но, не расстраивайтесь, всё не так плохо: я по своим каналам разузнал, что индусские программисты торжественно выбросили Ваш код в Ганг, и во время этого сакрального действа выпили по стаканчику фенни в Вашу честь. Ладно-ладно, чур не обижаться, пошутил я, точнее, это такой у меня сарказм .

Разбор полётов, в общих чертах. Все мои матюки разрешаю додумать Вам в процессе разбора.

Достоинства Вашей программы:
  • Вы её написали.
Недостатки Вашей программы:
  • из-за алгоритмических ошибок, Ваша программа работает неверно, например, для корректного номера карты 4561 2612 1234 5467 и для некорректного номера карты 4561 2612 1234 5464 (номера взяты из Википедии, смотрите ниже) Ваша программа выдаёт один и тот же ответ: "не корректный", а вот для некорректного номера 4561 2612 1234 5463 выдаёт ответ "корректный". Ну чо, ошибка глупая, не проверили, бывает...;
  • программа далеко не полностью соответствует заданию, поскольку (как бы) реализован только алгоритм Луна и то наполовину, а всё остальное не реализовано;
  • множество типичных неточностей и излишеств, свойственных программистам-неофитам. Вот Ваша функция, из которой я выкинул все синтаксические косяки, ляпы и анахронизмы:
    Pascal
    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
    
    //Внимание! Код не рабочий, приведён только для обсуждения вопроса.
    function CheckCode(cardcode : String): boolean;
    var
      x, index, lastnumber, summa, lastnumber_solver: integer;
      s, s2: String;
      c: array[0..15] of char;
      i: array[0..15] of integer;
    begin
      s := cardcode;
      s2 := '';
      index := 0;
      for x := 1 to s.Length do
        begin
          if s[x] <> ' ' then
            begin
              s2 += s[x];
              c[index] := s[x];
              index += 1;
            end
        end;
      lastnumber := strtoint(c[15]);
      for x := 0 to 14 do i[14 - x] := strtoint(c[x]);
      for x := 0 to 14 do if x mod 2 = 0 then i[x] *= 2;
      for x := 0 to 14 do if i[x] > 9 then i[x] -= 9;
      summa := 0;
      for x := 0 to 14 do summa += i[x];
      lastnumber_solver := summa mod 10;
      result :=  lastnumber_solver = lastnumber
    end;
    Как говорится, почувствуйте разницу. И Вы уже видите свои ошибки, не так ли? Или не видите?

Об причинах.

Источник "из истории" Вас обманул, и, скорее всего, Вы его немножко неверно поняли. Получается, что Вы недостаточно изучили материал по теме.

Правильный алгоритм: Википедия - Алгоритм Луна.

Хотя, конечно, описан алгоритм этот хоть и правильно, но через пень-колоду, ну что тут поделаешь, Википедия. Лун вёл отсчёт (всех) цифр номера карты справа, а не слева, поэтому ему не было смысла разделять длину номера на чётную и нечётную.

Оригинальный алгоритм, созданный и описанный Луном, реализован мной в виде функции на паскале (номер должен содержать только цифры, длина номера может быть любая, потому что так у Луна):
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function CheckCode(cardcode: String): boolean;
var
  i, length_of_number, number_of_digit, digit, sum: integer;
begin
  length_of_number := length(cardcode);
  sum := 0;
  for i := 1 to length_of_number do
    begin
      number_of_digit := length_of_number - i + 1;
      digit := StrToInt(cardcode[i]);
      if not odd(number_of_digit) then
        begin
          digit := digit * 2;
          if digit > 9 then dec(digit, 9)
        end;
      inc(sum, digit)
    end;
  CheckCode := sum mod 10 = 0
end;
Согласитесь, первоисточник короче Вашей ошибочной реализации. Если добавить удаление пробелов, будет именно то, что Вы хотели написать.

Моя реализация полного (и так называемого упрощённого) алгоритма Луна для (не слишком старых) Delphi или для Lazarus, и очень подходящая для замены Вашей неверной функции:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function CheckCode(cardcode: string): boolean;
var
  i, n, sum, digit: integer;
begin
  n := 0;
  sum := 0;
  for i := cardcode.Length downto 1 do
    if cardcode[i] <> ' ' then
      begin
        n += 1;
        digit := StrToInt(cardcode[i]) * (2 - n and 1); //можно n mod 2, но это медленнее
        if digit > 9 then digit -= 9;
        sum += digit
      end;
  Result := sum mod 10 = 0
end;
Замечание: эта фунуция (как и Ваша) требует предварительных проверок на длину номера карты и на корректность символов этого номера.

Вот, как-то так... Надеюсь, это всё будет Вам полезным.

P.S: Архив Ваш посмотрел. Всё то же самое, что и в Вашем сообщении #6, только немножко страшнее.
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7816 / 4635 / 2837
Регистрация: 22.11.2013
Сообщений: 13,157
Записей в блоге: 1
13.01.2025, 21:19
Цитата Сообщение от Cyborg Drone Посмотреть сообщение
для (не слишком старых) Delphi или для Lazarus
... ну а для тех, что постарше, поменять немного:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
function CheckCode(cardcode: String): Boolean;
var
  i, n, sum, digit: Integer;
begin
  n := 0; sum := 0;
  for i := Length(cardcode) downto 1 do
    if cardcode[i] in ['0'..'9'] then begin
      Inc(n);
      digit := (Ord(cardcode[i]) - Ord('0')) * (2 - n and 1);
      if digit > 9 then Dec(digit, 9);
      Inc(sum, digit);
    end;
  CheckCode := sum mod 10 = 0
end;
0
Модератор
10361 / 5635 / 3394
Регистрация: 17.08.2012
Сообщений: 17,197
13.01.2025, 21:41
bormant, дружище, рад тебя видеть. Так у меня то же самое написано, что и у тебя, как ты порой говоришь, что совой об пень, что пнём об сову.

Но у меня есть "оправдание": я хотел выпендриться показать операторы присваивания с модификацией, и не скатываться в неведомые олдскульные операторы не особенно отступать от современного общепринятого написания.
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7816 / 4635 / 2837
Регистрация: 22.11.2013
Сообщений: 13,157
Записей в блоге: 1
13.01.2025, 21:48
Цитата Сообщение от Cyborg Drone Посмотреть сообщение
рад тебя видеть
Аналогично!
Цитата Сообщение от Cyborg Drone Посмотреть сообщение
то же самое написано, что и у тебя, что совой об пень, что пнём об сову
Всё так, что ж тут поделаешь
0
13.01.2025, 22:05

Не по теме:

Ну, тогда со Старым Новым годом, что ли...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.01.2025, 22:05
Помогаю со студенческими работами здесь

Вакансия: Специалист по доставке банковских карт
Вакансия Чем предстоит заниматься: Проводить встречи с клиентами банка на удобной для них территории Подписывать документы с...

Как реализовать систему банковских кредитных карт?
С Чего начать? Может кто - то сталкивался!? СИСТЕМА банк! а именно как пластиковые карты. имеют уникальный номер и фио. приход...

Необходимо реализовать джейсонсхему для валидации данных программы
Необходимо реализовать валидацию загруженных данных с помощью спецификации JSON Schema. #!/usr/bin/env python3 # -*- coding: utf-8...

Необходимо разработать программу для вычисления значений функции f(x) на интервале от xn до xk с шагом h
Необходимо разработать программу для вычисления значений функции f(x) на интервале от xn до xk с шагом h и оценить качество программы с...

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


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru