Форум программистов, компьютерный форум CyberForum.ru

Явные специализации и массивы строк - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Метод для изменения защищенного поля http://www.cyberforum.ru/cpp-beginners/thread641576.html
Насколько безопастно данное издевательство решение? #include <stdio.h> class MYCLASS { private : int x; public : MYCLASS() : x(23) {} int* Get()
C++ Развертывание консольного окна Как при включении программы развернуть консольное окно??? Если я это делаю вручную оно прилепает к правому верхнему углу. Вот мне надо достигнуть подобного результата. Просто окно раскрывается в самом низу экрана и не помещается полностью. http://www.cyberforum.ru/cpp-beginners/thread641573.html
Загрузка файлов с лаунчера C++
Как сделать так что при запуске лаунчера ,будут закачиваться файлы с моего ftp сервера в нужною директорию ,и при этом выведет сообщение "подождите идёт обновление"после чего окно загрузки закрывается и выводиться следующие сообщение "Обновление закончено теперь вы можите запустить игру"
Можно ли создать поток для нестатического метода класса? C++
Можно ли создать поток для не статик метода класса? #include <windows.h> #include <stdio.h> class MYCLASS { private : int num; public : MYCLASS() : num(0) {}
C++ Частично по теме, можеры перенесите куда нужно http://www.cyberforum.ru/cpp-beginners/thread641532.html
Здравствуйте. Пишу давно на С/С++, пользуюсь GCC. И вот хотелось бы расширить кругозор. 1. Может ли кто-нибудь вкратце объяснить мне как всё же происходить компилляция программ на языках C/C++, а также на языке Pascal? 2. Хотел поизучать Java, Pascal, Python и С#. Какие компилляторы для этого нужны? 3. Про язык java. Слышал что он интерпретатор. Также слышал про GCJ. Работал разок с JDK....
C++ Перевернуть одномерный массив Народ. Помогите пожалуйста с программой. Нужно перевернуть одномерный массив одним из простых способов. Спасибо. подробнее

Показать сообщение отдельно
DraikoN
0 / 0 / 0
Регистрация: 07.08.2012
Сообщений: 14

Явные специализации и массивы строк - C++

23.08.2012, 17:41. Просмотров 652. Ответов 4
Метки (Все метки)

Не знаю, как еще точнее это назвать...
В задании написано:
Сделайте шаблонную функцию maxn(), которая принимает в качестве аргумента массив элементов типа Т и целое число, представляющее собой количество элементов в массиве, и которая возвращает элемент с наибольшим значением в этом массиве.
Проверьте ее в программе, которая использует шаблон данной функции с массивом из шести значений типа int и с массивом из четырех значений типа double.
Программа также должна включать специализацию, которая использует в качестве аргумента массив указателей на char и число указателей в качестве второго аргумента и которая возвращает адрес самой длинной строки. Если имеется более одной строки наибольшей длины, функция возвращает адрес первой из них. Выполнить проверку специализации на примере массива, состоящего из пяти указателей на строки.
Проблема в том, что компилятор выдает ошибку:
"Exercize8.6.exe": Загружено: "D:\+PROJECTS+\Visual Studio\Exercize8.6\Debug\Exercize8.6.exe", Символы загружены.
"Exercize8.6.exe": Загружено: "C:\Windows\System32\ntdll.dll", Невозможно найти или открыть файл PDB
"Exercize8.6.exe": Загружено: "C:\Windows\System32\kernel32.dll", Невозможно найти или открыть файл PDB
"Exercize8.6.exe": Загружено: "C:\Windows\System32\KernelBase.dll", Невозможно найти или открыть файл PDB
"Exercize8.6.exe": Загружено: "C:\Windows\System32\msvcp100d.dll", Символы загружены.
"Exercize8.6.exe": Загружено: "C:\Windows\System32\msvcr100d.dll", Символы загружены.
Первый этап обработки исключения в "0x010c2984" в "Exercize8.6.exe": 0xC0000005: Нарушение прав доступа при записи "0xcccccccc".
Необработанное исключение в "0x010c2984" в "Exercize8.6.exe": 0xC0000005: Нарушение прав доступа при записи "0xcccccccc".
Первый этап обработки исключения в "0x010c2984" в "Exercize8.6.exe": 0xC0000005: Нарушение прав доступа при записи "0xcccccccc".
Необработанное исключение в "0x010c2984" в "Exercize8.6.exe": 0xC0000005: Нарушение прав доступа при записи "0xcccccccc".
Первый этап обработки исключения в "0x010c2984" в "Exercize8.6.exe": 0xC0000005: Нарушение прав доступа при записи "0xcccccccc".
Поток 'Поток Win32' (0xa58) завершился с кодом -1073741749 (0xc000004b).
Программа "[1724] Exercize8.6.exe: Машинный код" завершилась с кодом -1073741510 (0xc000013a).
те программа компилируется, но после ввода первой строки выдает ошибку.
где то проблема с istream - точно понять в чем проблема не в состоянии.


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
#include <iostream>
#include <Windows.h>
#include <ctime>
#include <cstring>
#include <cstdlib>
using namespace std;
 
