我想制作一个简单的进度指示器,例如“完成 1/10 次迭代”。我知道当前迭代的数量和它们的总数,但我只是不知道如何更改控制台中的特定行,而不是显示新行。
Вадим Ермаков's questions
我的任务是从 8 个谐波中形成一个音频信号(曲折),每个谐波可能有也可能没有相移(以 pi 为单位)。
#data - массив с байтами, в формате ['01010101', '11110000']
ADS = len(data) * SPP #Вычисляю размер массива под сигнал
signal = []
for i in range(ADS):
signal.append(0)
# Формируем по одному периоду сигнала на каждый байт
for b in range(len(data)):
d = 0
for N in range(1, 17, 2):
for i in range(SPP):
index = i + (b * SPP)
signal[index] += harm(N, FREQ, i, SPS, int(data[b][d]))
#s.next()
d += 1
# Функция для вычисления отдельной гармоники
def harm(N, freq, cs, sps, ph):
arg = freq*N*2*np.pi*(cs/sps)
if ph:
arg += np.pi
return AMPLITUDE*(4/np.pi)*np.sin(arg)/N
我想知道我是否可以以某种方式优化这部分代码。我考虑过使用map,但没有弄清楚如何替换i(当前样本的数量)。提前致谢!
我遇到了一个问题,我需要编写同一个函数的许多实例,这些实例仅在返回值上有所不同。就像是:
__uint16_t get_uint(){
char input[256];
__uint16_t n;
fgets(input, sizeof(input), stdin);
while (sscanf(input, "%u", &n) != 1) {
printf("Неверный ввод! Попробуйте ещё раз: ");
fgets(input, sizeof(input), stdin);
}
return n;
}
__uint32_t get_uint(){
char input[256];
__uint32_t n;
fgets(input, sizeof(input), stdin);
while (sscanf(input, "%u", &n) != 1) {
printf("Неверный ввод! Попробуйте ещё раз: ");
fgets(input, sizeof(input), stdin);
}
return n;
}
我知道你不能按值重载函数,但我已经看到在 C++ 中这个问题可以使用模板来解决,但在 C 中却不行。还有其他方法吗?提前致谢
我有一个 GUI 程序和一个执行算法的程序,它会不断地重新编译。问题出现了,如何将数组从 GUI 传输到算法程序(可以通过值),然后返回相同的数组(也可以通过值)?从 GUI 调用程序:
np = Process::Start(Path + "\\f.exe");
<Получаю значение, возвращаемое вызванной программой и вывожу его>
类似于带有算法的程序代码:
#include <stdio.h>
#include "func.h"
int main(int argc, char *argv[]){
<Получаю массив>
<Выполняю с ним все операции>
<Возвращаю его программе с GUI>
}
提前致谢!
我正在尝试生成一个随机字符串,但结果总是由相同的字符组成
void random_password(char* p, short unsigned int lenght, char* symbols, short unsigned int border){
for (short unsigned int i=0; i<lenght; i++){
unsigned int s = random(0, border);
p[i] = symbols[s];
}
};
unsigned int random(unsigned int a, unsigned int b){
srand(time(NULL));
return a + rand()%b;
};
我尝试使用溢出来制作 PRNG,但这也没有给出可接受的结果(9、5、7、3 在一个循环中发出)
请告诉我一些更有效的算法
我正在用 C 语言编写一个递归函数,并决定在参数中传递一个指向布尔变量的指针,而不是负责停止该函数的全局变量。我决定练习一个更简单的例子:
#include <stdio.h>
#include <stdlib.h>
int f(short unsigned int* q, short unsigned int N){
if (N >= 5 || *q > 10){
return 0;
}
else{
*q = 1 + f(q, N+1);
return *q;
}
}
int main()
{
short unsigned int* q;
*q = 1;
f(q, 1);
printf("%u", *q);
}
但是,程序并没有工作(在main函数中,我进一步显示了指针地址处的内容,但是程序没有向控制台输出任何内容,进程以代码-1073741819(0xC0000005)结束)。帮我找出问题所在
我有一个大图像,它被平铺成相同大小的瓷砖。名称格式为 - < Номер строки> _< Номер столбца>。
我想将它们全部粘贴到一个大图像中,但我不知道该怎么做。最初,我想先将线条分别粘合,然后将它们组合成一个大图像,但我不知道如何实现。
UPD:我忘了补充另一个问题是有相当多的片段(1104),每个片段重约2.1MB。
我正在用 C 语言编写一个小程序。我在 Code::Blocks 中工作。我一直在寻找如何处理 C 语言中的异常,我在 docs.microsoft.com 上找到了 __try __except 的描述,但由于某种原因,编译器对此发誓。请告诉我如何进行异常处理。
我想编写自己的合成器,我阅读了有关实时声音输出的信息。我遇到了这个库,从官方网站下载了它,但不明白如何将它连接到 Qt Creator。在网上我找到了一种类似的方法来连接这个 IDE 的库:
LIBS+="C:\\Libs\Exemple.lib"
但我没有在库的解压缩存档中找到扩展名为 .lib 的文件
请帮助连接 portaudio 库或建议其他一些库,这些库将允许您播放“不是来自文件”的声音,可以这么说,而不是来自波表。
任务很简单。有许多简单的测试(4 个中的 1 个,选择几个,相关)。它们都位于同一个站点上。回答问题后,立即显示正确答案(不是按钮本身,而是按钮上的文字)。我想自动化这个过程并编写一个可以解决两次测试的机器人(一次 - 得到答案,第二次 - 解决方案)。只是我没有编写机器人的经验,我在 C++ 中工作,我正在学习 Python。请告诉我在哪里可以找到解决此问题的材料。
朋友们,我需要将输入信号分解成几个谐波分量,然后将它们中的每一个同相移动一个随机数,然后将所有内容加回去。我只有一个结构来读取 .wav 文件的标题,但我无法弄清楚傅里叶变换算法本身。有人可以帮忙吗?
struct WAVHEADER
{
// WAV-формат начинается с RIFF-заголовка:
// Содержит символы "RIFF" в ASCII кодировке
char chunkId[4];
//Это размер файла - 8, то есть,
// исключены поля chunkId и chunkSize.
unsigned long chunkSize;
// Содержит символы "WAVE"
char format[4];
// Формат "WAVE" состоит из двух подцепочек: "fmt " и "data":
// Подцепочка "fmt " описывает формат звуковых данных:
// Содержит символы "fmt "
char subchunk1Id[4];
// Это оставшийся размер подцепочки, начиная с этой позиции.
unsigned long subchunk1Size;
// Для PCM = 1 (то есть, Линейное квантование).
// Значения, отличающиеся от 1, обозначают некоторый формат сжатия.
unsigned short audioFormat;
// Количество каналов. Моно = 1, Стерео = 2 и т.д.
unsigned short numChannels;
// Частота дискретизации. 8000 Гц, 44100 Гц и т.д.
unsigned long sampleRate;
// sampleRate * numChannels * bitsPerSample/8
unsigned long byteRate;
// numChannels * bitsPerSample/8
// Количество байт для одного сэмпла, включая все каналы.
unsigned short blockAlign;
// Так называемая "глубиная" или точность звучания. 8 бит, 16 бит и т.д.
unsigned short bitsPerSample;
// Подцепочка "data" содержит аудио-данные и их размер.
// Содержит символы "data"
char subchunk2Id[4];
// numSamples * numChannels * bitsPerSample/8
// Количество байт в области данных.
unsigned long subchunk2Size;
// Далее следуют непосредственно Wav данные.
};
我只是不知道如何处理这个标题以及如何读取 .wav 文件本身。
