请告诉我,是否可以sql
通过 -request 找到具有给定名称的文件夹或目录?例如,我创建了一个请求,我需要在请求中指定一个名为 let's say 的文件夹2022
。它有这样的机制Oracle PL\SQL Developer
吗?没有用户和客户端程序,比机械地通过SELECT, FROM, WHERE
等等。
beginner's questions
您需要188
在已经形成的数字之前添加一个数字,例如,有一个数字110 0000 000
。而且我需要执行任务188 110 0000 000
。最大的数值varchar
,我认为它可能会花费这么多。
update myTable1 myTbl
set myTbl.NMBCODE='188'+myTbl.NMBCODE --- вставляем символы числа перед основной строковой переменной(оба значения varchar),конкатенация..
但是这个方法是不正确的,因为+myTbl.TNMBCODE
出现了错误ORA01722-Invalid Number
请告诉我有什么机制可以解决这个问题。
脚本代码
#!/usr/bin/env python
import zlib
import sys
import re
import binascii
if(len(sys.argv) < 2 or sys.argv[1] == "-h"):
print("usage: python DecompNewDell.py <biosupdate.exe>")
exit()
f = open(sys.argv[1], "rb")
string = f.read()
pat = re.compile(r'.{4}\xAA\xEE\xAA\x76\x1B\xEC\xBB\x20\xF1\xE6\x51.{1}\x78\x9C')
match = pat.search(string)
(start_match, end_match) = match.span()
compessed_len = string[start_match:start_match+4]
compessed_len = binascii.b2a_hex(compessed_len[::-1])
compessed_len = long(compessed_len, 16)
f.seek(start_match+16)
string = f.read(compessed_len)
o = zlib.decompress(string)
f2 = open(sys.argv[1] + "_decompressed.hdr", "wb")
f2.write(o)
f.close()
f2.close()
print("Decompressed data written to %s_decompressed.hdr" % sys.argv[1])
我从命令行执行(文件位于脚本旁边,即在桌面上.exe
),结果它在行上发出警报match = pat.search(string)
我正在Python
学习,这样的练习有一个小问题(我正在根据 Summerfield 的书学习 - “Programming in Python3
. A detail guide”)
练习本身被缩短了,但任务可以理解 所以从 4 个已经填写的列表(文章、名词、动词、副词)中使用 5 个循环生成句子random.choice()
。这样一个收到的诗句有5行,每一行都有这样随机选择的句子。
我做了什么
-创建4个列表,变量line=5
(行数)
- 暂时执行while
一个有这种条件的循环line!=5
-在循环本身中,已经有内部循环用于迭代每个列表的值,在帮助下选择其中一个并将其random.choice()
显示在屏幕上。
问题如下:
我在Ubuntu
终端中工作并使用我启动我的迷你应用程序,但它没有启动,但它只是换行到终端的下一行(好像命令已执行 - 见图)
Код:
#!/usr/bin/env python3
import random
import sys
listarticles=["the","a","for","an","this","that","those"]
listsush=["cat","dog","man","woman","duck","girl","boy"]
listglag=["sing","walk","run","drink","eat","sleep","cry"]
listnarech=["loudly","fastly","well","badly","quietly","ugly","blackly"]
line = 5
while line!=5:
for ls1 in listarticles:
ls1 = random.choice(listarticles)
print(ls1)
for ls2 in listsush:
ls2 = random.choice(listsush)
print(ls2)
for ls3 in listglag:
ls3 = random.choice(listglag)
print(ls3)
for ls4 in listnarech:
ls4 = random.choice(listnarech)
print(ls4)
line+=1
QCustomPlot 被用作在 Qt Creator 中绘图的辅助工具(在编译示例时正确安装)
inline double fn(int T, double x)
{
if (x >= 0)
return T;
return 0;
}
void MainWindow::drawfunc(int valT, int xmin, int xmax) //Вывод функции Хэвисайда
{
double hh =0.01;
int N = (xmax-xmin)/hh;//считается количество точек для массивов координат xmax=10,xmin=-5 итого 1500
QVector<double> x11(N), y11(N); // //Массивы координат точек
int i=0;
for (double x = xmin; x < xmax; x +=hh)
{
x11[i]=x;
y11[i]=fn(valT,x);
i++;
}
ui->widget->clearGraphs();
ui->widget->addGraph();
ui->widget->graph(0)->setData(x11, y11);
// задаем имена осей координат
ui->widget->xAxis->setLabel("x");
ui->widget->yAxis->setLabel("y");
// задаем размеры осей
ui->widget->xAxis->setRange(xmin, xmax);
ui->widget->replot();
}
问题是图没有画出来,抛出异常
ASSERT failure in QVector<T>::operator[]: "index out of range", file ..\..\..\..\Qt\5.3\mingw482_32\include/QtCore/qvector.h, line 385
一步步调试,结果是:
- 一个问题由于QVector
点数为1500(手动计算公式),Qt Creator给出1499。
简单的技巧如
int N = ((xmax-xmin)/hh)+1 или `QVector<double> x11(N+1), y11(N+1)` `i=1`
也抛出异常..
窗体上有一个按钮,它应该使用 OpenFileDialog 打开文本文件(也就是说,文本文件散落在计算机周围,或者你需要打开的不是一个特定的,而是每次都不同,但没关系)
private void button1_Click(object sender, EventArgs e)
{
OpenFileDialog opnfldlg = new OpenFileDialog();
opnfldlg.InitialDirectory = "c:\\";
opnfldlg.Filter = "txt files(*.txt)|*.txt|All Files(*.*)|*.*";
opnfldlg.FilterIndex = 2;
opnfldlg.RestoreDirectory = true;
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
DataSet ds = new DataSet();
ds.Tables.Add("Temp");
StreamReader stred = new
StreamReader(opnfldlg.FileName);//Исключение!
string firstLine = stred.ReadLine();
//массив имен колонок из файла
string[] arraNameColumn =
System.Text.RegularExpressions.Regex.Split(firstLine, ";");
for (int i = 0; i < arraNameColumn.Length; i++)
{
ds.Tables[0].Columns.Add(arraNameColumn[i]);
}
string Line = stred.ReadLine();
while (Line != null)
{
string[] arraCell = System.Text.RegularExpressions.Regex.Split(Line, ";");
ds.Tables[0].Rows.Add(arraCell);
Line = stred.ReadLine();
}
dataGridView1.DataSource = ds.Tables[0];
stred.Close();
dataGridView1.AllowUserToAddRows = false;
}
}
但是这一行抛出异常
StreamReader stred = new StreamReader(opnfldlg.FileName)
Необработанное исключение типа "System.ArgumentException" в mscorlib.dll
Дополнительные сведения: Пустое имя пути не допускается.
在 OpenFileDialog 声明之后添加了以下内容:
FileIOPermission fioper = new FileIOPermission(PermissionState.Unrestricted);
fioper.AllLocalFiles = FileIOPermissionAccess.Read;
但无济于事。
逐步调试显示以下内容,即未在任何地方指示正在打开的文件的名称。应该不是这样吧。
那么问题呢?如果他自己都不能确定文件打开的路径,那这个问题怎么解决呢?
本主题的延续,但有一个不同的问题
程序有一个主要的二维动态数组,这里创建
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e)
{
//---Поля для других методов;
int Nx, Nt;//На сколько частей разбиваетсся отрезок сетки
Nx = Convert::ToInt32(textBox5->Text);
Nt = Convert::ToInt32(textBox6->Text);
//Создание динамического двумерного массива для сеточных преобразований
double **wht = new double *[Nt];
for (int i = 0; i < Nt; i++)
wht[i] = new double[Nx];
//вызовы методов,которые вычисляют и записывают значения в wht
}
在外部button1_Click
,也有将此数组作为参数的方法,但一切正常,因为所有这些方法和函数都在中再次调用button1_Click
但它timer1_Click
不接受输入参数。值得编写额外的参数,编译器立即指向这一行并出现以下错误
this->timer1->Tick += gcnew System::EventHandler(this, &TransEquForm::timer1_Tick);
error C3352: void TransEqu::TransEquForm::timer1_Tick(System::Object ^,System::EventArgs ^,double **): указанная функция не соответствует типу делегата "void (System::Object ^,System::EventArgs ^)"
已采取以下行动
1)让它成为一个全局变量,一个表单字段,比如简单的变量(不是数组)还是可以全局创建的,但是对于数组还是第一次遇到这个。
我熟悉了全局动态数组的这个问题,并决定将其应用到我的项目中。
结果是当下面的代码运行时
double** wht;
double** created(int Nt,int Nx)
{
double **wht = new double *[Nt];
for (int i = 0; i < Nt; i++)
wht[i] = new double[Nx];
return wht;
}
使用数组wht
时,出现以下异常
Необработанное исключение типа "System.NullReferenceException" в TransEqu.exe
Дополнительные сведения: Ссылка на объект не указывает на экземпляр объекта.
但这些问题非常适合使用控制台以及在WinForms
遇到上述困难时使用
2)头文件,类 有尝试实现这个选项,但是数组又出现了问题,事实是表单组件不愿意交互,尤其是需要在头文件中获取一些值的时候。
更新程序
让我提出问题如何将动态数组(创建于button1_Click
)转移到事件timer1_Tick
?
有一个文本文件,您需要在其中添加程序运行期间获得的结果(不清除文件中的信息)
下面的代码做什么首先,检查textbox
-s 是否不为空,如果不为空,则将它们的值写入变量kef
然后emp
创建StreamWriter
指示写入哪个文件。使用命令,它strw.Write
计划将 2 行和 2 行添加到现有文件变量中kef
,并且emp
private void button5_Click(object sender, EventArgs e)
{
if (textBox4.Text!="" && textBox5.Text!="")
{
double kef = Convert.ToDouble(textBox4.Text);
double emp = Convert.ToDouble(textBox5.Text);
StreamWriter strw = new StreamWriter("kendal.txt", true);
strw.Write("Коэффициент корреляции Кенделла= ", kef, Environment.NewLine);
strw.Write("Эмпирическое значение = ", emp, Environment.NewLine);
MessageBox.Show("Сохранение выполнено!");
strw.Close();
}
else
MessageBox.Show("Вычисление не выполнено!Сохранение невозможно");
}
结果,没有任何内容写入文件,但也没有删除任何内容(但这很好)
PS 问题是关于这个主题的,例如,像这样 写入文本文件
但不同之处在于,在我的情况下它更容易一些,因为您需要添加textBox
已知的值 \u200b\u200b。
老实说,这个问题让我很吃惊。
inversum = 7;
quantrow = 8;
secindex = 7;
double kendelkoef = 0;
double vvval = (4 * inversum) / (quantrow * secindex);
kendelkoef = 1 - vvval;
textBox4.Text = kendelkoef.ToString();
并且编译器看到的是 0.0 而不是 0.5(看图片)尝试这样写,vvval=Convert.ToDouble(выражние1/выражение2);
但是在调试时,它仍然只看到 0.0 而不是 0.5。
我决定在控制台中干净地解决这个时刻,结果是一样的(显示 0)
String.Format
也没有帮助。
有个方法是drawdifnet(wht,Nt)
这样画的
但问题是我希望它使用计时器输出每一行(如动画)
我尝试解决我的问题:
1)如果我这样做
timer1->Enabled = true;
timer1->Tick += gcnew EventHandler(drawdifnet(wht,Nt));
timer1->Start();
timer1->Stop();
然后一个错误
2) 我将我的参数添加到事件中,是的,它编译但不是每秒构建。这就是我的意思(我们drawdifnet
将方法的所有代码都扔到事件处理程序中Tick
)
private: System::Void timer1_Tick(System::Object^ sender, System::EventArgs^ e,double** wht,int Nt)
{
for (int j = 1; j < Nt - 1; j++)
{
for (int i = 1; i < Nt; i++)//Было Nx
{
chart2->Series["" + (j + 1).ToString()]->Points->AddXY(i, wht[j][i]);
}
}
在那之后,我已经在 main 方法中启动了计时器(但仍然没有任何东西是顺利和动画地构建的)
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e)
{
///---Остальные рабочие функции---///
timer1->Enabled = true;
timer1->Start();
}
更新! 在声明所有方法之前
int ik, jk;
更改勾号
private: System::Void timer1_Tick(System::Object^ sender, System::EventArgs^ e, double** wht, int Nt)
{
chart2->Series["" + (jk + 1).ToString()]->Points->AddXY(ik, wht[jk][ik]);
ik++;
if (ik == Nt)
{
ik = 1;
jk++;
if (jk == Nt - 1)
timer1->Stop();
}
}
拨电至Button_Click
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e)
{
///Остальной Код
ik = 1;
jk = 1;
timer1->Start();
}
但是现在它根本不绘制图形。
更新-1-05-2017
在搜索和阅读了一堆示例之后,结果如下
这是代码(感谢用户 Alexander Petrov)
private: System::Void timer1_Tick(System::Object^ sender, System::EventArgs^ e,int Nt,double** wht)
{
chart2->Series["" + (jk + 1).ToString()]->Points->AddXY(ik, wht[jk][ik]);
ik++;
if (ik == Nt)
{
ik = 1;
jk++;
if (jk == Nt - 1)
timer1->Stop();
}
}
我的变量jk,ik
是全局的,但Nt,wht[j][i]
不是,当我将它们添加为参数时
private: System::Void timer1_Tick(System::Object^ sender, System::EventArgs^ e,int Nt,double** wht)
然后我在这一行得到以下错误(在表单构造函数中)
this->timer1->Tick += gcnew System::EventHandler(this, &TransEquForm::timer1_Tick);
错误代码 C3352:
指定的函数与委托类型不匹配
在主按钮(所有内容所在的位置)中,我留下了这些行,因为根据互联网上的示例判断,timer-Enabled=true;
事件何时开始timer_Tick
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e)
{
timer1->Interval = 2000;
timer1->Enabled = true;
}
我需要获取一个的索引list<T>
。我知道有一种方法,IndexOf
但它不起作用(不显示索引)。首先,我创建一个新List<T>
的并将旧的值覆盖到其中,然后在循环中for
我已经遍历并List<T>
从每个元素中获取它的索引。但在实践中,结果完全不同。
List<double> arrY = new List<double>();//1-ый лист
foreach (DataGridViewRow row in dataGridView1.Rows)
arrY.Add(Convert.ToInt32(row.Cells[1].Value));
List<double> indY = new List<double>();//Создаю для копирования и взятие индексов
indY.AddRange(arrY);//Для начала записываю все элементы листа
//Здесь я предполагаю что пройдусь циклом и соберу все индексы и сразу выведу их в datagridView
for (int j = 0; j < dataGridView1.Rows.Count; j++)
{
indY.IndexOf(indY[j],0);//читаю с 1-ой позиции
dataGridView1[3, j].Value = indY[j];
}
迭代循环没有帮助,结果是相似的,显示的是数字而不是它们的索引。
更新了问题的内容,因为我自己理解并纠正了一些地方。因此有以下变量:
hx (шаг по пространству)= 0.1
ht (шаг по времени) = 0.5
Nx (Количество шагов по пространству) = 10;
Nt (Количество шагов по времени) = 12;
wx[i] - массив содержит все шаги по пространству
wt[j] - массив содержит все шаги по времени
wht[j][i]-двумерный массив по которому будет строится результирующий график;
于是发现了几个问题:
1)在代码中找到
for(int i = 0; i < Nx; i++)
{
wx[i+1] = wx[i] + hx; //массив
wht[0][i] = fn(T, i * hx); //i * hx//Исправлено.
}
它在哪里fn
:
//Функция Хэвисайда - Начальное условие(Граничное условие) а начальное 0-1
public:static double fn(int T, double x)
{
if (x >= 0)
return T;
else if(x < 0)
return 0;
}
我设置的初始条件不正确
就像图表上的酒一样,在耻辱中,一般解决方案“wave”在某处可见,但其余部分是错误的,因为我在代码中错误地设置了初始条件
2)循环和数组,即:
调用了数组中不存在的元素,结果出现了可怕的数字和图表中的跳跃,但我无法更改索引,因为存在特定的公式。
for(int j = 0;j<Nt;j++)
{
for(int i = 1;i<Nx-1;i++)///Исправлено с помощью ответа пользователя Denis Protopopov(и график немного изменился)
{
wht[j+1][i] =
((wht[j + 1][i] - wht[j][i]) / ht) + a * ((wht[j][i+1] - wht[j][i]) / hx);
wht[j+1][i] = -a * (ht * (wht[j][i+1] + wht[j][i]) / hx) + (wht[j][i]);
}
}
如果我写而不是i = 0
,i = 2
或j = 2
,那么图形的绘制将很糟糕。
所有代码:
public:static double qx0(double x)//ось пространства
{
if (x<=0)
return 0;
else
return x;
}
public:static double qt0(double t)//ось по времени
{
if (t<=0)
return 0;
else
return t;
}
public:static double fn(int T,double x)//Функция Хэвисайда - Начальное условие
{
if (x>=0)
return T;
else if(x<0)
return 0;
}
public: void drawfunc(double T)
{
double xmin = -5;
double xmax = 10;
for(double x = xmin;x<xmax;x+=0.01)
{
chart1->Series["Функция Хэвисайда"]->BorderWidth=3;
chart1->Series["Функция Хэвисайда"]->Points->AddXY(x,fn(T,x));
}
}
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e)
{
///-------Переменные для работы с разностными схемами
double a;//скорость переноса
double hx,ht;//шаги по пространству и времени
int Nx,Nt;//На сколько частей разбивае отрезок сетки
int T;//Входной параметр для искомой функции(Хэвисайд)
double wx[20]={0};//массив точек x
double wt[20]={0};//массив точек t
double wht[20][20]={0};// массив для разностной схемы(сетки)
//double res[20][20]={0};//результирующий массив
if(textBox1->Text!="" && textBox2->Text!="" && textBox3->Text!="" && textBox4->Text!="" && textBox5->Text!="" && textBox6->Text!="" && textBox6->Text!="")
{
///-----Ввод данных-----
a=Convert::ToDouble(textBox1->Text);
hx=Convert::ToDouble(textBox2->Text);
q=Convert::ToDouble(textBox3->Text);
ht=Convert::ToDouble(textBox4->Text);
Nx=Convert::ToInt32(textBox5->Text);
Nt=Convert::ToInt32(textBox6->Text);
T=Convert::ToInt32(textBox7->Text);
//----Построение сетки,узлов
for(int i = 0;i<Nx;i++)
{
wx[i+1]=wx[i]+hx;//массив
wht[0][i]=qx0(wx[i]);
}
for(int j = 0;j<Nt;j++) //
{
wt[j+1]=wt[j]+ht;
wht[j+1][0] = qt0(wt[j+1]);
}
///-----------------Вычисление основых формул с разностной схемой
for(int j = 0;j<Nt;j++)
{
for(int i = 1;i<Nx-1;i++)///Вывод формул wht[j+1][i]
{
wht[j+1][i]=((wht[j+1][i]-wht[j][i])/ht)+a*((wht[j][i+1]-wht[j][i])/hx);
wht[j+1][i]=-a*(ht*(wht[j][i+1] + wht[j][i])/hx) + (wht[j][i])+ht*fn(wt[j],hx);
}
}
//----Для записи в простой текстовый файл
String^ fileName = "results.txt";
StreamWriter^ sw = gcnew StreamWriter(fileName);
for(int j = 0;j<Nt;j++)
{
for(int i = 0 ;i<Nx;i++)
{
sw->Write("{0} ",wht[j][i]);
}
sw->WriteLine();
}
sw->Close();
//Тестовые функции для отображения
drawfunc(T);// Вызов функции для рисования
///---------------Построение графика
for(int j = 0;j<Nt;j++)
{
for(int i = 0;i<Nx-1;i++)
{
chart2->Series["Series2"]->BorderWidth=3;
chart2->Series["Series2"]->Points->AddXY(i,wht[j][i]);
}
}
}
else MessageBox::Show("Ошибка!Не все поля заполнены!");
}
情况是
有些方法中 T 是从键盘输入的输入参数(例如,T=4)
public:static double fn(double T,double x)
{
if (x>=0)
return T;
else if(x<0)
return 0;
}
public: void drawfunc(double T)
{
double xmin = -5;
double xmax = 10;
for(double x = xmin;x<xmax;x+=0.01)
{
chart1->Series["Series1"]->Points->AddXY(x,fn(T,x));
}
}
他们绘制了这个函数图
但是该方法必须有一个参数并且绘制方式与使用 2 个参数相同。但是,如果我使用一个参数,我将第二个参数设为局部变量。
public:static double heviside(double T)
{
double x=0;
if ( x>=0)
return T;
else if(x<0)
return 0;
}
public:void draw(double U,double T)
{
double xmin=-5;
double xmax=10;
for(double x=xmin;x<xmax;x+=0.01)
chart1->Series["Line"]->Points->AddXY(x,heviside(T));
}
问题!
如何使函数绘制第一个图形但使用第一个函数参数 fn(double T)?
ListView能否将值填充到行而不是列中?
情况如下:我需要填写如图所示的值:
例如,初始条件为0.01,它以边界1.1结束,这里是我的i1,i2,i3,i4,我需要填写字符串中的值(从初始到最终)。
我已经知道如何通过循环添加列:
int kolst =10;
listView1->Columns->Add("Начальные условия", -2, HorizontalAlignment::Right);
for(int i = 1;i<kolst+1;i++)
{
listView1->Columns->Add("i + " + i, -2, HorizontalAlignment::Left);//Нумерация столбцов
}
listView1->Columns->Add("Граничные условия", -2, HorizontalAlignment::Left);
但是如何精确地按行填写值并不清楚。我根据需要填写了初始条件和边界条件及其表达式,它只是将数组中的表达式填入一行,而不是填入列(i1,i2,i3,i4)。即在每个i1,i2下,我应该有一个数组值。如何才能做到这一点?
我尝试做的是:我在循环中进行了替换Items.Add,Columns.Add
,但未显示该行。
给定这个函数,它返回一个随机数(有效)
function montekarlo(diap1: double; diap2: double): double;
var
Xx: array of double;
i, j, l,k: integer;//количество итераций
min: double;
begin
randomize;
l := PABCSystem.Random(7) + 5;
Xx := new double[l];
for i := 0 to l - 1 do
begin
Xx[i] := PABCSystem.Random * diap2 + diap1;
end;
min := Xx[1];
for i := 2 to l - 1 do
begin
if Xx[i] < min then min := Xx[i];
end;
min := Xx[i];
montekarlo := min;
end;
问题是它显示相同的值。如何让它在新通话中更改号码?
该图清楚地显示了问题,即数字显示但相同(顶部除外,因为它是从键盘设置的)。
我怎样才能确保数字不一样?
我绘制元素本身并以这种方式调用函数(有几条这样的线,只是坐标不同)
gr.DrawString(montekarlo(diap1, diap2).ToString('N2'), new System.Drawing.Font('Times New Roman', 10, System.Drawing.FontStyle.Regular), System.Drawing.Brushes.Black, 440, 90);
我尝试使用一个循环来设置迭代次数,但它再次在所有地方输出相同的内容。
PS 问题为什么是 Pascal ABC.NET,而不是 C、C++、C#,请不要问。在这个任务中,你需要用 Pascal ABC .NET 编写一个程序。
我使用公式计算出现字符的频率
(出现的字符数/行长度)*100
由于某种原因,它输出 0。
频率变量本身就是double格式,如果是int,当然就很清楚为什么是0了。
但事实是,即使使用断点和逐步调试,编译器也会写入 0.000000。
void calculate_symb(FILE *fd)
{
int max=0;
fd=fopen("test.dat","rb");
if (!fd)
printf("Ошибка!Файл не найден!\n");
else
{
fseek(fd,0L,SEEK_END);
long fsize=ftell(fd);
int n=fsize;
cout<<"Количество символов в файле = "<<fsize<<endl;
char* symv = new char[n];
symv[n+1]='\0';
fseek(fd,0L,SEEK_SET);
cout<<"Вывод содержимого двоичного файла:"<<endl;
for(int i = 0; i<n; i++)
{
fread(symv, sizeof(char), n, fd);
cout << symv[i];
}
fclose(fd);
cout<<endl;
int l=strlen(symv);
cout<<"Повторяющиеся символы:"<<endl;
for(int x = 0; x<l-1; x++)
{
bool flag = true;
if(isalnum(symv[x]))
for(int y = x-1; y>=0 && flag; y--)
if(symv[x] == symv[y])
flag = false;
if(flag&&isalnum(symv[x]))
cout<<"\""<<symv[x]<<"\""<<" -> "<<count(symv,symv+l,symv[x])<<endl;///Здесь выводится количество встречающихся символов
double frequency = (count(symv,symv+l,symv[x])/l)*100;///---Здесь пытаюсь подсчитать частоту,формула.
cout<<"Частота символа = "<<frequency<<endl;
}
}
}
我正在编写一个程序,用于计算二进制文件中的字符数。它计算字符数,显示它们,但是在计算之后,程序没有完成,而是弹出了这样的异常。
它不指向我的代码,它指向文件 istype.c 我进去看了看第 68 行
_ASSERTE(c >= -1 && c <= 255);
我相信我错过了某种编码,因为如果我的代码被诅咒,那么一切都会指向它。
调试器正确显示了所有需要的值。
部分代码(此处显示重复字符数)
void calculate_symb(FILE* fd)
{
int max = 0;
fd = fopen("test.dat", "rb");
if (!fd)
printf("Ошибка!Файл не найден!\n");
else
{
fseek(fd, 0L, SEEK_END);
long fsize = ftell(fd);
int n = fsize;
cout << "Количество символов в файле = " << fsize << endl;
char* symv = new char[n];
fseek(fd, 0L, SEEK_SET);
cout << "Вывод содержимого двоичного файла:" << endl;
for (int i = 0; i < n; i++)
{
fread(symv, sizeof(char), n, fd);
cout << symv[i];
}
fclose(fd);
cout << endl;
cout << "Повторяющиеся символы" << endl;
for (int x = 0; x < 255; x++)
{
bool flag = true;
if (isalnum(symv[x]))
for (int y = x - 1; y >= 0 && flag; y--)
if (symv[x] == symv[y])
flag = false;
if (flag && isalnum(symv[x]))
cout << "\"" << symv[x] << "\"" << " -> " << count(symv, symv + 255,
symv[x]) << endl;
}
}
}
开始学习 Scala 编程语言
我从他们的网站下载了语言解释器。
但与此同时,问题出现了,我可以在Scala中编写小应用程序的软件环境名称是什么?
在急躁的 Scala 书中,只说了解释器本身,却只字未提开发环境。
http://horstmann.com/scala/install/ - 这里描述了安装方法,我安装了我现在有文档的链接。
但是我看不到应用程序本身从哪里开始编写。