Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.65/34: Рейтинг темы: голосов - 34, средняя оценка - 4.65
183 / 121 / 26
Регистрация: 18.05.2015
Сообщений: 509

С++ с нуля

20.02.2022, 23:08. Показов 7737. Ответов 101

Студворк — интернет-сервис помощи студентам
Всем привет!
не кидайте тапками )
Изучаю Си и Си++ с нуля, книга Стивен Прата, и некоторые примеры набираю в Visual Studio, создал файл с расширением .с
Залез в компилятор и установил старый, msvc, но это не прокатывает.

Не компилируется, хотя в книге написано должно C90

int m = 3;
int a[m];

выходит ошибка.
.
Как посоветуете изучать си и си++?
Какой стандарт выбрать?

Всем удачи и здоровья!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.02.2022, 23:08
Ответы с готовыми решениями:

Сравнить два массива на чисела: больше нуля, меньше нуля и равно нулю
С помощью множества сравнить два массива на чисел: больше нуля, меньше нуля и равно нулю.

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

Посоветуйте книгу или статью по OpenGL с нуля (на языках любых кроме Delphi). С нуля
Посоветуйте книгу или статью по OpenGL с нуля (на языках любых кроме Delphi). С нуля. Я сколько не побывал искать, находил и не могу...

101
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,538
Записей в блоге: 1
22.02.2022, 13:03
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от alexu_007 Посмотреть сообщение
Это не совсем так, но спорить дальше неохота. Сдаюсь.
Вот и я о том же, ты не ответы получаешь, а споришь. Твои вопросы похожи на вопрос зачинщиков холиваров, который знает заранее, что возможно ему ответят и спрашивает, чтобы поспорить с ответом.
Это не на вопросы наивного новичка, ничего не знающего и ждущего ответа для себя, а не для спора.
0
Нарушитель
623 / 381 / 67
Регистрация: 09.03.2016
Сообщений: 4,218
22.02.2022, 16:47
Самое интересное, шарашить и на том и на другом в перемешку.
У меня Studio так принимает.
Плюсы язык более высокоуровневый. На нём не всё реализуешь.
А если реализуешь, то медленно получаеться.
==========
Я когда то писал текстовый редактор на с++ comon languare.
Вот это точно головняк. За то формочка красивая.
ну, не складываеться из тех конструкций, то что хочешь,
а приходиться обходиться тем, что они позволяют.
Сейчас как напишу чего, и сишники ругаються.
И плюсовикам не нравиться. Но работает же.
0
Нарушитель
623 / 381 / 67
Регистрация: 09.03.2016
Сообщений: 4,218
22.02.2022, 16:53
https://www.cyberforum.ru/atta... 1645538010
Миниатюры
С++ с нуля  
0
Нарушитель
623 / 381 / 67
Регистрация: 09.03.2016
Сообщений: 4,218
22.02.2022, 16:58
https://www.cyberforum.ru/atta... 1645538248

Такую хрень не принимает.
Миниатюры
С++ с нуля  
0
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
22.02.2022, 17:11
Цитата Сообщение от Наталья8 Посмотреть сообщение
Такую хрень не принимает.
Ну это же очевидно, стандарт языка.
А тема, я так понял, флудилка очередная.
C++
1
2
3
4
    constexpr auto m =3u;
    int a[m]{}; // обявление с инициализацией;
    for(auto v : a )
        cout << v << ' ';
0
фрилансер
 Аватар для Алексей1153
6495 / 5724 / 1133
Регистрация: 11.10.2019
Сообщений: 15,286
22.02.2022, 17:13
Цитата Сообщение от Наталья8 Посмотреть сообщение
На нём не всё реализуешь.
например?

Цитата Сообщение от Наталья8 Посмотреть сообщение
А если реализуешь, то медленно получаеться.
тоже нужен например
0
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
22.02.2022, 17:32
Цитата Сообщение от Наталья8 Посмотреть сообщение
Плюсы язык более высокоуровневый. На нём не всё реализуешь.
А если реализуешь, то медленно получаеться.
Где медленно получается, в дебаг-сборке? А давайте ка проверим на банальной сортировке массива. Сишный qsort против плюсового std::sort. Ой, а почему сишный вариант работает в два раза хуже? Ведь в qsort используются чрезвычайно быстрые указатели на функции, которые должны были оставить далеко позади эти ваши плюсовые функторы!
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <iostream>
#include<vector>
#include<cstdlib>
#include<algorithm>
#include<chrono>
 
using namespace std::literals;
 
const auto arraySize=1000000;
int arrayForC[arraySize];
int arrayForCPlusPlus[arraySize];
 
int compareInt(const void*A,const void*B)
{
    int argA=*(int*)A;
    int argB=*(int*)B;
    return argA<argB?
                -1:
                (argA>argB?1:0);
}
 
