Установка 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);
    }
 
}

Объяснение кода листинга программы

В данном коде реализуется программа, которая выполняет следующие действия:

  1. Предобработка ввода пользователя:
    • Присваивание переменной search указателя на массив символов, выделенный с помощью calloc.
    • Присваивание переменной buff указателя на массив символов, выделенный с помощью calloc.
    • Присваивание переменной bin указателя на массив символов, выделенный с помощью calloc.
    • Установка значения j равным 0.
    • Считывание строки из файла в массив arr с помощью функции fgets.
    • Выполнение функции toLowerCaseAll для преобразования строки arr в нижний регистр.
    • Закрытие файла.
  2. Создание нового бинарного дерева:
    • Выделение памяти под структуру uzel с помощью calloc.
    • Инициализация первого узла дерева.
    • Рекурсивный обход дерева для добавления каждого слова из файла в дерево.
    • Возвращение корневого узла дерева.
  3. Поиск слова в дереве:
    • Вызов функции search_in_bin с передачей в нее корневого узла дерева и искомого слова.
    • Вывод сообщения об успешном поиске, если слово найдено.
    • Вывод сообщения о том, что слово не найдено, но найдено наиболее похожее слово, если слово не найдено в текущем узле.
    • Рекурсивный вызов функции search_in_bin для проверки следующего узла дерева.
  4. Функции:
    • toLowerCaseAll преобразует строку в нижний регистр.
    • word_to_bin преобразует слово в бинарный формат.
    • add_to_bin добавляет слово в бинарное дерево.
    • sravn сравнивает два бинарных дерева поразрядно.
    • new_tree создает новое бинарное дерево.
    • search_in_bin выполняет поиск слова в бинарном дереве.
    • perevorot переворачивает строку.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4.556 из 5
Похожие ответы