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


Фотография

Программистов трэд


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

#1 G-stal

G-stal

    Добытчик алмазов

  • Пользователи
  • Сообщений: 654

Написал 18.03.2012 - 14:52

ITT задаём свои вопросы по коддингу. Начну, вот код:
Скрытый текст
Это должен быть экстрактор музыки из touhou project 7. В строке 74 ошибка. Там я пытаюсь сделать имя выходного файла, но не получается соединить 2 строки и число. Как блин это сделать, не понимат. [creeper]
  • Georgebold, JohnDnat, RmsPleady и еще 16 это одобряют

#2 Cyxapuk

Cyxapuk

     

  • Главные модераторы
  • Сообщений: 8706
  • Ник в Minecraft:
    Meegoo

Написал 18.03.2012 - 15:00

Выдели как нибудь 74 строку.
  • Поблагодарил: VikaVirtdof

V6xCzSN.png


#3 G-stal

G-stal

    Добытчик алмазов

  • Пользователи
  • Сообщений: 654

Написал 18.03.2012 - 15:13

Внутри тэга [code=auto:0] другие тэги не работают.
74 строка это где extract(start_offset[i], intro_length[i], total_length[i], "track"+(char*)i+".wav"); почти в самом низу.

#4 vantuz

vantuz

    Закалённый ифритами

  • Модераторы
  • Сообщений: 3619

Написал 18.03.2012 - 16:00

может отдельную тему по кодингу сделать?
цитаты
Скрытый текст

#5 G-stal

G-stal

    Добытчик алмазов

  • Пользователи
  • Сообщений: 654

Написал 18.03.2012 - 16:11

может отдельную тему по кодингу сделать?

А чем в беседке плохо, форум вроде посвящён кубачу, а не программистам? Сишники пока на работе как я понимаю.

#6 Aquilo

Aquilo

    Тонущий в песках душ

  • Пользователи
  • Сообщений: 2338

Написал 18.03.2012 - 16:19

Я Думаю он про одну тему для всех маленьких кодерских вопросах
Истинная гармония лежит между Абсолютной гармонией и Абсолютным хаосом

#7 G-stal

G-stal

    Добытчик алмазов

  • Пользователи
  • Сообщений: 654

Написал 18.03.2012 - 16:23

Может прям эту тему переименовать и переоформить?

#8 Aquilo

Aquilo

    Тонущий в песках душ

  • Пользователи
  • Сообщений: 2338

Написал 18.03.2012 - 16:31

можно
Истинная гармония лежит между Абсолютной гармонией и Абсолютным хаосом

#9 Playermet

Playermet

    Олежа :3

  • Главные модераторы
  • Сообщений: 9368
  • Откуда: Макеевка, ул.Ленина,д.84/16

Написал 18.03.2012 - 16:35

Что-бы сделать из целочисленного строку - itoa (Или _itoa) (Также есть варианты для long и unsigned long)Конкатенация строк - strcat (Или strncat)

Для форумчан можно просто Олег.

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

#10 G-stal

G-stal

    Добытчик алмазов

  • Пользователи
  • Сообщений: 654

Написал 18.03.2012 - 16:59

Тему переименовал. Олег, я бы тоже сделал через itoa/iota, но у меня компилятор не visual c++, а Bloodshed Dev-C++. Или и там так можно? Апд. Попробовал таки сделать через itoa (На каком же я сайте читал, что она только на VC++?). Компилируется, но при запуске вылетает и появляется окно "Прекращена работа программы. Windows пытается найти способ устранения ошибки". Делал так:
char* out_name;char* buffer;out_name="track";itoa(i,buffer,10);strcat(out_name, buffer);strcat(out_name, "[paste][/paste]wav");


#11 Playermet

Playermet

    Олежа :3

  • Главные модераторы
  • Сообщений: 9368
  • Откуда: Макеевка, ул.Ленина,д.84/16

Написал 18.03.2012 - 19:01

char* out_name;out_name="track";

Так нельзя. На указатель память даже не выделена, а ты туда строковый литерал суешь. Юзай strcpy(out_name, "track"); В общем так:
char out_name[64];	char buffer[64];	int i=17;	strcpy(out_name, "trackerr");	_itoa(i,buffer,10);	strncat(out_name, buffer, strlen(buffer));	strcat(out_name, "[paste][/paste]wav");
Откатил немного.

Для форумчан можно просто Олег.

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

#12 G-stal

G-stal

    Добытчик алмазов

  • Пользователи
  • Сообщений: 654

Написал 18.03.2012 - 19:39

Получилось, но есть пара вопросов.Какая разница между _itoa и itoa?Почему здесь используется "strncat(out_name, buffer, strlen(buffer));", а здесь "strcat(out_name, ".wav");"?Когда использовать char, а когда char*?

#13 Playermet

Playermet

    Олежа :3

  • Главные модераторы
  • Сообщений: 9368
  • Откуда: Макеевка, ул.Ленина,д.84/16

Написал 18.03.2012 - 20:09

Какая разница между itoa и _itoa?

Вторая только в VC++, и этот компилятор постоянно кидает ворнинг о том, что лучше использовать его вариант.

Почему здесь используется "strncat(out_name, buffer, strlen(buffer));", а здесь "strcat(out_name, ".wav");"?

В первом случае у нас переменная, во втором - строковый литерал. Типы соответственно char * и const char *.

Когда использовать char, а когда char*?

Эммм, это совсем разное, хотя и по сути одинаковое. char a; - один символ char a[10]; - массив из десяти символов char a[] = "abcc"; массив из 5ти символов (Пятый - закрытие строки). char *a; - указатель на начало массива(либо даже один элемент) символов. wchar_t - расширенный символьный тип, возможность использовать более 256 символов в наборе string - класс строки из стандартной библиотеки.

Для форумчан можно просто Олег.

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

#14 G-stal

G-stal

    Добытчик алмазов

  • Пользователи
  • Сообщений: 654

Написал 18.03.2012 - 20:21

Понятно, спасибо. А как сделать чтобы отображался процент выполнения, скажем чтото вроде:
#include <iostream>int main(){  for (int i=1;i<=20;i++)    {      for (int j=1;j<=100;j++)    {      cout << "Processing file: " << i << "   progress: " << j << "%\n"    }  }}
Но переходить на новую строку нужно только после конца обработки файла. До этого проценты перезаписываются. Надеюсь меня поняли Нотч

#15 Playermet

Playermet

    Олежа :3

  • Главные модераторы
  • Сообщений: 9368
  • Откуда: Макеевка, ул.Ленина,д.84/16

Написал 18.03.2012 - 20:41

Эмм...Для начала, даже мегобайтовый файл считается менее чем за секунду. Зачем тебе?А вообще, есть несколько вариантов.Простой:В цикле считывания, в котором например 1000.000 итераций, проверять, если i кратно 1000 то выводить на экран '|'.Или, что-бы не проверять каждый раз, делать двойной цикл. Но инициализация цикла в другом цикле, имеющем 10000 итераций тоже свое возьмет. Иногда это может снять 10% производительности при пустом цикле.Сложный:Тоже самое, только вместо тривиального вывода палки, мы должны выводить числовой процент.Для этого мы должны точно знать его позицию на экране, перемещать на нее указатель вывода, чистить место(при выводе с дробным), снова возвращать указатель, и выводить новый процент.

Для форумчан можно просто Олег.

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

#16 G-stal

G-stal

    Добытчик алмазов

  • Пользователи
  • Сообщений: 654

Написал 18.03.2012 - 21:17

Ну, как посчитать проценты я знаю obrabotano/total_volume*100, мне нужен вывод. что-то вроде
Extracting track: 1   Complite!Extracting track: 2   Complite!Extracting track: 3   8% (1543/17546 bytes)
По поводу размера файлов, там зависит от количества лупов. Да и скажем 8й трэк весит более 40 мегабайт. Потом надо будет во flac пережать.

#17 Sekai

Sekai

    Добытчик обсидиана

  • Пользователи
  • Сообщений: 1163
  • Откуда: Тольятти

Написал 18.03.2012 - 21:32

Тебе ответили на вопрос про вывод. Ставишь курсор на строчку выше, очищаешь её, и пишешь по новой
Noblesse oblige
ЧЕЕЕЕЕЕЕЕЕЕЕЕН! ^_,^

#18 Playermet

Playermet

    Олежа :3

  • Главные модераторы
  • Сообщений: 9368
  • Откуда: Макеевка, ул.Ленина,д.84/16

Написал 18.03.2012 - 23:31

Не совсем. Строку можно не переписывать. Переписывать нужно только число процентов.В conio.h для этого есть все.

Для форумчан можно просто Олег.

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

#19 Fariegen23

Fariegen23

    Зачарователь

  • Пользователи
  • Сообщений: 1807

Написал 21.03.2012 - 23:29

Не знает кто хороший учебник по паскалю?Не могу найти нормальный, для тех кто только только решился заниматься программированием.
  • Поблагодарил: JohnDnat

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

#20 mistaqur

mistaqur

    Алхимик

  • Главные модераторы
  • Сообщений: 4230
  • Откуда: Санкт-Петербург

Написал 21.03.2012 - 23:33

Я по Фаронову учился + Встроенная справка Borland Pascal 7.0 (благо в школе я уже знал английский на уровне, достаточным для понимания того, что там написано+ англо-русский словарь, инет тогда был только через диал-ап).


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

0 пользователей, 0 гостей, 0 анонимных