int main()
{
    for(std::size_t i=0;i<arraySize;++i)
        arrayForC[i]=arrayForCPlusPlus[i]=rand();
 
    const auto beginCTest=std::chrono::high_resolution_clock::now();
    qsort(arrayForC,arraySize,sizeof(int),compareInt);
    std::cout<<"result for C "<<(std::chrono::high_resolution_clock::now()-beginCTest)/1ms<<std::endl;
 
    const auto beginCPlusPlusTest=std::chrono::high_resolution_clock::now();
    std::sort(std::begin(arrayForCPlusPlus),std::end(arrayForCPlusPlus));
    std::cout<<"result for C++ "<<(std::chrono::high_resolution_clock::now()-beginCPlusPlusTest)/1ms<<std::endl;
    return 0;
}
0
Нарушитель
623 / 381 / 67
Регистрация: 09.03.2016
Сообщений: 4,218
22.02.2022, 17:55
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include "stdafx.h"
#include <SFML/Graphics.hpp>
#include <SFML/Audio.hpp>// ------- Звук привинтить
       // #include <RenderTexture.hpp>
 #include <iostream>
      #include <fstream>
   #include <windows.h>
#include "io.h"//  access()
                       #include <string>
                      #include <sstream>// int to str
#include <mmsystem.h>// Звук PlaySound
#pragma comment(lib, "winmm")// Звук   
 
#include <stdio.h>
              #include <stdint.h>
#include <iomanip> //  std::setprecision(4)  
 
#define __STDC_CONSTANT_MACROS
#define STEP 10// шаг поиска и резки (Это восемь раз на секунду, поиск ключевых кадров)
 
// #pragma comment(linker, "/STACK:16777216")// большой стек
#pragma warning(disable : 4996)
#pragma warning(disable : 4703)
                     #define SFML_NO_DEPRECATED_WARNINGS// на всякий случай
extern "C" // < --- Подключать си файлы
{// :::::::::::::::::::::::::::::::
#include <libavformat/avformat.h>
#include <libavcodec/avcodec.h>
#include <libswscale/swscale.h>
}
 
typedef unsigned int nuint;
 
using namespace sf;
using namespace std;
Добавлено через 5 минут
Зачем вам сортировать массив быстро?

подождут.

Добавлено через 4 минуты
Сишное выделение памяти быстрее.................


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
int _tmain(int argc, _TCHAR* argv[])
{
    using namespace std::chrono;
    //------------------------------------
    setlocale(LC_ALL, "Russian");// Принимает русский путь...(проблемы с русскими путями)
    const int _count(150000);
    
    char** mass = new char*[_count];//= массив указателей
 
    high_resolution_clock::time_point t1 = high_resolution_clock::now();
    for (int i = 0; i < _count; ++i) {
        
        /*
    calloc() дает вам буфер с нулевой инициализацией,
    в то время как malloc() оставляет память неинициализированной.    
        */
        mass[i] = (char*)malloc(strlen(lt) + 1);
    //  mass[i] = (char*)calloc(1, strlen(lt) + 1);// Обнуляет (Работает немного медленнее)
    //  mass[i] = new char[strlen(lt) + 1];// Место в памяти под слово (По количеству найденных слов)  
                
        strcpy(mass[i], lt);// По указателю *
                }
    high_resolution_clock::time_point t2 = high_resolution_clock::now();
    duration<double>time_span = duration_cast<duration<double>>(t2 - t1);
    std::cout << "It took me: " << time_span.count() << " seconds. \n";
    
    //------------------------ 
    printf("\n %s \n", mass[5]);
    getchar();
for (int z = 0; z < _count; z++){
        
    if(z% 32 == 0)printf("------ %d \r", z);
                // delete[] mass[z];
                    free(mass[z]);
    //  getchar();
    }
    
    delete[] mass;
    
    return 0;
}
Добавлено через 1 минуту
Вот это медленнее. нулями заполняет.

mass[i] = (char*)calloc(1, strlen(lt) + 1);// Обнуляет (Работает немного медленнее)

Добавлено через 4 минуты
Не сортирую я массивов. И той функцией я не пользуюсь.

Добавлено через 5 минут
Может я не очень умный. Гуглить умею хорошо.
0
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
22.02.2022, 18:26
Цитата Сообщение от Наталья8 Посмотреть сообщение
Сишное выделение памяти быстрее.................
...Раненой черепахи.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include <iostream>
#include<cstdlib>
#include<chrono>
#include<cstring>
 
using namespace std::literals;
 
const auto arraySize=1000000;
char*strArray[arraySize];
 
int main(int argc, char *argv[])
{
    const char*strForCopy=argv[0];
    const auto strSize=strlen(strForCopy)+1;
 
    const auto beginCTest=std::chrono::high_resolution_clock::now();
    for(auto&str:strArray)
    {
        str=(char*)malloc(strSize);
        strcpy(str,strForCopy);
    }
    std::cout<<"result for C "<<(std::chrono::high_resolution_clock::now()-beginCTest)/1ms<<std::endl;
    for(auto&str:strArray)
        free(str);
 
    const auto beginCPlusPlusTest=std::chrono::high_resolution_clock::now();
    for(auto&str:strArray)
    {
        str=new char[strSize];
        strcpy(str,strForCopy);
    }
    std::cout<<"result for C++ "<<(std::chrono::high_resolution_clock::now()-beginCPlusPlusTest)/1ms<<std::endl;
    for(auto&str:strArray)
        delete[] str;
    return 0;
}
0
183 / 121 / 26
Регистрация: 18.05.2015
Сообщений: 509
22.02.2022, 19:55  [ТС]
Забавно, началось с простого и понеслось)
Как будто нет отдельной темы , или забанили создать.
0
фрилансер
 Аватар для Алексей1153
6495 / 5724 / 1133
Регистрация: 11.10.2019
Сообщений: 15,286
22.02.2022, 19:59
Наталья8, если выделение памяти вдруг влияет на производительность, то выделение выносят за цикл. Независимо от языка

Добавлено через 1 минуту

Не по теме:

Наталья8, форматирование и каша из заголовков у тебя ужасные ))

0
Нарушитель
623 / 381 / 67
Регистрация: 09.03.2016
Сообщений: 4,218
22.02.2022, 20:23
Периодически навожу порядок. их много , а меня мало.
SFML это плюсы.
FFMPEG это си...
И на чём прикажете писать?
в класс легко вставляються сишные штуки.

Добавлено через 1 минуту
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
//================================== ДОБАВИЛ ВИДЕО
class Video
{
private:
    //Variables
    sf::Texture       m_Texture;
    bool            m_bVideoLoaded;
    AVFormatContext *m_pFormatCtx;
        int       m_iVideoSt_indx;
        int       m_iAudioSt_indx;
    double        m_totalSec_audio;// Продолжительность проигрывания аудио
    double        m_totalSec_video;// Продолжительность проигрывания видео
            AVCodecContext  *m_Video_CodecCtx;
            AVCodecContext  *m_Audio_CodecCtx;
    AVFrame         *m_pFrame;
    AVFrame         *m_pFrameRGB;
    sf::Uint8       *m_pBuffer;
    AVCodec         *m_VidCodec;
    AVCodec         *m_AudCodec;
    SwsContext      *img_convert_ctx;
    string          m_sFilename;
               bool            m_print_duration;// Вывод на консоль продолжительность каналов
               bool            m_save_picture;// Выбросить картинку
        size_t      m_file_size;// Размер файла в байтах
        int         size_divider;
    float           m_fSecondsPerFrame;
Добавлено через 51 секунду
Нормальное у меня форматирование.
0
Любитель чаепитий
 Аватар для GbaLog-
3745 / 1801 / 566
Регистрация: 24.08.2014
Сообщений: 6,020
Записей в блоге: 1
22.02.2022, 20:34
Цитата Сообщение от Наталья8 Посмотреть сообщение
И на чём прикажете писать?
C++ поддерживает вызов функций из Си, как и всю обвязку вокруг этого в виде структур, алиасов типов и ещё множества вещей.
как и многие другие языки это поддерживают(JNI в Java, ctypes в Python, etc). только с++ это делает на уровне исходного кода, а не уже готовых слинкованных библиотек.
в чём проблема?
ffmpeg не обязательно собирать даже плюсовым компилятором, т.к. это отдельная библиотека.
Цитата Сообщение от Наталья8 Посмотреть сообщение
Нормальное у меня форматирование.
давно у окулиста были?
0
Нарушитель
623 / 381 / 67
Регистрация: 09.03.2016
Сообщений: 4,218
22.02.2022, 20:47
Ладно.. Буду оптекать.
0
фрилансер
 Аватар для Алексей1153
6495 / 5724 / 1133
Регистрация: 11.10.2019
Сообщений: 15,286
22.02.2022, 21:20
Наталья8, отлично получилось
0
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
22.02.2022, 21:33
Цитата Сообщение от GbaLog- Посмотреть сообщение
C++ поддерживает вызов функций из Си,
Если я правильно помню, С++ поддерживает прямой код С :
C++
1
2
3
extern "C"{
  // пишем Си код
}
К чему эти разговоры ? Ведь ясно уже расписали, что это разные ЯП.

Цитата Сообщение от tahir_ Посмотреть сообщение
Как посоветуете изучать си и си++?
Какой стандарт выбрать?
Если нет никаких веских причин для изучкния Си, тогда однозначно С++ учить (стандарт С++17).
0
2405 / 1935 / 763
Регистрация: 27.07.2012
Сообщений: 5,574
22.02.2022, 21:39
Цитата Сообщение от SmallEvil Посмотреть сообщение
Если я правильно помню, С++ поддерживает прямой код С :
C++
1
2
3
extern "C"{
  // пишем Си код
}
extern "C" - это для отключения расширения имён функций, чтобы линковщик их мог найти. Код там может быть плюсовый.
1
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
22.02.2022, 21:52
John Prick, да, давно уже читал про компоновку Си с С++...
0
183 / 121 / 26
Регистрация: 18.05.2015
Сообщений: 509
22.02.2022, 22:06  [ТС]
решил сделать
вопрос такой стоит ли указатель делать или можно так?
как указатель сделать если двухмерный массив?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
using namespace std;
 
void pol1();
extern int dal[3][3] = {{1,2,3},{5,6,7},{8,9,10}};
 
int main()
{
    pol1();
}
 
void pol1() {
    int q = 0;
    int w = 0;
    for (int q = 0; q < 3; q++) {
        for (int w = 0; w < 3; w++) {
            cout << dal[q][w] << endl;
                                    }
                                }
}
Всех с наступающим праздником, ребята!
Здоровья!
0
фрилансер
 Аватар для Алексей1153
6495 / 5724 / 1133
Регистрация: 11.10.2019
Сообщений: 15,286
22.02.2022, 22:20
Цитата Сообщение от tahir_ Посмотреть сообщение
extern
это не нужно

Цитата Сообщение от tahir_ Посмотреть сообщение
как указатель сделать если двухмерный массив?
(правда, ещё нужно не забыть освободить в конце main, например)
C++
1
2
3
4
5
6
7
8
9
10
int** dal=[edge=3]()
{
    int** dal=new int* [edge]{};
    for(size_t i=0; i<edge; i++)
    {
        dal[i]=new int[edge]{};
    }
 
    return dal;
}();
Цитата Сообщение от tahir_ Посмотреть сообщение
вопрос такой стоит ли указатель делать или можно так?
но лучше всё же вектор
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.02.2022, 22:20

Для матрицы подсчитать количество элементов, меньших нуля, ровных нулю и больших нуля
Для заданной матрицы A подсчитать количество элементов, меньших нуля, ровных нулю и больших нуля. Для вывода результатов использовать...

Посоветуйте книгу или статью по DirectX с нуля (на языках любых кроме Delphi). С нуля
Посоветуйте книгу или статью по DirectX с нуля (на языках любых кроме Delphi). С нуля. Я сколько не побывал искать, находил и не могу...

Какая вероятность того, что сумма этих чисел будет больше нуля, а произведение меньше нуля ?
С отрезка наугад взяли два числа. Какая вероятность того, что их сумма будет больше нуля, а произведение меньше нуля ?

Двухмерный массив. Вычислить количество строк, сумма элементов которых меньше нуля, равна нулю или больше нуля
В двухмерном массиве вычислить количество строк, сумма элементов которых меньше нуля, равна нулю или больше нуля. Добавлено через 7...

Расстояние от нуля экрана до нуля документа
в документе одни координаты, а при открытии окон другие... как бы выяснить разницу, состоящую в толщине toolbar'a браузера и title окна,...


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

Или воспользуйтесь поиском по форуму:
80
Ответ Создать тему
Новые блоги и статьи
Море в объективе
kumehtar 06.07.2026
Хотел написать много проникновенных слов, но передумал. Оно само - говорит. Кто слышит тот слышит.
Оказывается, Unreal Engine позволяет качество на порядки выше, чем было в Lineedge
Etyuhibosecyu 05.07.2026
Жаль, конечно, что я не узнал об этом, пока Lineedge существовала, а то бы Noname2331 написал, что волки превращаются в пиксельную кашу, а я бы его попросил скачать какую-нибудь бриллиантовую или Pro. . .
Doom для терминала без стрельбы и монстров. 3D Raycasting на ascii.
dcc0 05.07.2026
Попросил нейронную сеть deepai. org написать рейкастинг 3D с библиотекой ncurses для Linux. Чтобы можно было ходить на стрелочки. Чтобы стены были отрисованы символами. Справилась. Первый вариант. . .
Установка статуса документа по условию
Maks 05.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "НарядПутевка" разработанного в КА2. Задача: в табличной части "Материалы" документа при записи автоматически устанавливать статус. . .
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет. Но обычно это 50 лет и более. Наверное, закисление почвы происходит сезонно в средней. . .
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи. Через несколько переработок от PHP кода к C89 (надеюсь, 89). Но довольно запутанно получилось. Код для Linux. Но если убрать time и то, что с ним. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru