Установка Visual Studio 2010 - ошибка с подключением math.h - C (СИ)
Формулировка задачи:
Доброе утро!
Установил Visual Studio 2010 - не работает, выдаёт кучу ошибок типа:
Что самое обидное, я не использую в программе этот заголовочный файл!!!
Подскажите, пожалуйста, что делать с этим!
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(39): error C2061: синтаксическая ошибка: идентификатор "asin"
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(39): error C2059: синтаксическая ошибка: ;
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(40): error C2061: синтаксическая ошибка: идентификатор "atan"
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(40): error C2059: синтаксическая ошибка: ;
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(40): error C2061: синтаксическая ошибка: идентификатор "atan2"
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(40): error C2059: синтаксическая ошибка: ;
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(40): error C2061: синтаксическая ошибка: идентификатор "ceil"
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(40): error C2059: синтаксическая ошибка: ;
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(41): error C2061: синтаксическая ошибка: идентификатор "cos"
P.S.
Как вариант, подскажите, пожалуйста хоть одну человеческую программу-компилятор!!! Это уже просто задолбало - я пытался установить Visual Studio 2015 (3 раза, сначала требовало установить обновление для Internet Explorer!!!, затем просто установка зависала). Затем пробовал поставить 2013 - те же яйца, только сбоку. Установил 2010 - блин, и это ВЦ не работает!!! Microsoft вообще может сделать хоть один нормально работающий продукт?!? Блин, я понимаю, что я сейчас похож на ламера, но блин!!!! Почему проги из пакета просто не могут по-человечески запуститься?!?P.P.S.
Как вариант, подскажите, пожалуйста нормальный онлайн-компилятор. Все что я находил также несут какую-то ахинею про то, что у них отсутствуют стандартные библиотеки: conio.h: No such file or directory Вот такого типа. Подскажите хоть что-то, пожалуйста - я уже просто не знаю, что ещё можно делать - если с языком у меня вполне получилось разобраться, то что делать с компилятором - я уже просто не знаю.P.P.P.S.
Извиняюсь за чрезмерную экспрессию - уже три дня не могу поставить программу, сегодня вообще из-за неё спать не ложился. Уже близок к тому, чтобы начать крушить всё что можно =(((
Да, вот, собственно, код программы:
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <conio.h> #include <iostream> #include <windows.h> #define ADRESS C:\\Users\\Андрей\\Desktop\\test.txt char* file_download(); char* toLowerCaseAll(char* arr); uzel* new_tree(char *arr); char* word_to_bin(char *buff); int search_in_bin(uzel *perv, char *bin); char* perevorot(char* arr); char* word_to_bin(char *buff); int add_to_bin(uzel *perv, char*bin, char *b__word); int sravn(char *BinRoot, char *Bin); struct uzel { char *s__word; char *b__word; uzel *pr_uzel; uzel *lev_uzel; }; int main() { // Русифицируем =) SetConsoleCP(1251); SetConsoleOutputCP(1251); setlocale(LC_ALL, "Rus"); char *search = (char*)calloc(100, sizeof(char)); char *buff = (char*)calloc(100, sizeof(char)); char *bin = NULL; int j = 0; char *arr = file_download(); uzel *perv = new_tree(arr); std::cout << "Введите искомое слово:" << std::endl; gets_s(search, 99); search = toLowerCaseAll(search); for (int i = 0; i <= strlen(search); j++, i++) { if (('а' <= search[i]) && (search[i] <= 'я') || (search[i] == 'ё')) { buff[j] = search[i]; } else { bin = word_to_bin(buff); } } search_in_bin(perv, bin); _getch(); return(0); } //Функция для получения данных из файла char* file_download() { int length; FILE *file = fopen("ADRESS", "rb"); // открытие файла fseek(file, 0, SEEK_END); // перемещение курсора в конец length = ftell(file); // записываем текущую позицию курсора (получаем размер файла) fseek(file, 0, SEEK_START); //перемещение курсора в начала char *arr = (char*)calloc(length + 1, sizeof(char)); fgets(arr, length+1, file); //считываем файл в строку arr arr = toLowerCaseAll(arr); //переводим считанную строку в нижний регистр fclose(file); return(arr); } // Перевод всей строки в нижний регистр char* toLowerCaseAll(char* arr) { int length, i; length = strlen(arr); for (i = 0; i < length; i++) { arr[i] = tolower(arr[i]); } return(arr); } // Функция для переворота строки char* perevorot(char* arr) { int length, i; length = strlen(arr); char *temp_str = (char*)calloc(++length, sizeof(char)); for (i = 0; i < strlen(arr); i++) { length--; temp_str[i] = arr[length]; } return(temp_str); } //Функция преобразования слова в бинарный вид char* word_to_bin(char *buff) { char *arr = (char*)calloc(500, sizeof(char)); char *temp = (char*)calloc(100, sizeof(char)); int j = 0, i = 0, sim; while(buff[i]){ int bin; bin = buff[i]; while (bin / 2 > 0) { sim = bin % 2; temp[j] = sim + '0'; j++; bin = bin / 2; } temp[j] = bin + '0'; temp = perevorot(temp); strcat(arr, temp); strcat(arr, " "); free(temp); temp = (char*)calloc(100, sizeof(char)); i++; j = 0; } return(arr); } //Функция записи слова в бинарное дерево int add_to_bin(uzel *perv, char*bin, char *b__word) { int i; if (perv->b__word == NULL) { perv->b__word = bin; perv->s__word = (char*)calloc(strlen((char*)b__word) + 1, sizeof(char)); strcpy(perv->s__word, (char*)b__word); return(0); } i = sravn(perv->b__word, bin); if (i == 0) { if (perv->lev_uzel == NULL) { perv->lev_uzel = (uzel*)calloc(1, sizeof(uzel)); perv->lev_uzel->b__word = bin; perv->lev_uzel->s__word = (char*)calloc(strlen((char*)b__word) + 1, sizeof(char)); strcpy(perv->lev_uzel->s__word, (char*)b__word); return(0); } add_to_bin(perv->lev_uzel, bin, b__word); return(0); }else{ if (i == 1) { if (perv->pr_uzel == NULL) { perv->pr_uzel = (uzel*)calloc(1, sizeof(uzel)); perv->pr_uzel->b__word = bin; perv->pr_uzel->s__word = (char*)calloc(strlen((char*)b__word) + 1, sizeof(char)); strcpy(perv->pr_uzel->s__word, (char*)b__word); return(0); } add_to_bin(perv->pr_uzel, bin, b__word); return(0); } } } //Функция поразрядного сравнения int sravn(char *BinRoot, char *Bin) { int check; if (strlen(BinRoot) < strlen(Bin))return(1); if (strlen(BinRoot) > strlen(Bin))return(0); check = strcmp(BinRoot, Bin); (check > 0)?(return(0)):(check < 0)?(return(1))?(check == 0)?(return(0)); } //Функция ддя создания нового бинарного дерева uzel* new_tree(char *arr) { uzel *perv = (uzel*)calloc(1, sizeof(uzel)); char *buff = (char*)calloc(100, sizeof(char)); //буфер для отдельного слова строки int j = 0, i; for (i = 0; i <= strlen(arr); j++,i++) { if ('а' <= arr[i] && arr[i] <= 'я' || arr[i] == 'ё') { buff[j] = arr[i]; }else { char *bin = word_to_bin(buff); add_to_bin(perv, bin, buff); free(buff); buff = (char*)calloc(100, sizeof(char)); j = -1; } } return(perv); } //функция поиска в дереве int search_in_bin(uzel *perv, char *bin) { int i; if (strcmp(perv->b__word, bin) == 0) { std::cout << "Введённое Вами слово: '" << perv->s__word << "' успешно найдено!" << std::endl; return(0); } i = sravn(perv->b__word, bin); if (i == 0) { if (perv->lev_uzel == NULL) { std::cout << "Введённое Вами слово не найдено. Наиболее похожее слово: " << perv->s__word << std::endl; return(0); } search_in_bin(perv->lev_uzel, bin); return(0); } if (i == 1) { if (perv->pr_uzel == NULL) { std::cout << "Наиболее подходящее слово в дереве: " << perv->s__word << std::endl; return(0); } search_in_bin(perv->pr_uzel, bin); return(0); } }
Решение задачи: «Установка Visual Studio 2010 - ошибка с подключением math.h»
textual
Листинг программы
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <windows.h> #define ADRESS "C:\\Users\\Андрей\\Desktop\\test.txt" struct uzel{ char *s__word; char *b__word; struct uzel*pr_uzel; struct uzel*lev_uzel; }; char* file_download(); char* toLowerCaseAll(char* arr); struct uzel* new_tree(char *arr); char* word_to_bin(char *buff); int search_in_bin(struct uzel*perv, char *bin); char* perevorot(char* arr); char* word_to_bin(char *buff); int add_to_bin(struct uzel*perv, char*bin, char *b__word); int sravn(char *BinRoot, char *Bin); int main() { // Русифицируем =) SetConsoleCP(1251); SetConsoleOutputCP(1251); char *search = (char*)calloc(100, sizeof(char)); char *buff = (char*)calloc(100, sizeof(char)); char *bin = NULL; int j = 0; char *arr = file_download(); struct uzel*perv = new_tree(arr); printf("Введите искомое слово:\n"); gets_s(search, 99); search = toLowerCaseAll(search); for (int i = 0; i <= strlen(search); j++, i++) { if (('а' <= search[i]) && (search[i] <= 'я') || (search[i] == 'ё')) { buff[j] = search[i]; } else { bin = word_to_bin(buff); } } search_in_bin(perv, bin); _getch(); return(0); } //Функция для получения данных из файла char* file_download() { int length; FILE *file = fopen(ADRESS, "rb"); // открытие файла fseek(file, 0, SEEK_END); // перемещение курсора в конец length = ftell(file); // записываем текущую позицию курсора (получаем размер файла) fseek(file, 0, SEEK_SET); //перемещение курсора в начала char *arr = (char*)calloc(length + 1, sizeof(char)); fgets(arr, length + 1, file); //считываем файл в строку arr arr = toLowerCaseAll(arr); //переводим считанную строку в нижний регистр fclose(file); return(arr); } // Перевод всей строки в нижний регистр char* toLowerCaseAll(char* arr) { int length, i; length = strlen(arr); for (i = 0; i < length; i++) { arr[i] = tolower(arr[i]); } return(arr); } // Функция для переворота строки char* perevorot(char* arr) { int length, i; length = strlen(arr); char *temp_str = (char*)calloc(++length, sizeof(char)); for (i = 0; i < strlen(arr); i++) { length--; temp_str[i] = arr[length]; } return(temp_str); } //Функция преобразования слова в бинарный вид char* word_to_bin(char *buff) { char *arr = (char*)calloc(500, sizeof(char)); char *temp = (char*)calloc(100, sizeof(char)); int j = 0, i = 0, sim; while (buff[i]){ int bin; bin = buff[i]; while (bin / 2 > 0) { sim = bin % 2; temp[j] = sim + '0'; j++; bin = bin / 2; } temp[j] = bin + '0'; temp = perevorot(temp); strcat(arr, temp); strcat(arr, " "); free(temp); temp = (char*)calloc(100, sizeof(char)); i++; j = 0; } return(arr); } //Функция записи слова в бинарное дерево int add_to_bin(struct uzel*perv, char*bin, char *b__word) { int i; if (perv->b__word == NULL) { perv->b__word = bin; perv->s__word = (char*)calloc(strlen((char*)b__word) + 1, sizeof(char)); strcpy(perv->s__word, (char*)b__word); return(0); } i = sravn(perv->b__word, bin); if (i == 0) { if (perv->lev_uzel== NULL) { perv->lev_uzel = (struct uzel*)calloc(1, sizeof(struct uzel)); perv->lev_uzel->b__word = bin; perv->lev_uzel->s__word = (char*)calloc(strlen((char*)b__word) + 1, sizeof(char)); strcpy(perv->lev_uzel->s__word, (char*)b__word); return(0); } add_to_bin(perv->lev_uzel, bin, b__word); return(0); } else{ if (i == 1) { if (perv->pr_uzel== NULL) { perv->pr_uzel= (struct uzel*)calloc(1, sizeof(struct uzel)); perv->pr_uzel->b__word = bin; perv->pr_uzel->s__word = (char*)calloc(strlen((char*)b__word) + 1, sizeof(char)); strcpy(perv->pr_uzel->s__word, (char*)b__word); return(0); } add_to_bin(perv->pr_uzel, bin, b__word); return(0); } } } //Функция поразрядного сравнения int sravn(char *BinRoot, char *Bin) { int check; if (strlen(BinRoot) < strlen(Bin))return(1); if (strlen(BinRoot) > strlen(Bin))return(0); check = strcmp(BinRoot, Bin); return ((check >= 0) ? 0 : 1); } //Функция ддя создания нового бинарного дерева struct uzel* new_tree(char *arr) { struct uzel*perv = (struct uzel*)calloc(1, sizeof(struct uzel)); char *buff = (char*)calloc(100, sizeof(char)); //буфер для отдельного слова строки int j = 0, i; for (i = 0; i <= strlen(arr); j++, i++) { if ('а' <= arr[i] && arr[i] <= 'я' || arr[i] == 'ё') { buff[j] = arr[i]; } else { char *bin = word_to_bin(buff); add_to_bin(perv, bin, buff); free(buff); buff = (char*)calloc(100, sizeof(char)); j = -1; } } return(perv); } //функция поиска в дереве int search_in_bin(struct uzel*perv, char *bin) { int i; if (strcmp(perv->b__word, bin) == 0) { printf("Введённое Вами слово: '%s' успешно найдено!\n",perv->s__word); return(0); } i = sravn(perv->b__word, bin); if (i == 0) { if (perv->lev_uzel== NULL) { printf("Введённое Вами слово не найдено. Наиболее похожее слово: %s\n", perv->s__word); return(0); } search_in_bin(perv->lev_uzel, bin); return(0); } if (i == 1) { if (perv->pr_uzel== NULL) { printf("Наиболее подходящее слово в дереве: %s\n", perv->s__word); return(0); } search_in_bin(perv->pr_uzel, bin); return(0); } }
Объяснение кода листинга программы
В данном коде реализуется программа, которая выполняет следующие действия:
- Предобработка ввода пользователя:
- Присваивание переменной
search
указателя на массив символов, выделенный с помощьюcalloc
. - Присваивание переменной
buff
указателя на массив символов, выделенный с помощьюcalloc
. - Присваивание переменной
bin
указателя на массив символов, выделенный с помощьюcalloc
. - Установка значения
j
равным 0. - Считывание строки из файла в массив
arr
с помощью функцииfgets
. - Выполнение функции
toLowerCaseAll
для преобразования строкиarr
в нижний регистр. - Закрытие файла.
- Присваивание переменной
- Создание нового бинарного дерева:
- Выделение памяти под структуру
uzel
с помощьюcalloc
. - Инициализация первого узла дерева.
- Рекурсивный обход дерева для добавления каждого слова из файла в дерево.
- Возвращение корневого узла дерева.
- Выделение памяти под структуру
- Поиск слова в дереве:
- Вызов функции
search_in_bin
с передачей в нее корневого узла дерева и искомого слова. - Вывод сообщения об успешном поиске, если слово найдено.
- Вывод сообщения о том, что слово не найдено, но найдено наиболее похожее слово, если слово не найдено в текущем узле.
- Рекурсивный вызов функции
search_in_bin
для проверки следующего узла дерева.
- Вызов функции
- Функции:
toLowerCaseAll
преобразует строку в нижний регистр.word_to_bin
преобразует слово в бинарный формат.add_to_bin
добавляет слово в бинарное дерево.sravn
сравнивает два бинарных дерева поразрядно.new_tree
создает новое бинарное дерево.search_in_bin
выполняет поиск слова в бинарном дереве.perevorot
переворачивает строку.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д