template <typename Any> Any MaxCount(Any *arr, int n);
 
[B]//создаем явную специализацию[/B]
template <> int MaxCount (char * ukChar[], int n);         //подсвечивает MaxCount в этой строке (!)
//порыскав в инете и если написать вместо строки выше вот это:
//template <int> int MaxCount (char * ukChar[], int n);
//то прога компилируется но выдает ошибку описанную выше
 
template <typename what> void ShowArr(what *arr, int n);
void ShowStrArr(char *str[], int n);
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    /*cout << "введите кол-во элементов в массиве int:\t";              //int
    int icol = 0;
    (cin >> icol).get();
    cout << "введите 5 int значений:\n";
    const int length = 10;
    int iarr[length];
    for (int i = 0; i < icol; i++)
    {
        cout << i + 1 << ":\t";
        (cin >> iarr[i]).get();
    }
    ShowArr(iarr, icol);
    cout << "введите кол-во элементов в массиве double:\t";         //double
    int dcol = 0;
    (cin >> dcol).get();
    cout << "введите 5 double значений:\n";
    double darr[length];
    for (int d = 0; d < dcol; d++)
    {
        cout << d + 1 << ":\t";
        (cin >> darr[d]).get();
    }
    ShowArr(darr, dcol);
    cout << "\n\nрезультаты:\nдля int:\t" << MaxCount(iarr, icol)       //result
         << "\nдля double:\t" << MaxCount(darr, dcol);*/
 
    cout << "\n\n\nВведите строки(5 штук):\n";                          //char
    const int chcol = 5;
    char *chArr[chcol]; 
    for (int i = 0; i < chcol; i++)
    {
        cout << "Введите строку №" << i+1 << ":\t";
        (cin >> chArr[i]).get();
    }
//собственно проблема где то тут ->
    cout << "\n" << MaxCount(chArr, chcol);
    ShowStrArr(chArr, chcol);
 
    cin.get();
    float secs = 10;
    clock_t delay = secs * CLOCKS_PER_SEC;
    clock_t start = clock();
    while (clock() - start < delay);
    return 0;
}
 
template <typename Any> Any MaxCount(Any *arr, int n)
{
    Any temp = 0;
    for (int i = 0; i < n; i++)
        if (arr[i] >= temp)
            temp = arr[i];
    return temp;
}
 
template <int> int MaxCount (char * ukChar[], int n)       //смотреть сюда :)
{
    int temp =0;
        int tmp = 0;
       for (int i = 0; i<k; i++)
       {
            if (tmp < strlen(ukChar[i]))
            {
                tmp = strlen(ukChar[i]);
                temp = &ukChar[i];
             }
            cout << ukChar[i] << endl;
       };
    return  temp;
}
 
template <typename what> void ShowArr(what *arr, int n)
{
    for (int i = 0; i < n; i++)
        cout << "Значение №" << i+1 << "\t" << arr[i] << endl;
}
void ShowStrArr(char *str[], int n)
{
    cout << "Вы ввели " << n << " строк:\n";
    for (int i = 0; i < n; i++)
        cout << "Строка #" << i + 1 << ":\t" << str[i] << endl;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru