1

(4 відповідей, залишених у C++)

Ви літеру t в назві textBox3 не забули?

2

(1 відповідей, залишених у Інше)

FakiNyan написав:

1. Як редагувати відразу декілька файлів?

Якщо запустити vim через vim -p файл1 файл2 файл3, то всі файли відкриються у вкладках. (Чому потрібно то -p не знаю, без нього відкривається якийсь старий режим.)

Щоб в самому vim'і відкрити щось в новій вкладці, треба написати :tabedit файл4

Поміж вкладками можна перемикатися через gt (вперед) та gT (назад). Ну, або мишкою.

:q та :q! закриває лише поточну вкладку. Щоб закрити всі, треба написати :qall та :qall!

3

(4 відповідей, залишених у HTML та CSS)

display: none; приховує елементи.

4

(2 відповідей, залишених у HTML та CSS)

По-перше, у вас одні поля вкладено в інші. Друге — в першому (хоч друге і приховане), третє — в другому.

Це можна побачити, якщо відкрити сторінку в Інструментах розробника (F12 в більшості браузерів). Ось тут можна побачити структуру: tab-2 зсунуте порівняно з tab-1, тобто воно знаходиться всередині tab-2 (я помітив те, що всередині tab-1, червоною лінією).

https://replace.org.ua/extensions/om_images/img/62684b52a67c7/tab1.png

Щоб це виправити, треба теги, якими закриваються div'и, поставити в іншому порядку.

У вас вони стоять ось так:

<div class="search_content">
  <div id="tab-1" class="search_content-item search_content-item--active">
    <form class="search_content-form">
      <input  class="search_content-input" type="text" placeholder="Введите номер">
      <button class="search_content-btn"  type="submit">искать</button>
    </form>
  <div id="tab-2" class="search_content-item">
    <form class="search_content-form">
      <input  class="search_content-input" type="text" placeholder="Введите марку">
      <button class="search_content-btn"  type="submit">искать</button>
    </form>
  <div id="tab-3" class="search_content-item">
    <form class="search_content-form">
      <input  class="search_content-input" type="text" placeholder="Введите название товара">
      <button class="search_content-btn"  type="submit">искать</button>
    </form>
  </div>
</div>
</div>
</div>

А треба ось так:

<div class="search_content">
  <div id="tab-1" class="search_content-item search_content-item--active">
    <form class="search_content-form">
      <input  class="search_content-input" type="text" placeholder="Введите номер">
      <button class="search_content-btn"  type="submit">искать</button>
    </form>
  </div>
  <div id="tab-2" class="search_content-item">
    <form class="search_content-form">
      <input  class="search_content-input" type="text" placeholder="Введите марку">
      <button class="search_content-btn"  type="submit">искать</button>
    </form>
  </div>
  <div id="tab-3" class="search_content-item">
    <form class="search_content-form">
      <input  class="search_content-input" type="text" placeholder="Введите название товара">
      <button class="search_content-btn"  type="submit">искать</button>
    </form>
  </div>
</div>

Тобто </div> від tab-1 та tab-2 треба поставити вище, щоб вони закінчуватися перед тим, як почнеться наступний tab.

5

(1 відповідей, залишених у Python)

Вітаю! Не буває дурних питань, всі питання важливі.

Програмі мовою Python можна розповсюджувати по-різному: можна з інтерпретатором, а можна без.

