Форум программистов, компьютерный форум, киберфорум
Священные войны
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.73/60: Рейтинг темы: голосов - 60, средняя оценка - 4.73
2 / 2 / 1
Регистрация: 23.06.2014
Сообщений: 110

Почему люди кодят на C++, если есть мощный C#

03.02.2015, 17:57. Показов 15907. Ответов 255
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Я новичок и мне интересно
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.02.2015, 17:57
Ответы с готовыми решениями:

Если есть добрые люди, напишите пожалуйста блок-схему к вот этому коду!
Помогите пожалуйста uses crt; const rus='абвгдеёжзийклмнопрстуфхцчшщъыьэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ'; var ...

Не срабатывает. Почему? Все просто если запись в таблице есть, то выводим, если нет - выводим заявок нету.
ребят тока не смейтесь я чет туплю под вечер но я условия не могу сделать <?php $statys = $_REQUEST; if(isset($_REQUEST) ==...

Почему выскакивает исключение если есть обработка исключений?
Почему выскакивает исключение если есть обработка исключений? как такое может быть?

255
04.02.2015, 06:16
Студворк — интернет-сервис помощи студентам

Не по теме:

Цитата Сообщение от Croessmah Посмотреть сообщение
P.S. Думаю, многие поняли о ком я
А я все думал: кого мне напоминает…

0
04.02.2015, 10:25

Не по теме:

Цитата Сообщение от Dark Byte Посмотреть сообщение
я знаю как минимум c, c++, c#, delphi
Знаю... так громко сказано, можно для статистики посмотреть, например, отзывы в твоём профиле и узнать, на сколько качественно ты всё знаешь.

0
30 / 47 / 19
Регистрация: 23.10.2014
Сообщений: 1,001
04.02.2015, 10:47
Цитата Сообщение от hoggy Посмотреть сообщение
А между тем, это - азы языка. Делается элементарно.
в итоге так и не ответил, а между тем бред несешь
Цитата Сообщение от hoggy Посмотреть сообщение
Есть массив. Обычный, сишный массив.
Пускай это будет массив типа int.
Требуется создать функцию, которая принимает на входе массив, стартовую и конечную позицию.
Функция должна вернуть сумму элементом массива , которые начинаются со стартовой и по конечную позицию включительно.
ВАЖНО: функция должна обладать инвариантом.
Это означает, что она должна гарантировать работоспособность независимо от корректности вызывающей стороны.
Если функции будут переданы кривые аргументы (допустим, в массиве только 10 элементов, а конечная позиция задана 100. Это выход за пределы диапазона массива), функция обязана обнаружить факт кривых аргументов, и бросить исключание std::out_of_range.
Особенное внимание обратите на требование к задачи.
Решение, при котором функция не будет способна гарантировать корректность аргументов - не является решением задачи.
Использовать можно только массив. Никаких контейнеров.
ну допустим как то так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
template <typename T>
int ArraySize(const T* begin, const T* end)
{
    size_t size(0);
    try
    {
        for (const T* tmp = begin; tmp < end; tmp++)
            size++;
    }
    catch (...)
    {
        size = -1;
    }
    return size;
}
но сразу говорю, если и есть что то что мне пока не понятно в плюсах так это исключения и их отлов... попытался изобразить нечто в этом роде, но знаю что наверное коряво... + касательно сути: знаю нефига не работает, как то должна проверяться валидность указателей, но по обычному условию все проходит... в общем у меня такое смутное ощущение что ты стебешься, имхо не решаемо...

з.ы. не подумай что я всю ночь решал, я просто только проснулся
0
Модератор
Эксперт NIX
 Аватар для NeoMatrix
8537 / 3417 / 105
Регистрация: 24.05.2011
Сообщений: 14,651
Записей в блоге: 8
04.02.2015, 11:21
Цитата Сообщение от Dark Byte Посмотреть сообщение
кому нужны ОСи кроме винды?
С этим вопросом - в соседнюю темку, пожалуйста.
0
30 / 47 / 19
Регистрация: 23.10.2014
Сообщений: 1,001
04.02.2015, 11:35
Цитата Сообщение от Dark Byte Посмотреть сообщение
for (const T* tmp = begin; tmp < end; tmp++)
* * * * * * size++;
C++
1
2
3
for (const T* tmp = begin; tmp < end; tmp++)
            if (tmp)
                size++;
0
Модератор
Эксперт NIX
 Аватар для NeoMatrix
8537 / 3417 / 105
Регистрация: 24.05.2011
Сообщений: 14,651
Записей в блоге: 8
04.02.2015, 11:42
Цитата Сообщение от hoggy Посмотреть сообщение
Эм.. не то, что бы жалко.
Мне откровенно лень, и жаль времени на тех людей потратить, которым нужен "код для галочки".
Но если человек действительно проявляет интерес к предмету,
то может быть он что нибудь полезное для себя узнает.
Для таких не жалко)
То что новобранцы понты беспонтовые кидают - ну это бывает.
Обычно с опытом проходит)
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
04.02.2015, 11:50
Цитата Сообщение от Dark Byte Посмотреть сообщение
ну допустим как то так
Неверно.

