Перейти к содержимому

Фотография

C++Вопросы и внятные ответы


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 104

#61
M J

M J
  • Гость
  • 6 сообщений

 Где я писал, что у меня должна быть высокая зарплата?! :)   Вы не додумывайте.

А насчет 1С, я там и гребу лопатой ))))  Но устал.

 

 

 

 

  Хотелось бы на С++ попрограммировать.  Люблю этот язык. Правда давно не было практики.  Да и была она для винды. Интересно, сейчас есть вакансии в Алматы под С++?

 

Вакансии в Алматы под С++ есть, довольно много. Например, здесь 
https://almaty.hh.kz...0&no_magic=true

 

  Зарплаты низкие.  Вообще, странно.  Те же 1Сники гребут лопатой.  

 

 

"Давно не было практики, да и была она для винды". Но зарплата должна быть высокой. Вот это действительно странно. :faceoff:   

 

В объявлениях указаны зарплаты от 250 - 300 тысяч тенге. Если вы пришли по объявлению, вас никто еще не знает и вы пока еще никак себя не показали, это хорошая зарплата.

 

"Те же 1Сники гребут лопатой". Ну так в чем проблема? Можете тоже идти в 1Сники. :hi:  

 


  • 0

#62
M J

M J
  • Гость
  • 6 сообщений

MR. BOOL  а почему считаю, что Сишники должны получать больше 1Сников, потому что вход в Си гораздо труднее и дольше.   


  • 0

#63
T-800 Danya

T-800 Danya
  • Свой человек
  • 653 сообщений

Согласен с вами ))))  Видимо, никому Си не нужен тут.  Хотя, если "ничего не умеешь", то могли бы и на GO скажем звать ))  А насчет пиратского софта, я думаю, он нужен тем, кто хочет изучать сабж.  Выучился,  устроился на работу, а там уже на лицензионках ))
 
Давным-давно, когда я был руководителем небольшой группы разработчиков, ко мне пришел кандидат в разработчики.  В фирме пользовались C++ Builder, если кто помнит.  Так вот, он открыл IDE,  создал файл  и начал делать тестовое задание на BASIC.   Тот, на котором мы лабы делали в универе )))  Я его переспросил, вы пришли на позицию С++ разработчика?   Он утвердительно кивнул головой.  Посидел с полчаса и ушел.   Видимо, как-раз тот случай, что вы описали )))


Вообще-то строго говоря я НЕ описал, а лишь вкратце пересказал суть ТОП-овых объявлений с hh по позиции Программист С++ ;)


Сообщение отредактировал T-800 Danya: 11.09.2019, 17:00:46

  • 0

#64
T-800 Danya

T-800 Danya
  • Свой человек
  • 653 сообщений

MR. BOOL  а почему считаю, что Сишники должны получать больше 1Сников, потому что вход в Си гораздо труднее и дольше.


ИМХО размер Оплаты определяет Спрос...

 

Спрос на кодеров С++  низкий потому что у нас  мало компаний которые бы реализовывали Коммерческие Проекты где бы реально требовались Разработчики на С++ соотвественно и объявления такие... Что мол требуется Программист С++ ... Но кодить на С++ НЕ  требуется :idea:   ... А требуется  хорошо  уметь таскать Столы... :dandy:    И все такое :)


Сообщение отредактировал T-800 Danya: 11.09.2019, 17:21:38

  • 0

#65
Mr. Bool

Mr. Bool
  • Завсегдатай
  • 115 сообщений
Где я писал, что у меня должна быть высокая зарплата?! Вы не додумывайте. А насчет 1С, я там и гребу лопатой )))) Но устал.

 

А кто тут жаловался, что зарплаты низкие? Вы же спрашивали насчет вакансий по С++ в Алматы. Вам показали на выбор несколько имеющихся на данный момент вакансий на сайте hh.kz, но ваш ответ был "зарплаты низкие". Хотя я считаю, для Алматы зарплаты от 250-300 тысяч тенге это хорошие зарплаты. Ну ищите тогда сами, где зарплаты еще выше.

 

 

MR. BOOL а почему считаю, что Сишники должны получать больше 1Сников, потому что вход в Си гораздо труднее и дольше.

 

