М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
ррр322
ррр322
07.07.2021 20:03 •  Информатика

Ученик написал программу, которая должна отобразить окно. Однако, после запуска ничего не произошло. Почему? (код программы представлен на рисунке).​


Ученик написал программу, которая должна отобразить окно. Однако, после запуска ничего не произошло.

👇
Ответ:
MissSonka
MissSonka
07.07.2021

Ученик забыл вызвать функцию mainloop(), эта функция вызывает бесконечный цикл и ждёт пока пользователь будет как-то взаимодействовать с программой. Ученику нужно дописать строку: root.mainloop()

4,7(49 оценок)
Открыть все ответы
Ответ:
qwem11
qwem11
07.07.2021

ответ на Ваш вопрос простой: никак!

В языке Паскаль есть так называемый диапазонный тип. Он реализуется, как "вырезка" части диапазона базового типа. Например, если базовый тип целочисленный, можно вырезать из него числа в диазахоне "от" и "до".

Например, описание k: -10..10 означает, что k целочисленное и может изменять от -10 до 10. Целочисленное оно потому, что константы -10 и 10 в PascalABC.NET имеют тип integer. Проблема же состоит в том, что в PascalABC.NET контроль за выходом значения переменной за отведенные границы всего лишь... отсутствует! Т.е. описание k: -10..10 - это просто "хотелка". И Вы можете продолжать этого хотеть. Может быть, Вы подумали, что это PascalABC.NET такой плохой язык? Спешу разочаровать: так ведут себя все диалекты Паскаля. Дело в том. что проверка границ диапазона фактически должна делаться при каждой машинной операции с участием переменной диапазонного типа. И это настолько замедляет программу, что такая проверка, даже если она предусмотрена в конкретном компиляторе, по умолчанию выключена. Более того, оказывается, что гораздо проще проверять выход за границы диапазона напрямую в программе!

Что касается переменной типа real - с ней еще хуже: ее даже нельзя объявить в диапазонном типе, поскольку тип real не является порядковым.

Как итог: проверяем if (k>=-10) and (k<=10) then <все хорошо>.

Можно воспользоваться вариантом if k.Between(-10,10) then ...

Between работает и с real: if r.Between(3.4,15.063) then ...

4,7(94 оценок)
Ответ:

#include <iostream>

#include <vector>

#include <random>


int rand_num(int min, int max)

{

std::random_device rd;    

std::mt19937 rng(rd());    

std::uniform_int_distribution<int> uni(min, max);


auto random_integer = uni(rng);


return random_integer;

}


int sum_vec(std::vector<int> v)

{

int sum = 0;

for (auto &num : v)

{

 sum += num;

}

return sum;

}


void print_vec_2d(const std::vector<std::vector<int>>& v)

{

for (int i = 0; i < v.size(); ++i)

{

 for (int j = 0; j < v[i].size(); ++j)

 {

  std::cout << v[i][j] << " ";

 }

 std::cout << std::endl;

}

}


void sort_vec_2d(std::vector<std::vector<int>>& v)

{

for (int i = 0; i < v.size(); ++i)

{

 for (int j = i + 1; j < v.size(); ++j)

 {

  if (sum_vec(v[i]) > sum_vec(v[j]))

  {

   std::swap(v[i], v[j]);

  }

 }

}

}


void rand_vec_2d(std::vector<std::vector<int>>& v, int min, int max)

{


v.resize(rand_num(min, max));


for (int i = 0; i < v.size(); ++i)

{

 for (int j = 0; j < rand_num(min, max); ++j)

 {

  v[i].push_back(rand_num(min, max));

 }

}

}


int main()

{

setlocale(LC_ALL, "Russian");

std::vector<std::vector<int>> nums;

rand_vec_2d(nums, 1, 10);


std::cout << "Исходынй вектор: " << std::endl;

print_vec_2d(nums);


sort_vec_2d(nums);


std::cout << "Полученный вектор: " << std::endl;

print_vec_2d(nums);

//system("pause");

}

4,6(45 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