Невозможно найти или открыть файл PDB - C (СИ)
Формулировка задачи:
Написал программу на языке си.
Выдал скомпилировалось и .exe запустился но с ошибкой и выдало
#include <stdio.h>
#include <stdlib.h>
#define BOOL int
#define FALSE 0
#define TRUE 1
int n;
int* elems;
BOOL CheckedLeksic(int k,int n,int* elem)
{
int index = 0,i;
BOOL flag = FALSE;
for (i = 0;i<k;i++)
{
if (elem[k] == 0 || k == n)
{
flag = TRUE;
}
else
{
return FALSE;
}
if (elem[i] != 0)
{
index++;
}
else
{
return FALSE;
}
}
if (index == k && flag)
{
return TRUE;
}
else
{
return FALSE;
}
}
void Initialize(int size)
{
int i;
n = size;
elems = (int*)malloc(n*sizeof(int));
for (i = 0;i<n;i++)
{
elems[i] = 0;
}
elems[0] = 1;
}
BOOL Print ()
{
int i;
for ( i = 0;i<n;i++)
{
if (elems[0] == n && elems[1] == 0)
{
printf_s("%s","The End");
return FALSE;
}
else if (elems[i]!=n && elems[i+1] == 0)
{
elems[i+1] = elems[i]+1;
return TRUE;
}
else if (elems[i]==n)
{
elems[i-1]++;
elems[i] = 0;
return TRUE;
}
}
return FALSE;
}
int main()
{
BOOL flag;
int n,k,i;
do
{
printf_s("%s", "Max number(n): ");
scanf_s("%d", &n);
printf_s("%s", "Number of items(k): ");
scanf_s("%d", &k);
if (n>7 || k>7)
{
printf_s("%s\n", "Error! Can not be greater than 7");
}
} while (n>7 || k>7);
Initialize(n);
printf_s("Output:\n");
do
{
flag = FALSE;
if (CheckedLeksic(k,n,elems))
{
for (i = 0;i<n && elems[i] != 0 ;i++)
{
printf_s("%d",elems[i]);
flag = TRUE;
}
}
if (flag)
{
printf_s("\n");
}
}
while( Print() );
while(TRUE);
return 0;
}
"b.exe": Загружено: "C:\Windows\SysWOW64\ntdll.dll", Невозможно найти или открыть файл PDB
"b.exe": Загружено: "C:\Windows\SysWOW64\kernel32.dll", Невозможно найти или открыть файл PDB
"b.exe": Загружено: "C:\Windows\SysWOW64\KernelBase.dll", Невозможно найти или открыть файл PDB
"b.exe": Загружено: "C:\Windows\SysWOW64\msvcr100d.dll", Символы загружены.
"b.exe": Загружено: "C:\Windows\SysWOW64\guard32.dll", Невозможно найти или открыть файл PDB
"b.exe": Загружено: "C:\Windows\SysWOW64\user32.dll", Невозможно найти или открыть файл PDB
"b.exe": Загружено: "C:\Windows\SysWOW64\gdi32.dll", Невозможно найти или открыть файл PDB
"b.exe": Загружено: "C:\Windows\SysWOW64\lpk.dll", Невозможно найти или открыть файл PDB
"b.exe": Загружено: "C:\Windows\SysWOW64\usp10.dll", Невозможно найти или открыть файл PDB
"b.exe": Загружено: "C:\Windows\SysWOW64\msvcrt.dll", Невозможно найти или открыть файл PDB
"b.exe": Загружено: "C:\Windows\SysWOW64\advapi32.dll", Невозможно найти или открыть файл PDB
"b.exe": Загружено: "C:\Windows\SysWOW64\sechost.dll", Невозможно найти или открыть файл PDB
"b.exe": Загружено: "C:\Windows\SysWOW64\rpcrt4.dll", Невозможно найти или открыть файл PDB
"b.exe": Загружено: "C:\Windows\SysWOW64\sspicli.dll", Невозможно найти или открыть файл PDB
"b.exe": Загружено: "C:\Windows\SysWOW64\cryptbase.dll", Невозможно найти или открыть файл PDB
"b.exe": Загружено: "C:\Windows\SysWOW64\version.dll", Невозможно найти или открыть файл PDB
"b.exe": Загружено: "C:\Windows\SysWOW64\imm32.dll", Невозможно найти или открыть файл PDB
"b.exe": Загружено: "C:\Windows\SysWOW64\msctf.dll", Невозможно найти или открыть файл PDB
"b.exe": Загружено: "C:\Windows\SysWOW64\fltLib.dll", Невозможно найти или открыть файл PDB
Поток 'Поток Win32' (0x13b0) завершился с кодом -1073741510 (0xc000013a).
Программа "[3884] b.exe: Машинный код" завершилась с кодом -1073741510 (0xc000013a).
Решение задачи: «Невозможно найти или открыть файл PDB»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#define BOOL int
#define FALSE 0
#define TRUE 1
int n;
int* elems;
BOOL CheckedLeksic(int k,int n,int* elem)
{
int index = 0,i;
BOOL flag = FALSE;
for (i = 0;i<k;i++)
{
if (elem[k] == 0 || k == n)
{
flag = TRUE;
}
else
{
return FALSE;
}
if (elem[i] != 0)
{
index++;
}
else
{
return FALSE;
}
}
if (index == k && flag)
{
return TRUE;
}
else
{
return FALSE;
}
}
void Initialize(int size)
{
int i;
n = size;
elems = (int*)malloc(n*sizeof(int));
for (i = 0;i<n;i++)
{
elems[i] = 0;
}
elems[0] = 1;
}
BOOL Print ()
{
int i;
for ( i = 0;i<n;i++)
{
if (elems[0] == n && elems[1] == 0)
{
printf_s("%s","The End");
return FALSE;
}
else if (elems[i]!=n && elems[i+1] == 0)
{
elems[i+1] = elems[i]+1;
return TRUE;
}
else if (elems[i]==n)
{
elems[i-1]++;
elems[i] = 0;
return TRUE;
}
}
return FALSE;
}
int main()
{
BOOL flag;
int n,k,i;
do
{
printf_s("%s", "Max number(n): ");
scanf_s("%d", &n);
printf_s("%s", "Number of items(k): ");
scanf_s("%d", &k);
if (n>7 || k>7)
{
printf_s("%s\n", "Error! Can not be greater than 7");
}
} while (n>7 || k>7);
Initialize(n);
printf_s("Output:\n");
do
{
flag = FALSE;
if (CheckedLeksic(k,n,elems))
{
for (i = 0;i<n && elems[i] != 0 ;i++)
{
printf_s("%d",elems[i]);
flag = TRUE;
}
}
if (flag)
{
printf_s("\n");
}
}
while( Print() );
while(TRUE);
return 0;
}
Объяснение кода листинга программы
- Переменная
nинициализируется значением, введенным пользователем, и используется для определения размера массиваelems. - Функция
CheckedLeksicпринимает три аргумента:k,nиelem. k- количество элементов для проверки на корректность.n- размер массиваelems.elem- указатель на массивelems.- Функция
Initializeинициализирует массивelemsи устанавливает его размер вn. - В функции
Printпроисходит печать элементов массиваelems. - Если
elems[0]равноnиelems[1]равно0, то выводится сообщениеThe End. - Если
elems[i]не равноnиelems[i+1]равно0, тоelems[i+1]присваивается значениеelems[i]+1, а затем возвращаетсяTRUE. - Если
elems[i]равноn, тоelems[i-1]увеличивается на единицу,elems[i]устанавливается равным0, и возвращаетсяTRUE. - В основной функции
mainпроисходит итеративный ввод значенийnиkдо тех пор, пока они не будут введены корректно. - Затем вызывается функция
Initializeдля инициализации массиваelems. - Далее происходит итеративный вывод элементов массива
elemsдо тех пор, пока не будет достигнуто условие выхода из цикла.