И что с того, что вход в Си труднее и дольше? Работодатель платит наемным работникам деньги. Поэтому только ему (а не нам с вами) и решать, кому сколько платить, чтобы успешно вести свой бизнес. Если он платит 1Снику больше, чем сишнику, это значит, что 1Сник для него важнее и нужен ему больше, чем сишник. И трудность входа в Си здесь ни при чем.


Сообщение отредактировал Mr. Bool: 11.09.2019, 18:21:39

  • 0

#66
lexx821

lexx821
  • Свой человек
  • 816 сообщений

Я писал и на Си тоже.

Доброе время суток! Круто!  :kruto:  

 
Вот кто соскучился по Си/Си++ и у кого есть время и желания, вот давайте создадим такую программку - https://www.youtube....h?v=BWYatXcRHx0 суть её в том, чтобы голос превратить в мелодию, при нажатия клавиши на midi клавиатуре изменяется питч. Нужно только знать частоты, чтобы питч голоса совпадал с питчем ну скажем гитары, это будет такая небольшая разминка. Вот простой код, который анализирует wav файл:
#include <iostream>
#include <iomanip>
#include <stdio.h>
#include <math.h>


using namespace std;
struct WAVEHEADER { // WAV заголовок http://soundfile.sapp.org/doc/WaveFormat/
    char chunkId[4];
    unsigned long chunkSize;
    char format[4];
    char subchunk1Id[4];
    unsigned long subchunk1Size;
    unsigned short audioFormat;
    unsigned short numChannels;
    unsigned long sampleRate;
    unsigned long byteRate;
    unsigned short blockAlign;
    unsigned short bitsPerSample;
    char subchunk2Id[4];
    unsigned long subchunk2Size;
};


int main(int argc, char **argv) {
   FILE *f;
   WAVEHEADER h;
   float ds;
   int dm;
   if(argc <= 1) {
     cout << "waveread.exe <filename.wav>";
     return 0;
   }   
   f = fopen(argv[1], "r+b");
   fread(&h, sizeof(WAVHEADER), 1, f);
   fclose(f);
   ds = 1.f * h.subchunk2Size / (h.bitsPerSample / 8) / h.numChannels / h.sampleRate;
   dm = (int)floor(ds) / 60;
   ds = ds - (dm * 60);   
   cout << "File name:\"" << argv[1] << "\"" 
    << "\nSample rate: " << h.sampleRate
<< "\nChannels: " << h.numChannels
<< "\nBits per sample:" << h.bitsPerSample
<< "\nDuration: " <<  std::setprecision(2) << dm
<< ":" <<  std::setprecision(2)  << round(ds);
   return 0;
}
P.S. Спомощью структуры WAVEHEADER также можно создавать свой заголовок wav файла и сохранять его. Вот раньше я спомощью Visual Basic 6.0 генерировал синусоиду (спомощью функции sin), и зафигачивал в бинарный wav файл в память (опция SND_MEMORY), а потом проигрывал звук спомощью sndPlaySound - https://docs.microso...798676(v=vs.85) Конвертировать mp3, ogg в wav, и из wav в mp3, ogg буду спомощью бесплатной библиотеки ffmpeg - https://github.com/FFmpeg/FFmpeg

  • 0

#67
lexx821

lexx821
  • Свой человек
  • 816 сообщений

Вот немного код усовершенствовал, теперь программа может загружать wav файл в память, и проигрывать аудио из память, если компилируете как я на Dev-C++ то надо добавить библиотеку -lwinmm в настройках, вот код:

#include <iostream>
#include <iomanip>
#include <stdio.h>
#include <math.h>
#include <windows.h>
#include <mmsystem.h>
#include <malloc.h>


using namespace std;
struct WAVHEADER { // http://soundfile.sapp.org/doc/WaveFormat/
    char chunkId[4];
    unsigned long chunkSize;
    char format[4];
    char subchunk1Id[4];
    unsigned long subchunk1Size;
    unsigned short audioFormat;
    unsigned short numChannels;
    unsigned long sampleRate;
    unsigned long byteRate;
    unsigned short blockAlign;
    unsigned short bitsPerSample;
    char subchunk2Id[4];
    unsigned long subchunk2Size;
};


