• Почему происходит неправильный вывод двумерного массива?

    nowm
    @nowm
    function cityToCountry(city) {
        const countries = ['Казахстан', 'Россия', 'Китай', 'США'];
    
        let cities = [[],[],[],[]]
        array[0][0] = 'Астана';
        array[0][1] = 'Караганда';
        array[0][2] = 'Актобе';
        array[0][3] = 'Алмата';
        array[1][0] = 'Москва';
        array[1][1] = 'Новосибирск';
        array[1][2] = 'Сочи';
        array[1][3] = 'Омск';
        array[2][0] = 'Пекин';
        array[2][1] = 'Шанхай';
        array[2][2] = 'Сиань';
        array[2][3] = 'Харбин';
        array[3][0] = 'Нью-йорк';
        array[3][1] = 'Чикаго';
        array[3][2] = 'Вашингтон';
        array[3][3] = 'Даллас';
    
        for (let i in cities) {
            if (!cities.hasOwnProperty(i)) {
                continue;
            }
    
            for (let j in cities[i]) {
                if (!cities[i].hasOwnProperty(j)) {
                    continue;
                }
    
                if (cities[i][j] === city && countries[i]) {
                    return countries[i];
                }
            }
        }
    
        return 'Город не найден';
    }
    
    let city = prompt('Введите название города:', '');
    
    alert(cityToCountry(city));


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

    Самый короткий путь для решения такой задачи:

    const cityToCountry = {
        'Астана': 'Казахстан',
        'Караганда': 'Казахстан',
        'Актобе': 'Казахстан',
        'Алмата': 'Казахстан',
        'Москва': 'Россия',
        'Новосибирск': 'Россия',
        'Сочи': 'Россия',
        'Омск': 'Россия',
        'Пекин': 'Китай',
        'Шанхай': 'Китай',
        'Сиань': 'Китай',
        'Харбин': 'Китай',
        'Нью-йорк': 'США',
        'Чикаго': 'США',
        'Вашингтон': 'США',
        'Даллас': 'США',
    };
    
    const city = prompt('Введите название города:', '');
    if (!cityToCountry.hasOwnProperty(city)) {
        alert('Такого города не найдено');
    } else {
        alert(`Для города «${city}» найдена страна «${cityToCountry[city]}»`);
    }


    Этот код работает быстрее, и подход, который в нём используется, уменьшает количество точек отказа. Если вы всегда будете стремиться идти к цели прямыми путями, а не нарезать круги, вы лучше состоитесь, как программист. Но это дело ваше.
    Ответ написан
    1 комментарий
  • Заказчик вместо обещаных 3 часов моего времени делает правки уже 4й день, что делать?

    nowm
    @nowm
    Возвращайте деньги, если он вам что-то платил, закрывайте проект и ставьте заказчику отрицательный отзыв. Это будет проще всего. Перед тем, как закрывать проект, озаботьтесь тем, чтобы из переписки на сайте биржи было понятно, что он требует что-то ещё дополнительное, но не хочет за это дополнительно платить. Если я не ошибаюсь, то закрытый проект, за который не уплачено ни цента, в вашей истории не появится. Во всяком случае, так обстоит дело на oDesk.

    Так же, на oDesk есть правило, по которому заказчик не может быть агентством, если он зарегистрировался как заказчик. Если он «проксирует» работу, то он — агенство, а агенство не может публиковать заказы. Он нарушает правила. Это ещё один момент, который вам может помочь, если вы вступите с клиентом в какой-то диспут. Опять же, важно, чтобы он упоминал в личной переписке на сайте биржи, что он, дескать, посредник, а не заказчик — если он этого не упоминал, то нужно его как-то на это развести.

    В остальном, я в похожих ситуациях обычно упираюсь и говорю, что никак не могу продолжать работу, пока не получу оплату за то, что было оговорено. Приплетаю всякие фантастические истории, что, как будто, меня недавно так кинули и я никому не могу доверять и т.д. и т.п. — тут всё ограничено фантазией. Главное: ни в коем случае не грубите человеку, на три буквы можно и вежливо посылать, закрутив всё ещё таким образом, что заказчик останется в восторге.

    Главное, и не только в подобных ситуациях, не тянуть резину. Чем вы будете мягче и податливее, чем дольше вы будете откладывать «неприятные» для клиента вопросы, тем чаще этим будут пользоваться окружающие, продавливая вас насколько это возможно. Это не значит, что нужно всем направо и налево грубить и посылать, это значит, что нужно сразу же сообщать окружающим, что вас что-то не устраивает — вежливо, но твёрдо.

    Я могу только посочувствовать вашей ситуации, но рано или поздно каждый человек с таким сталкивается. Со временем просто развивается чуйка, которая позволяет сразу видеть что конкретный проект публикует неадекватный клиент. Как говорил alexgilev (полчаса назад :) ), всякие фразы, вроде: «срочно», «мне мой знакомый программист сказал, что тут дел — на пять минут», «час-два для тех, кто в теме», «быстрые деньги» и т.п. — это один из признаков неадекватности.
    Ответ написан
    1 комментарий
  • Как принять пробел в строку из пользовательского ввода?

    nowm
    @nowm
    В C++ есть getLine, и он читает всю строку:

    #include <string>
    #include <iostream>
    
    int main()
    {
       std::string words;
       
       std::cout << "Введите слова: ";
       std::getline(std::cin, words);
       
       std::cout << "Слова: " << words << "\n";
    }
    Ответ написан
    2 комментария
  • Расчет количества в задаче?

    Sergomen
    @Sergomen
    Просто делай добро и оно вернётся
    int one = 100; // -- количество грам в 1 единице -
    int gramm = 540; // -- количество грамов -
    float count = (float)gramm / (float)one; // -- количество единиц -
    Ответ написан
    3 комментария