Невозможно найти или открыть файл 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
до тех пор, пока не будет достигнуто условие выхода из цикла.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д