Перший варіант більш поширений в Windows (там люди звичайно розповсюджують програми разом з інтерпретатором), другий — в Linux (там майже в кожному дистрибутиві вже встановлено інтерпретатор Python'у, тому завантажувати його не треба).

Ви маєте рацію, при першому варіанті з кожною програмою справді буде зайвий інтерпретатор. Але в більшості випадків це не проблема. Інтерпретатор Python важить біля 7 мегабайт. Стільки трафіку ви потратите, щоб подивитися 1 хвилину відео в якості 480p. В наш час 7 мегабайт — це небагато, тому більшість людей не зважає на таку дублікацію.



Звичайно, ви можете розповсюджувати програму і в Windows без інтерпретатора. Тоді ті, хто захоче її запустити, муситимуть зайти на сайт python.org і завантажити інтерпретатор окремо. Так часто роблять з програмами для вузької аудиторії.

6

(2 відповідей, залишених у HTML та CSS)

Це робиться через :hover. Наприклад, якщо у вас стиль для елемента з класом .test, то стиль .test:hover використовуватиметься тоді, коли над елементом знаходиться курсор миші.

Ось приклад:

<!DOCTYPE HTML>
<html>
    <meta charset="utf-8">
    <head>
        <style>
            .table {
                display: grid;
                grid-template-columns: 1fr 1fr 1fr;
                width: fit-content;
            }
            .table a {
                width: 100px;
                height: 50px;
                text-align: center;
                line-height: 50px;
                text-decoration: none;
                color: black;
                
                border-radius: 20px;
                border: solid 1px rgba(0, 0, 0, 0);
            }
            .table a:hover {
                border: solid 1px #ccc;
                box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.4);
                animation: show-shadow 0.5s 1;
            }
            
            @keyframes show-shadow {
                0% {
                    box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.0);
                }
                100% {
                    box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.4);
                }
            }
        </style>
    </head>
    <body>
        <div class="table">
            <a href="#">
                Один
            </a>
            <a href="#">
                Два
            </a>
            <a href="#">
                Три
            </a>
            <a href="#">
                Чотири
            </a>
            <a href="#">
                П'ять
            </a>
            <a href="#">
                Шість
            </a>
        </div>
    </body>
</html>

7

(2 відповідей, залишених у C++)

Якось так:

#include <iostream>

int main() {
  // замініть на потрібний масив
  int arr[] = {10, -20, 3, 400, 50, -60, 70, 80, -90, -100};

  int result = 0;
  bool started_counting = false;
  for (auto item : arr) {
    if (item < 0 && !started_counting) {
      started_counting = true;
      continue;
    }

    if (item < 0 && started_counting) {
      break;
    }

    if (started_counting) {
      result += item;
    }
  }

  std::cout << result << "\n";
}

8

(4 відповідей, залишених у JavaScript, TypeScript, ECMAScript)

Код спеціально написаний таким чином, щоб не можна було зрозуміти, що він робить. Розбиратися в такому коді (до речі, у вас він тут не повний) — це робота надовго, на години, а то й на дні.

Особисто я б повірив антивірусу.

Якось так:

#include <iostream>

int main() {
  float U;
  float R;

  std::cout << "Введіть U (спад напруги) у вольтах:\n";
  std::cin >> U;
  std::cout << "Введіть R (опір) у омах:\n";
  std::cin >> R;

  float I = U / R;
  std::cout << "I (сила струму) у амперах: " << I << "\n";

}

10

(3 відповідей, залишених у C++)

vlad032 (переклад ad hoc) написав:

Ітератор використовуєте, могли просто через foreach.

for(auto& it : numstr)

і прибрати вказівники

Щиро дякую! Буду знати про foreach

#include <iostream>
#include <string>
#include <cctype>

int conv_digit(char digit) {
  if (std::isalpha(digit)) {
    return std::toupper(digit) - 'A' + 10;
  } else if (std::isdigit(digit)) {
    return digit - '0';
  }

  return -1;
}

int main() {
  int base;
  std::string numstr;

  std::cout << "Введіть основу системи числення (2, 8, 16, тощо):\n";
  std::cin >> base;
  std::cout << "Введіть число у вказаній системі числення:\n";
  std::cin >> numstr;

  int abs_result = 0;
  int sign = 1;
  bool number_started = false;

  for (auto &it : numstr) {
    if (std::isspace(it)) continue;

    if ((it == '-') && number_started) {
      std::cout << "Мінус не на початку числа!\n";
      return -1;
    }

    if (it == '-') {
      sign = -1;
      number_started = true;
      continue;
    }

    int digit = conv_digit(it);
    if (digit < 0 || digit >= base) {
      std::cout << "Неправильна цифра: " << it << "\n";
      return -1;
    }
    abs_result = abs_result * base + digit;
    number_started = true;
  }
  int result = sign * abs_result;

  std::cout << "Результат: " << result << "\n";
  return 0;
}

