- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试使用 Xcode 在 C 上运行以下代码,它返回了一个我无法弄清楚的错误,有什么线索吗?下面是代码和 Xcode 屏幕的打印。
它主要运行代码,直到我选择它应该删除的重复条目数。
#include<stdio.h>
#include <stdlib.h>
//#include<stdlib.h>
#include<math.h>
#include <string.h>
#include <stdbool.h>
#define TRUE 1
#define FALSE 0
int combinacoes(int n, int r);
void filtro_75_5();
void filtro_60_6();
void filtro_49_7();
void filtro_60_8();
void filtro_60_9();
void filtro_geral();
int** Filtro;
int npainel;
int ndezenas;
int* dezenas;
int** Base = 0;
bool verificaRepeticoes = true;
int total_registros;
int repeticao = 0;
int total_registros_r = 0;
FILE *f;
int main()
{
printf("Digite o Painel: ");
scanf("%d",&npainel);
printf("Digite a Dezena: ");
scanf("%d",&ndezenas);
int resultado;
resultado = combinacoes(npainel,ndezenas);
printf("%d",resultado);
int iniciar;
printf("\nDeseja gerar as combinacoes [1] Sim [2] Nao");
scanf("%d", &iniciar);
int usaragrupamento;
printf("\nUsar agrupamento de Dezenas [1] Sim [2] Nao]");
scanf("%d", &usaragrupamento);
int filt_repeticoes;
printf("\nUsar filtro de Qtd de repeticoes no Total de:");
scanf("%d", &filt_repeticoes);
if (iniciar ==1)
{
f = fopen( "/Volumes/BANCO/combinacoes.txt" , "w" );
int rows = 2;
int cols = 5;
int** Filtro = calloc(rows, sizeof *Filtro); // I prefer calloc unless i really am reallocating
for (int i = 0 ; i < rows ; ++i)
{
Filtro[i] = calloc(cols, sizeof **Filtro);
}
for (int i = 0 ; i < rows ; ++i)
{
free(Filtro[i]);
}
free(Filtro);
/*redim dezenas(ndezenas-1) //Vetor de cada dezena do conjunto*/
dezenas = (int *)realloc(dezenas, (ndezenas-1) * sizeof(int *));
/*redim Base(-1,-1)*/
Base = (int **) realloc(Base,(-1) * sizeof(*Base));
/*redim Base(1000,ndezenas-1)*/
Base = (int **) realloc(Base,(1000) * sizeof(*Base));
if (usaragrupamento == 1)
{
switch(ndezenas){
case 5:
filtro_75_5();
break;
case 6:
filtro_60_6();
break;
case 7:
filtro_49_7();
break;
case 8:
filtro_60_8();
break;
case 9:
filtro_60_9();
break;
}
}else{
filtro_geral();
}
}
return 0;
}
int combinacoes(int n, int r)
{
int combinacao;
//combinacao = 0;
if (n<1 || r <1)
{
combinacao = 0;
}else{
double u;
double v;
int w;
int t;
u=1;
t=1;
//for(t=1;u=u*t;
while(t<=n)
{
u=u*t;
t++;
}
//calcula o fatorial de n(!n)
v= 1;
t= 1;
if(n>r)
{
while(t<=n-r)
{
v = v*t;
t++;
}
}
w = 1;
t = 1;
//Calcula Fatorial de n-r (n-r)!
while(t<=r)
{
w=w*t;
t++;
}
combinacao = round(u/(v*w));
return combinacao;
}
return combinacao;
}
void filtro_49_7()
{
Filtro[0][0]=1;
Filtro[0][1]=7;
Filtro[1][0]=8;
Filtro[1][1]=14;
Filtro[2][0]=15;
Filtro[2][1]=21;
Filtro[3][0]=22;
Filtro[3][1]=28;
Filtro[4][0]=29;
Filtro[4][1]=35;
Filtro[5][0]=36;
Filtro[5][1]=42;
Filtro[6][0]=43;
Filtro[6][1]=49;
}
void filtro_60_6(){
Filtro[0][0]=1;
Filtro[0][1]=30;
Filtro[1][0]=1;
Filtro[1][1]=30;
Filtro[2][0]=1;
Filtro[2][1]=30;
Filtro[3][0]=31;
Filtro[3][1]=60;
Filtro[4][0]=31;
Filtro[4][1]=60;
Filtro[5][0]=31;
Filtro[5][1]=60;
}
void filtro_60_8(){
Filtro[0][0]=1;
Filtro[0][1]=15;
Filtro[1][0]=1;
Filtro[1][1]=15;
Filtro[2][0]=16;
Filtro[2][1]=30;
Filtro[3][0]=16;
Filtro[3][1]=30;
Filtro[4][0]=31;
Filtro[4][1]=45;
Filtro[5][0]=31;
Filtro[5][1]=45;
Filtro[6][0]=46;
Filtro[6][1]=60;
Filtro[7][0]=46;
Filtro[7][1]=60;
}
void filtro_60_9(){
Filtro[0][0]=1;
Filtro[0][1]=20;
Filtro[1][0]=1;
Filtro[1][1]=20;
Filtro[2][0]=1;
Filtro[2][1]=20;
Filtro[3][0]=21;
Filtro[3][1]=40;
Filtro[4][0]=21;
Filtro[4][1]=40;
Filtro[5][0]=21;
Filtro[5][1]=40;
Filtro[6][0]=41;
Filtro[6][1]=60;
Filtro[7][0]=41;
Filtro[7][1]=60;
Filtro[8][0]=41;
Filtro[8][1]=60;
}
void filtro_75_5(){
Filtro[0][0]=1;
Filtro[0][1]=15;
Filtro[1][0]=16;
Filtro[1][1]=30;
Filtro[2][0]=31;
Filtro[2][1]=45;
Filtro[3][0]=46;
Filtro[3][1]=60;
Filtro[4][0]=61;
Filtro[4][1]=75;
}
void filtro_geral()
{
int x;
int n;
int r;
r=ndezenas;
n=npainel;
x=1;
while(x<=r-1)
{
Filtro[x][0]=1;
Filtro[x][1]=n;
x++;
}
}
void gerar_dezenas(int npainel, int ndezenas, int inicio,int termino, int nivel)
{
int w,unidade, xx,igual;
char *sszero = NULL;//, sgeral[1];
char *sgeral = NULL;
bool duplicou = false;
unidade = inicio;
while(unidade<=termino+nivel)
{
if (unidade>=Filtro[nivel-1][0] && unidade<=Filtro[nivel-1][1])
{
dezenas[nivel-1] = unidade;
if (nivel<ndezenas)
{
gerar_dezenas(npainel,ndezenas,unidade+1,npainel-ndezenas,nivel+1);
}else{
sgeral = (char *)realloc(sgeral, 1 * sizeof(char *));
//sgeral[0] = '';
duplicou=false;
//xojo
if (verificaRepeticoes ==true){
xx = total_registros-1;
while(xx>=1)
{
igual =0;
w=0;
while(w<ndezenas-1)
{
if(Base[xx][w] == dezenas[w])
{
igual=igual+1;
}
w++;
}
if (igual>(ndezenas-repeticao))
{
duplicou = true;
return;
}
xx--;
}
}
//////Adiciona um conjunto a Base
if (duplicou==false || total_registros==0){
w = 0;
while (w < ndezenas-1){
if (dezenas[w]<10){
sszero = (char *)realloc(sszero, 2 * sizeof(char *));
sszero[0]='0';
}
/*else{
sszero = (char *)realloc(sszero, 1 * sizeof(char *));
sszero[0]="";
}*/
/////So alimenta vetor se for para verificar repeticoes
if (verificaRepeticoes==true){
Base[total_registros][w]=dezenas[w];
}
int tam_sgeral = sizeof(sgeral);
sgeral = (char *)realloc(sgeral, (sizeof(sgeral) + sizeof(sszero) + sizeof(dezenas[w]))* sizeof(char *));
int z;
z=0;
while(z<sizeof(sszero))
{
sgeral[tam_sgeral+z] = sszero[z];
}
tam_sgeral = tam_sgeral + z;
z=0;
char str[2];
sprintf(str, "%d", dezenas[w]);
while(z<sizeof(dezenas[w]))
{
sgeral[tam_sgeral+z] = str[z];
//strcpy(sgeral[tam_sgeral+z],str[z]);
}
w++;
}
total_registros=total_registros+1;
//int** Base2;
if (total_registros % 1000 == 0)
{
Base = (int **) realloc(Base,(total_registros+1000) * sizeof(*Base)); //Vetor total com os conjuntos de combinacoes
/*TfGerados.text=str(total_registros);
TfGerados.refresh;*/
printf("%s",&"Gerados: " [ total_registros]);
}
if (f != NULL)
{
printf("Teste");
fwrite(sgeral , 1 , sizeof(sgeral) , f);
}
}
else{
total_registros_r=total_registros_r+1;
if (total_registros_r % 10000 == 0){
printf("%s", &"Jogados Fora: " [ total_registros_r]);
/*TfJogadosFora.text=str(total_registros_r);
TfJogadosFora.refresh*/
}
}
}
}
else{
total_registros_r=total_registros_r+1;
if (total_registros_r % 10000 == 0){
printf("%s", &"Jogados Fora: " [ total_registros_r]);
/*TfJogadosFora.text=str(total_registros_r)
TfJogadosFora.refresh*/
}
}
}
}
最佳答案
变量 Filtro
未正确初始化。 Filtro
是一个指向 int 的指针 block ,但在 realloc 之后所有这些指针都悬空了。一旦您为 Filtro
分配了一些内存,您必须遍历 Filtro
中的每个元素并分配空间来保存整数。
这就是您假设 ndezenas-1
为 2 的情况。
Filtro -->+-----+
| int*|---> ???
+-----+
| int*|---> ???
+-----+
这就是你想要的
Filtro -->+-----+ +------------
| int*|---> |int|int|int| .... etc
+-----+ +------------
| int*|-+
+-----+ | +------------
+-> |int|int|int| .... etc
+------------
这是一个如何做到这一点的例子
int rows = 2;
int cols = 5;
int** filtro = calloc(rows, sizeof *filtro); // I prefer calloc unless i really am reallocating
for (int i = 0 ; i < rows ; ++i)
{
filtro[i] = calloc(cols, sizeof **filtro);
}
最后还要释放内存
for (int i = 0 ; i < rows ; ++i)
{
free(filtro[i]);
}
free(filtro);
编辑
我的例子只是一个例子。您不应该逐字复制它。
现在最大的问题是您现在已经两次声明 Filtro,一次作为全局变量,一次作为 main 的局部变量。这意味着全局版本永远不会获得分配给它的任何内存。执行 calloc 时无需重新声明 Filtro。
filtro = calloc(rows, sizeof *filtro);
第二个大问题是您要立即释放内存。在您使用完它之前,您不会这样做。
关于c - Xcode 返回 (lldb),同时运行 C 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32527524/
#include using namespace std; class C{ private: int value; public: C(){ value = 0;
这个问题已经有答案了: What is the difference between char a[] = ?string?; and char *p = ?string?;? (8 个回答) 已关闭
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 7 年前。 此帖子已于 8 个月
除了调试之外,是否有任何针对 c、c++ 或 c# 的测试工具,其工作原理类似于将独立函数复制粘贴到某个文本框,然后在其他文本框中输入参数? 最佳答案 也许您会考虑单元测试。我推荐你谷歌测试和谷歌模拟
我想在第二台显示器中移动一个窗口 (HWND)。问题是我尝试了很多方法,例如将分辨率加倍或输入负值,但它永远无法将窗口放在我的第二台显示器上。 关于如何在 C/C++/c# 中执行此操作的任何线索 最
我正在寻找 C/C++/C## 中不同类型 DES 的现有实现。我的运行平台是Windows XP/Vista/7。 我正在尝试编写一个 C# 程序,它将使用 DES 算法进行加密和解密。我需要一些实
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
有没有办法强制将另一个 窗口置于顶部? 不是应用程序的窗口,而是另一个已经在系统上运行的窗口。 (Windows, C/C++/C#) 最佳答案 SetWindowPos(that_window_ha
假设您可以在 C/C++ 或 Csharp 之间做出选择,并且您打算在 Windows 和 Linux 服务器上运行同一服务器的多个实例,那么构建套接字服务器应用程序的最明智选择是什么? 最佳答案 如
你们能告诉我它们之间的区别吗? 顺便问一下,有什么叫C++库或C库的吗? 最佳答案 C++ 标准库 和 C 标准库 是 C++ 和 C 标准定义的库,提供给 C++ 和 C 程序使用。那是那些词的共同
下面的测试代码,我将输出信息放在注释中。我使用的是 gcc 4.8.5 和 Centos 7.2。 #include #include class C { public:
很难说出这里问的是什么。这个问题是含糊的、模糊的、不完整的、过于宽泛的或修辞性的,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开它,visit the help center 。 已关
我的客户将使用名为 annoucement 的结构/类与客户通信。我想我会用 C++ 编写服务器。会有很多不同的类继承annoucement。我的问题是通过网络将这些类发送给客户端 我想也许我应该使用
我在 C# 中有以下函数: public Matrix ConcatDescriptors(IList> descriptors) { int cols = descriptors[0].Co
我有一个项目要编写一个函数来对某些数据执行某些操作。我可以用 C/C++ 编写代码,但我不想与雇主共享该函数的代码。相反,我只想让他有权在他自己的代码中调用该函数。是否可以?我想到了这两种方法 - 在
我使用的是编写糟糕的第 3 方 (C/C++) Api。我从托管代码(C++/CLI)中使用它。有时会出现“访问冲突错误”。这使整个应用程序崩溃。我知道我无法处理这些错误[如果指针访问非法内存位置等,
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 7 年前。
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于 Stack Overflow 来说是偏离主题的,因为
我有一些 C 代码,将使用 P/Invoke 从 C# 调用。我正在尝试为这个 C 函数定义一个 C# 等效项。 SomeData* DoSomething(); struct SomeData {
这个问题已经有答案了: Why are these constructs using pre and post-increment undefined behavior? (14 个回答) 已关闭 6
我是一名优秀的程序员,十分优秀!