Задать вопрос
  • Почему неправильный результат выполнения функции?

    @MiiNiPaa
    Совершенное число́ (др.-греч. ἀριθμὸς τέλειος) — натуральное число, равное сумме всех своих собственных делителей (то есть всех положительных делителей, отличных от самого́ числа).


    Единицу забыли. Она тоже делитель.
    Ответ написан
    1 комментарий
  • Почему закрывается доступ к переменной?

    Adamos
    @Adamos
    А ведь если этот говнокод на С нормально переписать на С++ (использовать вектора вместо массивов, собрать глобальные переменные внутрь класса с функциями, которые их используют) - глядишь, и ошибка найдется где-то по пути...
    Ответ написан
  • Как получить случайное значение с двух диапазонов?

    @andrewjabber
    Это решение подходит для любого диапазона, например
    range[] = "asdfjkl";
    #include <stdio.h>
    #include <time.h>
    #include <stdlib.h>
    #include <string.h>
    #include <conio.h>
    
    char range[] = "abcd";
    int rangeLen;
    
    char randomResponse(char correctAnswer)//принимает правильный вариант ответа, возвращает неверный
    {
    	int r = rand() % (rangeLen-1);
    	if (r >= correctAnswer)
    		++r;
    	return range[r];
    }
    
    int main()
    {
    	srand(time(0));
    	rangeLen = strlen(range);
    	// test
    	for (int i = 0; i < rangeLen; i++)
    		printf("%c ", randomResponse(range[i]));
    
    	_getch();
    	return 0;
    }
    Ответ написан
    1 комментарий
  • Как правильно передать в функцию ссылку на двумерный массив?

    Olej
    @Olej
    инженер, программист, преподаватель
    или имя двумерного массива не является указателем на указатель?

    Является.
    Ответ написан
    2 комментария
  • Как правильно передать в функцию ссылку на двумерный массив?

    @Mercury13
    Программист на «си с крестами» и не только
    void readResponses(string address, string (&rResponse)[15][4]) {}


    Двухмерный массив — НЕ указатели на указатель, это тебе не Ява. Это массив одномерных массивов.

    Нормального способа передачи массивов фиксированной длины в Си нет (только через ук-ль на первый элемент), в Си++ — через ссылку.
    Ответ написан
    6 комментариев
  • Где логическая ошибка?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Чересчур сложно вычисляете. Лучше сначала аналитически упрощать формулу, тогда меньше места для ошибок в программе останется.
    Пусть нижнее (большее) основание a, верхнее (меньшее) - b.
    Высота трапеции (равнобедренной) h = (a-b)*tg(α)/2
    Площадь трапеции S = (a+b)*h/2 = (a+b)*(a-b)*tg(α)/4 = (a2-b2)*tg(α)/4
    Ответ написан
    Комментировать
  • Где логическая ошибка?

    @dmitryKovalskiy
    программист средней руки
    Площадь трапеции : S = (a+b) * h /2. Откуда у вас степенные функции и корень квадратный понять не могу.
    h можно вычислить через решение треугольника. где h-один катет, второй : (b-a)/2 так как у вас равнобедренная трапеция, и тангенс/котангенс имеющегося у вас угла.
    Ответ написан
    Комментировать
  • Где логическая ошибка?

    GavriKos
    @GavriKos
    У вас под корнем получается отрицательное число, из за того что неправильно вычислили боковую сторону. Смотрите формулы прямоугольного треугольника. Чтобы было проще - не пишите всю формулу, разбейте ее на составные части. И дебаг будет простой.
    Ответ написан
    Комментировать
  • Какая логическая ошибка в коде?

    gbg
    @gbg Куратор тега C++
    Любые ответы на любые вопросы
    Классика жанра - запись в неинициализированный указатель.

    Читайте учебник по указателям лучше.

    double *cm никуда не указывает. Чтобы указывала, нужно присвоить. Например, так.

    double* cm=new double.
    Ответ написан
    Комментировать
  • Что представляет собой ссылка?

    Nipheris
    @Nipheris Куратор тега C++
    Ну конечно что ждет от вас препод, нам тут все равно не угадать. Я бы как раз и ответил, что это имя для переменной. Я не соглашусь с некоторыми ответами здесь, т.к. не всегда для ссылки компилятор будет выделять память - локальная ссылка на локальную же переменную как раз таки будет просто вторым именем в таблице идентификаторов компилятора при компиляции программы.

    Главная фишка ссылки в том, что это абстрактное l-value, т.е. сущность, в которую можно что-то присвоить (если базовый тип - не константный). То есть ссылка всегда оборачивает какой-либо адрес в памяти, причем на время жизни ссылки этот адрес постоянен (ссылку нельзя "переставить" на другую область памяти). Именно поэтому ссылки всегда нужно инициализировать.
    ЧЕМ инициализировать - другое дело. Можно переменной, а можно - разыменованным указателем.

    В зависимости от ситуации технически ссылка может быть реализована по-разному. Если это ссылка на лок. переменную, то большинство компиляторов просто добавят себе новое имя в таблицу. Никакой дополнительной памяти выделяться не будет. Если же ссылка приходит как параметр или отдается как возвращаемое значение - то тут скорее всего понадобится реализовать ее как указатель (указатель передавать/возвращать). Однако, еще раз напомню: ссылка скрывает технические подробности, вы с ней работаете как с обычной переменной. Более того, она скрывает настолько, что даже может продлевать жизнь временным объектам.

    Теперь попробуем сранить ссылку и другие сущности в языке.
    Определение ссылки vs определение обычной переменной:
    определение обычной переменной это всегда выделение памяти и добавление нового имени в таблицу компилятора для этой области памяти. Определение ссылки - это прежде всего ОПРЕДЕЛЕНИЕ ИМЕНИ, а уже в тех случаях, когда привязку этого ИМЕНИ к АДРЕСУ невозможно осуществить во время компиляции (т.е. например в случае передачи ссылки как параметра функции), то для реализации ссылки применятся указатель. Важно, что компилятор сам выбирает способ реализации поведения ссылки. В любом случае, назначение ссылки - обернуть в l-value уже ВЫДЕЛЕННУЮ память (совершенно не важно, на стеке, куче или где-то еще). Новой памяти для хранения значения целевого типа НЕ выделяется. Если у вас есть переменная и ссылка/несколько ссылок на нее, то при присвоении значения через любую из сущностей вы будете менять одну и ту же область памяти.

    Ссылка vs указатель:
    - самое важное отличие - указатель САМ ПО СЕБЕ является переменной. Под указатель int* компилятор выделит память также, как и под int. Указатель существует сам по себе, ему (если он не const) можно присваивать новые значение, можно присвоить nullptr. Можно даже хранить в нем совершенно некорректный адрес и все будет ок до тех пор, пока вы не разыменуете его. Только когда вы разыменовываете указатель, вы превращаете его в l-value, и с этого момента между ним и ссылкой разницы нет.
    - второе отличие - собственно необходимость разыменования. Т.к. указатель - самостоятельная переменная, для обращения по адресу, на который указатель смотрит, нужно сделать ему *p. Именно в этот момент компилятор начинает рассматривать значение указателя как адрес в памяти, с которым вы собираетесь что-то сделать (если быть совсем точным, но не в момент разыменования, а при попытке чтения/записи. В принципе вы можете даже инициализировать ссылку некорректным указателем, и программа не упадет, пока вы не попытаетесь читать/присваивать по этой ссылке).
    - с учетом сказанного, ссылку можно грубо считать "константым указателем с автоматическим разыменованием". Грубо, т.к. согласно стандарту есть нюансы, такие как вышеупомянутое продлевание жизни временным объектам.
    Ответ написан
    Комментировать
  • Почему выводятся адреса, а не значения?

    Nipheris
    @Nipheris Куратор тега C++
    Я думаю там выводится мусор, а не адреса - с чего вы взяли, что там адреса? Они последовательно идут? Я не думаю.

    *(a-i);//перевести указатель на первый эллемент


    Не, тут не произойдет то что вы пишете. Здесь нет операции присвоения или аналогичной ей. Это просто выражение, результат вычисления которого уйдет в никуда. Совершенно непонятно, зачем вы еще и разыменование поставили. Вы вообще понимаете, что написали там?
    Вам нужно что-то вроде этого: a = npa; или a -= i;
    Ответ написан
    2 комментария
  • Почему не добавляется класс?

    Во-первых, не закрыта скобка функции:
    $( ".cell" ).on( "click", function(){ 		
        $(this).toggleClass('ship');
    }

    Надо:
    $( ".cell" ).on( "click", function(){ 		
        $(this).toggleClass('ship');
    });

    Во-вторых, выбрать jQuery в списке библиотек.
    jsfiddle.net/gadq17qw
    Ответ написан
    Комментировать
  • Почему не добавляется класс?

    delphinpro
    @delphinpro Куратор тега JavaScript
    frontend developer
    1. Потому что вы jQuery не подключили :)))
    2. Забыли скобку - синтаксическая ошибка.
    jsfiddle.net/yofehx9w/3
    Ответ написан
    1 комментарий
  • Как сделать инициализацию массива объектов?

    mlnkv
    @mlnkv
    JavaScript Developer
    var cell = [];
    
    for (var i = 0; i < 10; i++ ) {
      cell[i] = [];
      for (var j = 0; j < 10; j++) {
        cell[i][j] = { status: "empty" };
      }
    }
    Ответ написан
    Комментировать
  • Почему не отображается тень?

    jsfiddle.net/e1L2nnao/4 видимо вы загнали ее под фон. Откуда тег center в html5? откуда br теги внутри h2? почему h2 вообще является контейнером?
    Ответ написан
    Комментировать
  • Почему не отображается тень?

    webinar
    @webinar
    Учим yii: https://youtu.be/-WRMlGHLgRg
    Уберите строку
    .wrapper {
      background-color: #009688 !important;
    }

    офтоп:
    Код у Вас ужасный. Не суйте
    в и не пользуйтесь
    Ответ написан
    1 комментарий
  • Почему родительский блок удаляет тени?

    serjikz
    @serjikz
    web-developer
    div {
    background-color: #00796B !important;
    padding: 20px !important; //выкинуть и заработает
    }

    Можно поставить в .curved-hz-2 padding и всё.
    Ответ написан
    Комментировать
  • Как сделать join два к ондному?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    SELECT /**/, current_country.name as current_country_name, home.name as home_country_name  FROM `users` 
    INNER JOIN `countries` as current_country using(`country`)
    INNER JOIN `countries` as home ON home.country = users.home_country
    Ответ написан
    Комментировать
  • Как исправить синтаксическую ошибку?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Дата рождения: ".$row['day']." ".$row['month']." ".$row['year']"

    Предпоследний символ, не хватает точки.

    В остальном - noooooooo, в смысле кровь из глаз.
    Ответ написан
    Комментировать
  • Как перепрыгнуть часть кода (goto)?

    SowingSadness
    @SowingSadness
    web-разработчик
    Лучше научиться писать грамотный код, а не портянку которую вы тут воротите.
    В вашем случае нужно узнать что такое MVC. Написать хоть какое то подобие валидаторов, которые возвращают или true или текст ошибки.

    Сначала проверять через валидаторы все значения и возвращать сразу ошибки, если они есть. Если же нет, то строить запрос через форматирование или замену, а не через конкатенацию.

    /**
      *@param Request $request
      */
      function my_action($request) 
      {
    		$validator = ValidatorLength(3);
    		$error = $validator->test($request->get('first_name'));
    		if ($error !== true) {
    			return new Response($error, 400);
    		}
    
    		$sql = 'SELECT * FROM "my_table" WHERE %condition %limit';
    		$sql_condition = 'TRUE';
    		$sql_limit = '';
    
    		$and_conditions = [];
    		if ($request->get('first_name')) {
    			$and_conditions[] = sprintf('first_name LIKE \%%s', $request->get('first_name')); 
    		}
    
    		if ($request->get('limit')) {
    			$sql_limit = sprintf('LIMIT %d', $request->get('limit'));			
    		}
    
    	  $sql_condition = implode(" AND ", $and_conditions);
    
    		$sql = str_replace('%condition', $sql_condition, $sql);
    		$sql = str_replace('%limit', $sql_limit, $sql);
    
    		// ...
    
    		return new Response("Hello world");
    	}

    Request, Response, ValidatorLength - это всё вымышленные классы.

    То что вы пишите НИ В КОЕМ СЛУЧАЕ даже для теста делать нельзя. Такой код нужно выбрасывать.

    Ну и да, лучше вместо замены в запросах, лучше использовать подготовленные запросы:
    https://php.net/manual/ru/pdo.prepared-statements.php
    Ответ написан
    1 комментарий