11

(3 відповідей, залишених у C++)

Можна, наприклад, якось так:

#include <iostream>
#include <string>
#include <cctype>

int conv_digit(char digit) {
  if (std::isalpha(digit)) {
    return std::toupper(digit) - 'A' + 10;
  } else if (std::isdigit(digit)) {
    return digit - '0';
  }

  return -1;
}

int main() {
  int base;
  std::string numstr;

  std::cout << "Введіть основу системи числення (2, 8, 16, тощо):\n";
  std::cin >> base;
  std::cout << "Введіть число у вказаній системі числення:\n";
  std::cin >> numstr;

  int abs_result = 0;
  int sign = 1;
  bool number_started = false;

  std::string::iterator it;
  for (it = numstr.begin(); it != numstr.end(); it++) {
    if (std::isspace(*it)) continue;

    if ((*it == '-') && number_started) {
      std::cout << "Мінус не на початку числа!\n";
      return -1;
    }

    if (*it == '-') {
      sign = -1;
      number_started = true;
      continue;
    }

    int digit = conv_digit(*it);
    if (digit < 0 || digit >= base) {
      std::cout << "Неправильна цифра: " << *it << "\n";
      return -1;
    }
    abs_result = abs_result * base + digit;
    number_started = true;
  }
  int result = sign * abs_result;

  std::cout << "Результат: " << result << "\n";
  return 0;
}

Я не використовую C++ професійно, тому код може бути неідеальний (хай поправлять ті, хто знає C++ краще за мене). Але він принаймні працює. :D

Якщо треба щось пояснити в цьому коді, кажіть.

12

(23 відповідей, залишених у Оцінка сайтів)

А це нормально, що в мене на цьому сайті показується реклама порнографії? Це так задумано чи сайт зламали? У будь-якому випадку... я б побоявся довіряти сайту з такою рекламою.

13

(4 відповідей, залишених у Python)

1. По-перше, ви складаєте речі, але не написали поміж ними знаки +.

Ось тут:
lab1.config(root,text = "Годин: " int(h)+   "хвии:" int(x) )
бракує двох плюсів:
lab1.config(root,text = "Годин: " + int(h) +   "хвии:" + int(x) )


2. По-друге, ви складаєте значення різних типів. Рядки не можна складати з числами.

Знаком + позначається дві дуже різних операції:

  • сума (сума 20 і 22 дає 42)

  • та конкатенація (конкатенація 20 і 22 дає 2022).

Щоб відрізняти їх між собою, Python перевіряє типи: для рядків використовується конкатенація ("20" + "22" == "2022"), а для чисел — сума (20 + 22 == 42).

У вашому випадку вам потрібна конкатенація (тому що сума слова «Годин: » не має сенсу, у слова немає математичного значення), тобто вам потрібні рядки. У вас використана не та функція:

  • Функція int дає перетворює свій аргумент в ціле число. int("20") — це те саме, що 20

  • Функція str дає перетворює свій аргумент в ціле число. str(20) — це те саме, що "20"

Тобто вам потрібно замінити в рядку
lab1.config(root,text = "Годин: " + int(h) +   "хвии:" + int(x) )
функцію int на функцію str:
lab1.config(root,text = "Годин: " + str(h) +   "хвии:" + str(x) )


3. Ви поставили пробіл перед рядком, а не всередині рядку. Пробіли всередині виразів ігноруються. Щоб отримати пробіл перед «хвии: » потрібно поставити його всередині лапок: " хвии:.

І, до речі, краще виправити помилки друку в слові «хвилин». Тобто цей рядок:
lab1.config(root,text = "Годин: " + str(h) +   "хвии:" + str(x) )

виглядатиме так:
lab1.config(root,text = "Годин: " + str(h) +  " хвилин:" + str(x) )


4. В-четверте, в функцію config не передається батьківський елемент (у вас це root).

Коли ви створюєте надпис або поле, треба сказати бібліотеці Tk, до якого вікна (або елемента на вікні) це поле належить. Бо у вас може бути скільки завгодно вікон. Тому ми передаємо в рядку ent1 = Entry(root,width = 10) аргумент root.