По задаче функция должна суметь проконтролировать корректность аргументов.

Получив сырые указатели, вы вообще уже ничего проверить не сможете.

Добавлено через 6 минут
Цитата Сообщение от Dark Byte Посмотреть сообщение
имхо не решаемо...
Решение очень простое.

Я даю вам подсказку: сишный массив, это массив, размер которого известен времени компиляции.

Для вас это нонсенс, вы почему то очень удивлены этим положением.

А между тем, именно этот фактор является киллер-фичей сишного массива, делая его "самым быстрым контейнером в мире", и одновременно является его главным недостатком.

Скажите "сдаюсь".
И я покажу вам решение.

Но если самостоятельно дойдете - будет здорова.
0
Эксперт PHP
 Аватар для Kerry_Jr
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
04.02.2015, 11:58
Цитата Сообщение от Dark Byte Посмотреть сообщение
то что мне пока не понятно в плюсах так это исключения и их отлов
То есть, зная C++, C# и Delphi, Вы с исключениями так ни разу и не столкнулись???
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
04.02.2015, 12:00
Цитата Сообщение от Dark Byte Посмотреть сообщение
в итоге так и не ответил, а между тем бред несешь
Да, не ответил. Я задал вам задачку.

Пускай практика покажет вам, насколько вы не знаете язык.

И кстати, если вы чего нибудь не знаете,
то называть это бредом - не самый умный ход.
0
30 / 47 / 19
Регистрация: 23.10.2014
Сообщений: 1,001
04.02.2015, 12:05
hoggy, если вы имеете ввиду это: sizeof(array) / sizeof(*array) то я знаю это давно, но работает это только в той же функции где массив был создан, при передаче в другую функцию это не работает...
Цитата Сообщение от Kerry_Jr Посмотреть сообщение
То есть, зная C++, C# и Delphi, Вы с исключениями так ни разу и не столкнулись???
в делфи сталкивался, но там как то это проще...
0
 Аватар для taras atavin
4226 / 1799 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
04.02.2015, 12:19
Цитата Сообщение от NoMasters Посмотреть сообщение
Я про костыли в самом языке.
В нём их нет.

Добавлено через 55 секунд
Цитата Сообщение от NoMasters Посмотреть сообщение
Серьёзно? Мне казалось, что у любого человека, написавшего на С++ что-то серьезнее хелловорлда, таких примеров достаточно.
Казалось только потому что сам языка даже не видел.
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
04.02.2015, 12:19
Цитата Сообщение от Dark Byte Посмотреть сообщение
если вы имеете ввиду это: sizeof(array) / sizeof(*array) то я знаю это давно, но работает это только в той же функции где массив был создан, при передаче в другую функцию это не работает...
по хорошему, запись:
C++
1
sizeof(array) / sizeof(array[0])
Должна была натолкнуть вас на мысль: а ведь размер массива известен компилятору!

а значит везде, где фигурирует именно массив (а не указатель), известен размер.


А значит если передавать в функцию массив, а не указатель,
значит функции будет известен размер массива.


На языке с++ есть три способа передать данные в функцию:
1. По значению
2. По указателю.
3. По ссылке.

Передать массив по значению нельзя. Таковы правила.
Передать по указателю или ссылке - да пожалста.

Передавайте, и будет вам счастье:



C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
 
 
// N - количество элементов (вычисляется автоматически, в зависимости от переданного массива)
template<class T, size_t N>  
void view (const T (&ar)[N] )   //<--- передача по ссылке    
{   
    for(const auto& i: ar)      //<--- цикл тоже в курсе про размер массива
        std::cout<<i<<", ";
    std::cout<<'\n';
}
 
int main()
{
    std::cout << "Hello, world!\n";
    
    int ar1[]={ 1, 2, 3, 4, 5, 6, 7 };
    
    float ar2[]={ 1.5f, 2.5f, 3.5f, 4.5f, 5.5f, 6.5f, 7.5f };
    
    view(ar1);
    view(ar2);
}
Данный код не является образцово-показательным.
Такой код может написать средненький программист.

Хотите знать почему? Хотите знать, в чем ущербность подхода, и как это лечится?
0
30 / 47 / 19
Регистрация: 23.10.2014
Сообщений: 1,001
04.02.2015, 12:25
Цитата Сообщение от hoggy Посмотреть сообщение
const T (&ar)[N]
а что значит вот эта запись? что то не сталкивался с такой... но даже если так, то размер динамических массивов все равно таким образом не узнать
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
04.02.2015, 12:43
Цитата Сообщение от Dark Byte Посмотреть сообщение
а что значит вот эта запись? что то не сталкивался с такой...
Это - синтаксис объявления ссылки на массив.
Специально для вас оставил комментарий в коде жеж.

А вы много ещё с чем не сталкивались, потому что вы ещё новичок.

Выше я вам писал: это не голословное утверждение.
Это видно невооруженным взглядом любому среднему программисту.

Цитата Сообщение от Dark Byte Посмотреть сообщение
но даже если так, то размер динамических массивов все равно таким образом не узнать
А вот "динамических массивов" на языке с++ не существует.

Существуют контейнеры. И за динамику вам придется заплатить свою цену.

Давайте вернемся к истоку диалога:
Цитата Сообщение от Avazart Посмотреть сообщение
Чем лучше масcив C# вектора в С++ ?
Вы можете ответить на заданный вам вопрос?

Добавлено через 2 минуты
Цитата Сообщение от castorsky Посмотреть сообщение
hoggy, Avazart, опять сказки про никому не нужный RAII.
Он много кому нужен.
Проще перечислить тех, кому не нужен.
0
30 / 47 / 19
Регистрация: 23.10.2014
Сообщений: 1,001
04.02.2015, 12:58
Цитата Сообщение от hoggy Посмотреть сообщение
А вы много ещё с чем не сталкивались, потому что вы ещё новичок.
Выше я вам писал: это не голословное утверждение.
Это видно невооруженным взглядом любому среднему программисту.
я просто еще не работал по специальности, много ли опыта получишь в универе...
Цитата Сообщение от hoggy Посмотреть сообщение
А вот "динамических массивов" на языке с++ не существует.
Существуют контейнеры. И за динамику вам придется заплатить свою цену.
хо-хо... а это что тогда?
C++
1
int* array = new int[5]
Добавлено через 5 минут
Цитата Сообщение от hoggy Посмотреть сообщение
Вы можете ответить на заданный вам вопрос?
кажется я вчера не правильно вопрос понял, подумал массив C# и массив C++... поздно было а так то хз наверное вектор лучше...
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,782
04.02.2015, 13:03
Цитата Сообщение от hoggy Посмотреть сообщение
Он много кому нужен.
Только плюсовикам.