int main(int argc, char **argv) {
   FILE *f;
   long sz = 0;
   WAVHEADER h;
   float ds;
   int dm;
   if(argc <= 1) {
     cout << "waveread.exe <filename.wav>";
     return 0;
   }   
   f = fopen(argv[1], "r+b");
   if(f == NULL) {
     cout << "Error no such file \""  
      << argv[1] << "\" !";
     return -1;
   }
   fread(&h, sizeof(WAVHEADER), 1, f);
   fclose(f);
   f = fopen(argv[1], "r+b");
   fseek(f, 0L, SEEK_END);
   sz = ftell(f);
   char buf[sz];
   rewind(f);
   fread(&buf, sz, 1, f);
   fclose(f);


   ds = 1.f * h.subchunk2Size / (h.bitsPerSample / 8) / h.numChannels / h.sampleRate;
   dm = (int)floor(ds) / 60;
   ds = ds - (dm * 60);   
   cout << "File name:\"" << argv[1] << "\"" 
    << "\nSample rate: " << h.sampleRate
    << "\nChannels: " << h.numChannels
    << "\nBits per sample:" << h.bitsPerSample
    << "\nDuration: " <<  std::setprecision(2) << dm
    << ":" <<  std::setprecision(2)  << round(ds);
   PlaySound((LPCSTR)&buf, NULL, SND_MEMORY | SND_ASYNC | SND_NODEFAULT);
   cout << "\nPress any key...";
   getchar();
   return 0;
}
Потом запускаете просто допустим waveread.exe c:\windows\media\tada.wav возвращает информацию о wav файле и прогрывает wav файл.

  • 2

#68
Mr. Bool

Mr. Bool
  • Завсегдатай
  • 115 сообщений

@lexx821, программа у вас получилась хорошая. Она простая и в то же время интересная. Но уверены ли вы, что в ней нет ошибок? На какой ОС вы проверяли ее работу?

 

Я скомпилировал ваш исходник в среде Qt компилятором MinGW (никакие фирменные модули Qt при этом не подключал и не использовал). Затем я проверил работу полученной программы под Windows 10.

 

Программа сначала могла работать с файлами wav только в своей собственной директории, а в директории C:\Windows\Media файлов wav вообще не видела - сообщала "No such file". Потом я кое-что исправил и программа стала их обрабатывать, но выводила на экран неверные результаты. Верные результаты получались только для файлов wav находящихся в текущей директории программы.

 

Сейчас у меня все уже работает правильно. Наиболее важные ошибки я исправил, но какие и где были ошибки, пока не скажу. Думаю, что так будет интереснее.  ;)


  • 0

#69
T-800 Danya

T-800 Danya
  • Свой человек
  • 653 сообщений

Сейчас у меня все уже работает правильно. Наиболее важные ошибки я исправил, но какие и где были ошибки, пока не скажу. Думаю, что так будет интереснее.  ;)

Грубейшая Ошибка там Одна

 fread(&h, sizeof(WAVHEADER), 1, f);

От которой  все Компиляторы  Брызжют Слюной...  :D

 

GCC -   https://rextester.com/HIDZ31546

Clang - https://rextester.com/YBXD95093

VC++ - https://rextester.com/QZAX16518

 

Поскольку ИМХО должно быть наверно так   :idea:

 fread(&h, sizeof(h), 1, f);

Сообщение отредактировал T-800 Danya: 15.09.2019, 23:40:31

  • 0

#70
Mr. Bool

Mr. Bool
  • Завсегдатай
  • 115 сообщений

Грубейшая Ошибка там Одна
fread(&h, sizeof(WAVHEADER), 1, f);
От которой все Компиляторы Брызжют Слюной...
GCC - https://rextester.com/HIDZ31546
Clang - https://rextester.com/YBXD95093
VC++ - https://rextester.com/QZAX16518

 
Это в первой версии программы, там действительно компиляторы "брызжут слюной"  :) потому что у автора просто опечатка - в одном месте было

WAVEHEADER h;

 

а в другом 

fread(&h, sizeof(WAVHEADER), 1, f);

 

Это простая ошибка, она обнаруживается сразу.
 
Но первую версию я вообще не рассматривал. Я сразу стал разбираться со второй, более интересной версией, в которой автор добавил функцию звукового воспроизведения wav-файла. Во второй версии такой ошибки нет, никто "слюной не брызжет". :)  Исходник компилируется, программа запускается, но есть более тонкие ошибки. Из-за них программа работает неправильно, как я уже говорил. Посмотрим, найдете ли эти ошибки вы, или автор, или еще кто другой?  ;)

 

Поскольку ИМХО должно быть наверно так fread(&h, sizeof(h), 1, f);

 

Нет, в данном случае нет никакой разницы. Переменная h была объявлена с типом структуры WAVHEADER, поэтому

sizeof(h) == sizeof(WAVHEADER);

ВЫВОДЫ. Программа хоть и простая, но интересная. В ней есть некоторые ошибки, но для обучения они только на пользу. @lexx821, получите заслуженный плюсик в вашу репутацию. 


  • 0

#71
T-800 Danya

T-800 Danya
  • Свой человек
  • 653 сообщений
@ Mr. Bool
 
"Программа" обычный учебный Hello World ;)
 
Ибо код в первой версии НЕ рабочий ибо НЕ компилируется... Т.е. aФФтор выложил НЕ рабочий код, что как бы НАМЕКАЕТ ;)

Что же касается второй версии... То она интереса ИМХО вообще мало вызывает ибо уже НЕ Кросс Платформенная... Т.е. по факту Aффтор просто испортил учебный Пример ;)

И который кстати, тоже весьма ДОСТАВЛЯЕТ Компилятору ;)

VC++ - https://rextester.com/UVRRV88472

Сообщение отредактировал T-800 Danya: 16.09.2019, 21:25:48

  • 0

#72
Mr. Bool

Mr. Bool
  • Завсегдатай
  • 115 сообщений

@ Mr. Bool
 
Программа обычный учебный Hello World ;)

Код в первой версии НЕ рабочий ибо не компилируется... Во второй точно так же НЕ рабочий  

 

Ибо в нем ТА ЖЕ самая ошибка  ;)

   fread(&h, sizeof(WAVHEADER), 1, f);
 

 

Первую версию мы уже обсудили, почему она не компилируется. Там просто опечатка. Один раз объявлено WAVEHEADER, другой раз WAVHEADER.

 

Но во второй версии этой ошибки нет. И вызов fread() компилируется без ошибки

 fread(&h, sizeof(WAVHEADER), 1, f); // ошибки нет, т.к. sizeof(WAVHEADER) == sizeof(h)

  • 0

#73
T-800 Danya

T-800 Danya
  • Свой человек
  • 653 сообщений

@ Mr. Bool

Второй  вариант точно так же НЕ рабочий ;)
 
Строка 49

   char buf[sz];

См. https://rextester.com/UVRRV88472
 

source_file.cpp(49): error C2131: expression did not evaluate to a constant
source_file.cpp(49): note: failure was caused by non-constant arguments or reference to a non-constant symbol
source_file.cpp(49): note: see usage of 'sz'
Microsoft (R) C/C++ Optimizing Compiler Version 19.00.23506 for x64

Что как бэ опять таки НАМЕКАЕТ :D

 

Ибо ИМХО должно быть наверное все же  вот так  ;)

 char* buf = new char[sz];

Сообщение отредактировал T-800 Danya: 16.09.2019, 22:08:28

  • 0

#74
Mr. Bool

Mr. Bool
  • Завсегдатай
  • 115 сообщений

"Программа" обычный учебный Hello World

 

Программа действительно простая. Но нет, это не Hello World. В небольшом коде, всего на 60-70 строк, затронуто много важных тем.

 

Ибо код в первой версии НЕ рабочий ибо НЕ компилируется... Т.е. aФФтор выложил НЕ рабочий код, что как бы НАМЕКАЕТ

 

Опечатка там  была, в который раз уже повторяю. И на что же вам это "как бы НАМЕКАЕТ"? :confused:  

 

Что же касается второй версии... То она интереса ИМХО вообще мало вызывает ибо уже НЕ Кросс Платформенная... Т.е. по факту Aффтор просто испортил учебный Пример

 

Требований кроссплатформенности вообще изначально не было, это вы сейчас только придумали. Насчет учебного примера не знаю, нигде не видел такого (честно сказать, раньше я вообще никогда не интересовался обработкой звуковых файлов). Но если вы точно знаете, что автор содрал свой исходник с чужого учебного примера (еще и испортил его, как вы заявляете), то дайте ссылку на этот учебный пример. Будет интересно посмотреть.


  • 0

#75
Mr. Bool

Mr. Bool
  • Завсегдатай
  • 115 сообщений

 

@ Mr. Bool

Второй  вариант точно так же НЕ рабочий ;)
 
Строка 49

   char buf[sz];

См. https://rextester.com/UVRRV88472
 

source_file.cpp(49): error C2131: expression did not evaluate to a constant
source_file.cpp(49): note: failure was caused by non-constant arguments or reference to a non-constant symbol
source_file.cpp(49): note: see usage of 'sz'
Microsoft (R) C/C++ Optimizing Compiler Version 19.00.23506 for x64

Что как бэ опять таки НАМЕКАЕТ :D

 

Ибо ИМХО должно быть наверное все же  вот так  ;)

 char* buf = new char[sz];

 

Вот, теперь видите? Оказалось, что в этой простенькой учебной программке типа "Hello World" (как вы сами ее называете) действительно есть над чем подумать.  ;)

 

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

 

Но это не все, надо еще чтобы она работала правильно. Чтобы выдавала на экран правильную информацию о wav-файлах и воспроизводила эти файлы.  :dandy:


  • 0

#76
T-800 Danya

T-800 Danya
  • Свой человек
  • 653 сообщений

Вот, теперь видите? Оказалось, что в этой простенькой учебной программке типа "Hello World" (как вы сами ее называете) действительно есть над чем подумать.  ;)
 
Теперь вы видите, с чем мне пришлось разбираться, чтобы эту простенькую программу можно было хотя бы скомпилировать и запустить.
 
Но это не все, надо еще чтобы она работала правильно. Чтобы выдавала на экран правильную информацию о wav-файлах и воспроизводила эти файлы.  :dandy:

 
Честно говоря я так и не понял кому Пришлось РАЗБИРАТЬСЯ... Вам или aФФтору? :) - Или вы и есть aФФтор и просто пищите с другого Акка? ;)

ЗЫ Если же Вы НЕ aФФтор то ЗАЧЕМ Вам вообще этот нерабочий Hello World, когда есть Куча реальных Задач решение которых Людям нужны  Реально...  ;)

 

ЗЗЫ А от Hello World-ов  ИМХО  мало толку даже тому кто их пишет, потому что реальная задача она в 100500 раз сложней любого высосанного из пальца Hello World потому что Hello World-ы делаются как получится, а реальные задачи для Продакшена всегда приходится делать согласно ТЗ ;)
 

 


Сообщение отредактировал T-800 Danya: 16.09.2019, 22:53:30

  • 0

#77
Mr. Bool

Mr. Bool
  • Завсегдатай
  • 115 сообщений

 

Вот, теперь видите? Оказалось, что в этой простенькой учебной программке типа "Hello World" (как вы сами ее называете) действительно есть над чем подумать.  ;)
 
Теперь вы видите, с чем мне пришлось разбираться, чтобы эту простенькую программу можно было хотя бы скомпилировать и запустить.
 
Но это не все, надо еще чтобы она работала правильно. Чтобы выдавала на экран правильную информацию о wav-файлах и воспроизводила эти файлы.  :dandy:

 

Честно говоря я так и не понял кому Пришлось РАЗБИРАТЬСЯ... Вам или aФФтору? :) - Или вы и есть aФФтор и просто пищите с другого Акка? ;)

ЗЫ Если же Вы НЕ aФФтор то ЗАЧЕМ Вам вообще дался этот нерабочий Hello World, когда есть Куча реальный Задач решение которых нужны реальным Людям... ;)

 

 

Как не понял? Я же сказал, мне пришлось разбираться. И зачем мне "пищать" с другого акка? У меня нет такой необходимости, к тому же за такие дела на данном форуме сразу банят.  :dont:

Насчет реальных задач вы правы. Их много и их решение нужно реальным людям. Но обычно это трудные задачи, и не для одного человека, а для команды. И обычно эти задачи неинтересные. Да иначе и быть не может, деньги ведь платят именно за решение трудных и неинтересных задач (иначе заниматься этим никто не захочет).


  • 0

#78
lexx821

lexx821
  • Свой человек
  • 816 сообщений
1. Ну я просто хотел поболтать, а поскольку думал что никто не ответет, то сейчас занимаюсь Ada и Unity.
2. Ну возможно из-за прав доступа. Вроде как всем, ну кроме текущего пользователя можно "читать, и исполнять" и это как-бы противоречит, так-как у меня текущий пользователь "Администратор", которому ничего нельзя делать. И программа из которой я запускаю waveread.exe называется Far Manager которая имеет доступ "Администратора". Просто возможно происходит, отказ доступа этой программе на чтение файла tada.wav в папке C:\Windows\Media. Хотя сейчас эти права полная туфта, и уязвимость нулевого дня возможна в два счёта, так-как уязвимость может находится в ядре ОС, или в драйверах, а для уязвимостей Meltdown и Spectre вообще просто...  Так-же возможно почему не читает файл, потому-что может быть это не сама директория, а какая-нибудь ссылка на директорию, или имеет какую-нибудь специальную атрибуту.
3. Потом значит вот это:
// см. тут http://www.c-cpp.ru/books/operator-sizeof
printf("\n%d %d", sizeof(WAVHEADER), sizeof(h));
//выдаёт: 44 44
так-как структура имеет фиксированную длину, она хоть при sizeof(WAVHEADER) будет 44 и хоть при sizeof(h) 44. Единственное отличие, что в первом случае выдаёт размер структуры, а во втором случае размер переменной.
4. "char buf[sz]" это нормально, так-как в Си++, переменные можно объявлять хоть где, я имею ввиду за пределами начала функции main, у учителя который нас в колледже учил, у него в примерах часто видел такой код:
...
#define MAX_SIZE 100
...
int main(int argc, char **argv) {
...
//тут к примеру
char buf[MAX_SIZE+1];
gets(buf);
...
printf("%s", buf);
...

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

char *buf;
buf = (char *)malloc(MAX_SIZE+1);
...
free(buf);
но обычно переменные и константы в ассемблере/нативном коде, вроде как понимаю идут в самом начало в exe-шнике, типа:
jmp main
buf DW  '                                           $'
buf DW 'Hello World!$'
main:
...
5. В будние дни время только макс. 2 часа в день (сегодня исключение), я пишу проги очень быстро, поэтому могут ошибки, делаю я только то, что мне интересно, а не то что нужно, и лично для своего удовольствия, вот так-же как художник который каждый день рисует для себя картины, или так-же как музыкант играющий на гитаре.
6. Может быть я и Hello World-щик, но когда мы проходили в колледже Cи++ и Cи++ .NET, учитель сказал чтобы моя соседка по парте в колледже именно меня спрашивала, так-как я более менее разбирался в этом (у нас все парты были рядом, а когда были экзамены ставили перегородки), я почти за неё проект весь сделал, нужно было в базу данных спомощью ado net обрабатывать, какие-то данные запихивать в БД, и считывать их в сетку, и вывод на печать, проект там был для какого-то клуба или кружка... И на Си++ .NET и C# NET перейти было просто, и как уже писал освоить можно быстро, потому-что многие компоненты, методы похожи с времён VB6. Потом помню ко мне другой однокурсник из колледжа доставал, через скайп, мол чтобы я сделал ему программу на Си++ чтобы мышь сама двигалась и нажатия кнопок мыши имитировалось... У них навыков вообще никаких нет, так-как в колледже забивают голову этими языками: PHP, Perl, Java, VBA, MySQL, MS-SQL, Си++, C#, ABAP, HTML, CSS, JavaScript, всё изучается параллельно, единственное что ещё помню, что класс делился на две группы, пока одна группа изучает языки программирования, другая группа занимаются практически (то есть была у одних теория, а у других параллельно практика), а потом менялись. А раз они ко мне пристовали с помощью, значит у меня есть какие-то знания в этом, ибо учитель бы не сказал бы ей чтобы у меня спрашивал. Ну а так да, если бы не я, она бы загрузила бы учителя, и он бы за неё всю программу бы сделал, и времени учить нас не было. Некоторые вещи я подзабыл, и трудно держать в голове когда прогаешь то на одном языке, потом на другом, потом на 10м, или спонтанно их меняешь, по настроению. Я говорю серьёзно, многие устроились программистами сразу после окончание колледжа, потому-что в 12м классе стажировка на фирме, хоть они и Hello Worldщики в программирование, и в колледже минимум теорию, как больше практики, (ну за исключением шаблонов проектирования), но как-то всё равно они умудряются зацепиться на фирме, хоть обычно фирмы требуют минимум 3 года опыта. Спросите их что такое класс, они будут глазами хлопать, так-как практики больше, и теория быстро забывается за ненадобностью, типа сдал и забыл.
 
P.S. Всё я баинькать.

Сообщение отредактировал lexx821: 17.09.2019, 03:49:37

  • 0

#79
T-800 Danya

T-800 Danya
  • Свой человек
  • 653 сообщений

4. "char buf[sz]" это нормально, так-как в Си++, переменные можно объявлять хоть где, я имею ввиду за пределами начала функции main, у учителя который нас в колледже учил, у него в примерах часто видел такой код:

 

...
#define MAX_SIZE 100
...
int main(int argc, char **argv) {
...
//тут к примеру
char buf[MAX_SIZE+1];
gets(buf);
...
printf("%s", buf);
...
Не знаю как это выглядет в ассемблере и в машинном коде. Возможно такие переменные компилятор во время комиляция переделывает в это:


 
char *buf;
buf = (char *)malloc(MAX_SIZE+1);
...
free(buf);
но обычно переменные и константы в ассемблере/нативном коде, вроде как понимаю идут в самом начало в exe-шнике, типа:

 
jmp main
buf DW  '                                           $'
buf DW 'Hello World!$'
main:
...

 
 
ИМХО как всегда СЛИШКОМ много Букв :D
 
Вам же показали ошибку  в коде... см.     https://vse.kz/topic...4#entry36019636
 
И показали как ее надо имправить чтобы компилятор  MSVS  с вашего кода НЕ плевался.
 
А Вы  что-то еще пытаетесь доказывать...  Компилятор -  это НЕ Ваш учитель по Информатике  и пытаться ему что-то втереть совершенно Бессмысленно :lol:
 
 
 
 

5. В будние дни время только макс. 2 часа в день (сегодня исключение), я пишу проги очень быстро, поэтому могут ошибки, делаю я только то, что мне интересно, а не то что нужно, и лично для своего удовольствия, вот так-же как художник который каждый день рисует для себя картины, или так-же как музыкант играющий на гитаре.

 
 
ИМХО набирать в редакторе Некомилирующися  Код -  Еще не значит разрабатывать Программы ;)
 
ЗЫ Ибо Программирование  - это НЕ КодаМания.  И задача программиста состоит вовсе  не в том чтобы Настрочить сотни страниц НЕ Рабочего кода, в том чтобы разработать нормально  работающую Программу ;)

Сообщение отредактировал T-800 Danya: 17.09.2019, 14:42:44

  • 0

#80
Mr. Bool

Mr. Bool
  • Завсегдатай
  • 115 сообщений

2. Ну возможно из-за прав доступа. Вроде как всем, ну кроме текущего пользователя можно "читать, и исполнять" и это как-бы противоречит, так-как у меня текущий пользователь "Администратор", которому ничего нельзя делать. И программа из которой я запускаю waveread.exe называется Far Manager которая имеет доступ "Администратора". Просто возможно происходит, отказ доступа этой программе на чтение файла tada.wav в папке C:\Windows\Media. Хотя сейчас эти права полная туфта, и уязвимость нулевого дня возможна в два счёта, так-как уязвимость может находится в ядре ОС, или в драйверах, а для уязвимостей Meltdown и Spectre вообще просто... Так-же возможно почему не читает файл, потому-что может быть это не сама директория, а какая-нибудь ссылка на директорию, или имеет какую-нибудь специальную атрибуту.

 

Как это, пользователю "Администратор" ничего нельзя делать? Наоборот, ему можно делать все. Это обычному юзеру нельзя почти ничего делать в директории Windows и ее поддиректориях. Поэтому я вначале копировал wav-файлы в текущую директорию программы waveread, либо как и вы, тоже устраивал такие же пляски с бубном - запускал штатную консоль Command Prompt с опцией Run As Administrator. Но оказалось, в вашем коде достаточно изменить совсем немного (что именно?) и все, этой проблемы больше нет. Теперь запускаю консоль как обычный пользователь, и программа waveread.exe свободно работает с wav-файлами из папки C:\Windows\Media.

 

Скрытый текст

 

Скрытый текст

Сообщение отредактировал Mr. Bool: 17.09.2019, 14:59:08

  • 0


Количество пользователей, читающих эту тему: 0

пользователей: 0, неизвестных прохожих: 0, скрытых пользователей: 0

Размещение рекламы на сайте     Предложения о сотрудничестве     Служба поддержки пользователей

© 2011-2022 vse.kz. При любом использовании материалов Форума ссылка на vse.kz обязательна.