Але функції config такий аргумент не передається. Тому що бібліотека Tk вже знає, на якому вікні знаходиться надпис, і цього достатньо.

Тому замість:
lab1.config(root,text = "Годин: " + str(h) +  " хвилин:" + str(x) )
треба писати:
lab1.config(text = "Годин: " + str(h) +  " хвилин:" + str(x) )


5. Ну і в-п'яте, у вас цей рядок

lab1.config(root,text = "Годин: " + str(h) +  " хвилин:" + str(x) )

має виконуватися не зразу на початку програми, а коли викликано функцію день. Тобто перед ним треба поставити пробіл, щоб показати, що він належить до фунції день, а не до наступних рядків без пробілу.



В результаті програма стане виглядати так:

from tkinter import *
import tkinter.messagebox
def день():
 d = int(ent.get())
 h=24*d
 x=60*24*d
 lab1.config(text = "Годин: " + str(h) +  " хвилин:" + str(x) )
root = Tk()
lab = Label(root, text = "Введіть кількість днів")
lab.place(x=20, y=20)
ent = Entry(root,width = 10)
ent.place(x=20, y=40)
lab1 = Label(root, text = "")
lab1.place(x=20, y=60)
ent1 = Entry(root,width = 10)
ent1.place(x=20, y=100)
but = Button(root, text = "Обчислити", command = день)
but.place(x=20, y=120)
root.mainloop()

Поспіхів!


P.S. Як на мій смак, друге поле в цій програмі зайве. Я б забрав ці два рядки:

ent1 = Entry(root,width = 10)
ent1.place(x=20, y=100)

14

(5 відповідей, залишених у C#, .NET)

cheappi386 написав:
var ukrainianCultureInfo = new CultureInfo("uk-UA");

на що таке якщо є CultureInfo.CurrentCulture

А чим це відрізнятиметься від випадку, коли культуру взагалі не передавати?

Ну і CultureInfo.CurrentCulture не обов'язково буде українською *DONT_KNOW*

15

(1 відповідей, залишених у Python)

В кирилиці помилка в змінній slovanska_zip, черв поставлено замість хіру.

convert_to_slovanska(600) має видавати 'Х', а видає 'Ч' (тобто дев'яносто).

16

(5 відповідей, залишених у C#, .NET)

return float.Parse(val);

використовує поточні мовні налаштування. Тому на комп'ютері з американськими налаштуваннями воно прийматиме 15.390625, а на комп'ютері з українськими — 15,390625.

Приймати числа в тому форматі, який вказано в налаштуваннях поточної системи — це стандартна поведінка. Її можна змінити одним з наступних способів.

1. Щоб завжди приймати 15.390625, можна передати System.Globalization.CultureInfo.InvariantCulture в якості аргументу (InvariantCulture — це такі стандартні налаштування, які можна використовувати для всяких технічних контекстів і не поміняються в майбутньому):

// десь на початку
using System.Globalization;

// а потім ось так
return float.Parse(val, CultureInfo.InvariantCulture);

Такий код завжди прийматиме 15.390625, вважатиме розділювачем розрядів, тому 15,390625[/t] буде еквівалентно [tt]15,390625[/t]).

2. Щоб завжди приймати [tt]15,390625, можна спеціально вказати, що нам потрібні саме українські налаштування:

// десь на початку
using System.Globalization;

// а потім ось так
var ukrainianCultureInfo = new CultureInfo("uk-UA");
return float.Parse(val, ukrainianCultureInfo);

3. Якщо ви хочете приймати і крапки, і коми, і ви знаєте, що в ваших числа ніколи не буде розділювачів розрядів, можна зробити ось так:

// десь на початку
using System.Globalization;

// а потім ось так
return float.Parse(val.Replace(",","."), CultureInfo.InvariantCulture);

4. Якщо ж вам потрібні і розділювачі розрядів, і дроби, то рішення немає. З числа 12,345 неможливо довідатися, це українське число «дванадцять цілих та триста сорок п'ять десятих» або американське число «дванадцять тисяч триста сорок п'ять», вони повністю ідентичні.