Цитата Сообщение от hoggy Посмотреть сообщение
Проще перечислить тех, кому не нужен.
Нет, не проще.
0
3178 / 1937 / 312
Регистрация: 27.08.2010
Сообщений: 5,131
Записей в блоге: 1
04.02.2015, 13:12
Цитата Сообщение от Dark Byte Посмотреть сообщение
хо-хо... а это что тогда?
Это - диагноз !
0
30 / 47 / 19
Регистрация: 23.10.2014
Сообщений: 1,001
04.02.2015, 13:15
Цитата Сообщение от gazlan Посмотреть сообщение
Это - диагноз !
да я и так понял что у тебя какой то диагноз че ты мне рассказываешь
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
04.02.2015, 13:18
Цитата Сообщение от Dark Byte Посмотреть сообщение
хо-хо... а это что тогда?
C++
1
int* array = new int[5];
Создание "массива данных" в "динамической памяти".
В правой части - что создаем.
В левой части - указатель на начало блока с данными.

При этом, создаваемый "массив данных" не имеет никакого отношения к "обычному сишному массиву".
------------------------------------------

А теперь самое интересное:

C++
1
delete [] array; //<--- мы нигде не указываем его размер. Но оно знает!
Когда я ещё сам был зеленым новичком, я задумался: мы нигде не указываем количество элементов.
Но оно же как то догадывается, сколько там было элементов.

А значит, где то эта информация на самом деле существует. Нужно лишь достать её.

Я был любознательным, и всесторонне изучил этот вопрос.
Информация действительно существует. И мы можем получить к ней доступ.
Однако, стандарт не накладывает ограничений на реализацию,
поэтому на разных платформах может быть по разному.

Поэтому, единственный честный способ - это использовать расширения от компиляторов.

Например, для вижал студии можно так:
https://msdn.microsoft.com/ru-... .110).aspx

Важно понимать нюансы: когда мы запрашиваем динамическую память,
по факту памяти может быть выделено больше, чем мы запрашивали, но не меньше.

Нам дают адрес начала наших данных, но это не тот же самый адрес,
где начинается выделенная нам память.

В большинстве реализаций это выглядит так:

[ служебные данные ][ размер элементов ] [ элемент0 ] ... [ элементN ]
^
Ну так вот, нам возвращают адрес на начало наших данных. На элемент0
А на самом деле, выделено было больше,
и в начале перед нашими данными была записана служебная информация: размер данных, и др.

C++
1
delete[] ptr
получает на входе адрес, где находятся наши данные.
И смещается от него к началу выделенной памяти, в ту самую область, где и содержится вся необходимая информация.

Данная реализация - типичная. Но повторюсь, это не стандартизировано.
Но есть не факт, что будет именно так.
Обычно так, но может быть и иначе.



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

Осознав принцип работы, я понял,
что самое правильное для работы с динамикой - использовать контейнеры, и не заморачиваться.

Не нужно ходить по unspecified граблям.

Хотя если очень очень сильно приспичит, то технически вполне себе возможно.
0
Эксперт PHP
 Аватар для Kerry_Jr
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
04.02.2015, 13:20
Цитата Сообщение от Dark Byte Посмотреть сообщение
int* array = new int[5]
По Вашему это динамический массив? Ок. Добавьте в него элемент без повторного выделения памяти. Это динамическое выделение памяти, но массив при этом динамическим не является.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.02.2015, 13:20

Почему так часто используют макросы, если есть VBA?
Последнее время очень часто встречаются вопросы о макросах. Почему так часто используют макросы?..это ведь гемор себе,зачастую(ну,как...

Тригер, проверяющ. есть ли такой ID и если есть обновляющий его, если нет - добавляющий
Сабж. В MSSQL нуб. Есть ситуация. Добавляю товар из каталога поставщика в каталог магазина. Может быть такое, что мы заказываем...

Есть объект типа T, но если вместо него подставить вызов функции, возвращающей T, код не компилится, почему?
Есть объект типа vector&lt;int&gt;, но если вместо него подставить вызов функции, возвращающей vector&lt;int&gt;, код не компилится (template...

Мощный процессор и слабая видеокарта, есть ли смысл?
Я хочу обновить полностью компьютер, но на данный момент у меня хватает денег на все, кроме видеокарты, стоит ли обновляться? Хочу взять...

Определить если в строке буква 'а'. Если есть вывести 'есть'
помогите написать программу


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

Или воспользуйтесь поиском по форуму:
80
Закрытая тема Создать тему
Новые блоги и статьи
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть не большие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru