protected:
HICON m_hIcon;
int *pInt; //Динамический массив
int IntNum; // Счетчик в операторах циклов для обработки масства
Помогите. Warning при компиляции, виснет программа при запуске.
Мне нужно создать программу для быстрого последовательного поиска.
Суть метода:
Cоздаётся фиктивная запись в конце файла (A [ N+1] ) равная искомому элементу. Последовательно перебираются все элементы массива, если на каком-то шаге цикла обнаруживается, что искомый элемент найден, то происходит выход из цикла, и переход к условию i < N+1. Если условие выполняется , то искомый элемент присутствует в массиве, иначе элемента нет.
Файлы самой программы
http://narod.ru/disk/30758019001/search.rar.html
Header (searchDlg.h) программы
Код:
В программе 3 кнопки
1) Кнопка Сгенерировать массив (ошибка в D:\УГАТУ\2 курс\МП и ПА\курсач\Создание\search\searchDlg.cpp(221) : warning C4018: '<' : signed/unsigned mismatch , 21 строка)
Код:
//получаем введенное пользователем имя файла в переменную m_FileName
UpdateData(1);
//если пользователь не ввел имя файла,
//то присваиваем переменной m_FileName значение по умолчанию
if (m_FileName.IsEmpty()) m_FileName = "Поиск";
CStdioFile m_File; //создаем объект класса CStdioFile
// если возникла ошибка открытия файла, то об этом будет сообщено
// пользователю и завершено выполнение функции
if ( !m_File.Open(m_FileName+CString(".txt"),
CFile::modeCreate | CFile::modeWrite | CFile::typeText) )
{MessageBox("(!) Ошибка открытия файла", "Информация", MB_ICONEXCLAMATION);
return;
}
CString str;
// в цикле генерируем m_NUM псевдослучайных чисел, максимальное
// значение генерируемого числа также равно m_NUM
for (int n=0; n < m_NUM; n++)
{ // генерируем псевдослучайное число, конвертируем его в строку,
// помещаем в переменную str
str.Format("%i\n", m_NUM * rand());
m_File.WriteString(str); // записываем переменную str в файл
}
// удаляем и обнуляем результаты предыдущих чтений из файла и
// сортировок
m_DATABOX.ResetContent();
// очищаем поле вывода времени поиска
m_SEARCHTIME.Empty();
// выводим в элементы диалога приложения значения по умолчанию,
// содержащиеся в связанных с ними переменных
UpdateData(0);
//закрываем файл, сообщаем об успешной генерации последовательности чисел
m_File.Close();
MessageBox("Файл сгенерирован успешно.", "Информация", MB_ICONINFORMATION);
UpdateData(1);
//если пользователь не ввел имя файла,
//то присваиваем переменной m_FileName значение по умолчанию
if (m_FileName.IsEmpty()) m_FileName = "Поиск";
CStdioFile m_File; //создаем объект класса CStdioFile
// если возникла ошибка открытия файла, то об этом будет сообщено
// пользователю и завершено выполнение функции
if ( !m_File.Open(m_FileName+CString(".txt"),
CFile::modeCreate | CFile::modeWrite | CFile::typeText) )
{MessageBox("(!) Ошибка открытия файла", "Информация", MB_ICONEXCLAMATION);
return;
}
CString str;
// в цикле генерируем m_NUM псевдослучайных чисел, максимальное
// значение генерируемого числа также равно m_NUM
for (int n=0; n < m_NUM; n++)
{ // генерируем псевдослучайное число, конвертируем его в строку,
// помещаем в переменную str
str.Format("%i\n", m_NUM * rand());
m_File.WriteString(str); // записываем переменную str в файл
}
// удаляем и обнуляем результаты предыдущих чтений из файла и
// сортировок
m_DATABOX.ResetContent();
// очищаем поле вывода времени поиска
m_SEARCHTIME.Empty();
// выводим в элементы диалога приложения значения по умолчанию,
// содержащиеся в связанных с ними переменных
UpdateData(0);
//закрываем файл, сообщаем об успешной генерации последовательности чисел
m_File.Close();
MessageBox("Файл сгенерирован успешно.", "Информация", MB_ICONINFORMATION);
2) и еще ошибка на кнопке поиск (при ее нажатии программа зависает)
D:\УГАТУ\2 курс\МП и ПА\курсач\Создание\search\searchDlg.cpp(313) : warning C4018: '!=' : signed/unsigned mismatch , 12 строка
D:\УГАТУ\2 курс\МП и ПА\курсач\Создание\search\searchDlg.cpp(315) : warning C4018: '<' : signed/unsigned mismatch 17 строка
Код:
if ((pInt == NULL)||(IntNum<1))
{MessageBox("Искать нечего","Информация", MB_ICONINFORMATION);
return;
};
int i=1;
// Фиктивную запись массива приравниваем к искомому элементу
pInt[m_NUM+1]=m_search;
//Ищем искомую запись
while (pInt != m_search);
i++;
/* Когда нашли запись (а найдем мы ее во всяком случае, так как прировняли к фиктивной записи
m_NUM+1 смотрим условие, если искомый элемент найден в нашем массиве, то УСПЕШНО, если же
найден в фиктивной записи то НЕ УСПЕШНО) */
if (m_NUM < IntNum+1) MessageBox("(!) Файл найден", "Информация", MB_ICONEXCLAMATION);
MessageBox("(!) Файл не найден", "Информация", MB_ICONEXCLAMATION);
{MessageBox("Искать нечего","Информация", MB_ICONINFORMATION);
return;
};
int i=1;
// Фиктивную запись массива приравниваем к искомому элементу
pInt[m_NUM+1]=m_search;
//Ищем искомую запись
while (pInt != m_search);
i++;
/* Когда нашли запись (а найдем мы ее во всяком случае, так как прировняли к фиктивной записи
m_NUM+1 смотрим условие, если искомый элемент найден в нашем массиве, то УСПЕШНО, если же
найден в фиктивной записи то НЕ УСПЕШНО) */
if (m_NUM < IntNum+1) MessageBox("(!) Файл найден", "Информация", MB_ICONEXCLAMATION);
MessageBox("(!) Файл не найден", "Информация", MB_ICONEXCLAMATION);
ЗЫ: на ворнинги можно забить или поставить везде unsigned int i = ...