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

C++ моя контрольная - C++

Восстановить пароль Регистрация
 
Expert23
1 / 1 / 0
Регистрация: 24.06.2011
Сообщений: 35
24.06.2011, 14:01     C++ моя контрольная #1
Вот задачи:
------
Есть ошибки при использовании параметров шаблона функций в прототипе? почему?

template <class D, class C>
D func2(int,C);
------
Напишите указатель на ф-цию, которая имеет след.прототип:
long DOP(int a, long b, float*c);
------
Разработайте масив из 6-ти строк, значение которых введите с клавиатуры. Запишите этот массив в файл с именем iot.txt, который находится на диске D в директории UTR с помощью функции fputs(). Проверьте правильность записи, прочитав из файла записаные строки с помощью функции fgets().
----------
Разработайте перезагруженые функции, в которые передается массив (типа int, long) и который возвращает количество чисел, кратным 3. Вызовите в главной программе эти ф-ции, причем первый массив проинициализируйте, а второй - введите с клавиатуры. Массивы должны быть разного размера.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.06.2011, 14:01     C++ моя контрольная
Посмотрите здесь:

C++ моя записная книжка
В чем моя ошибка? C++
C++ В чем моя ошибка ?
в чем моя ошибка?? C++
Моя контрольная на C,не получается C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
sandye51
программист С++
 Аватар для sandye51
677 / 579 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
24.06.2011, 14:43     C++ моя контрольная #2
Цитата Сообщение от Expert23 Посмотреть сообщение
Есть ошибки при использовании параметров шаблона функций в прототипе? почему?
template <class D, class C>
D func2(int,C);
здесь нет ошибок.

Добавлено через 1 минуту
Цитата Сообщение от Expert23 Посмотреть сообщение
Напишите указатель на ф-цию, которая имеет след.прототип:
long DOP(int a, long b, float*c);
собственно, что писать то?
C++
1
typedef long (*DOP)(int a, long b, float*c);
OstapBender
 Аватар для OstapBender
581 / 519 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
24.06.2011, 14:51     C++ моя контрольная #3
sandye51, глупый вопрос задам.

на кой чёрт перед указателями на функцию пишут typedef?
sandye51
программист С++
 Аватар для sandye51
677 / 579 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
24.06.2011, 14:54     C++ моя контрольная #4
Цитата Сообщение от Expert23 Посмотреть сообщение
Разработайте масив из 6-ти строк, значение которых введите с клавиатуры. Запишите этот массив в файл с именем iot.txt, который находится на диске D в директории UTR с помощью функции fputs(). Проверьте правильность записи, прочитав из файла записаные строки с помощью функции fgets().
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
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
 
#define n 3
 
int main()
{
    unsigned char i = 0;
    char text[n][30];
    FILE* file = NULL;
 
    // reading text;
    printf("Enter the %d strings\n", n);
    for ( ; i < n; ++i)
        gets(text[i]);
 
    // opeing file;
    if (!(file = fopen("D:\\UTR\\iot.txt", "w")))
    {
        perror("Can't open a file\n");
        _getch();
        return EXIT_FAILURE;
    }
 
    // writing to file;
    for (i = 0; i < n; ++i)
    {
        fputs(text[i], file);
        fputs("\n", file);
    }
    // closing file;
    fclose(file);
 
    // opening file for a reading text;
    file = fopen("D:\\UTR\\iot.txt", "r");
    i = 0;
    while(!feof(file))
    {
        fgets(text[i], sizeof(text[i]), file);
        puts(text[i++]);
    }
 
    _getch();
    return EXIT_SUCCESS;
}
Bers
Заблокирован
24.06.2011, 14:55     C++ моя контрольная #5
Цитата Сообщение от OstapBender Посмотреть сообщение
sandye51, глупый вопрос задам.

на кой чёрт перед указателями на функцию пишут typedef?

Облегчает понимание текста программы.

Это особенно полезно, когда предложение с использованием указателя на функцию становиться чуточку нетривиальным)
sandye51
программист С++
 Аватар для sandye51
677 / 579 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
24.06.2011, 15:15     C++ моя контрольная #6
OstapBender, это определение типа DOP, который является указателем на фукнцию
можно конечно писать каждый раз прототип исп. фукнции, например
C
1
void func(long (*DOP)(int, long, float*)/*, other args*/)
но как-то долго.

Добавлено через 5 минут
Цитата Сообщение от Expert23 Посмотреть сообщение
Разработайте перезагруженые функции
ахаха.. а перезаряженные не разработать?

Добавлено через 13 минут
Цитата Сообщение от Expert23 Посмотреть сообщение
Разработайте перезагруженые функции, в которые передается массив (типа int, long) и который возвращает количество чисел, кратным 3. Вызовите в главной программе эти ф-ции, причем первый массив проинициализируйте, а второй - введите с клавиатуры. Массивы должны быть разного размера.
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
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
 
int get3(int v[], unsigned int size)
{
    unsigned int i = 0, count = 0;
    for ( ; i < size; ++i)
        if (!(v[i] % 3))
            ++count;
    return count;
}
 
int get3(long int* v, unsigned int size)
{
    unsigned int i = 0, count = 0;
    for ( ; i < size; ++i)
        if (!(v[i] % 3))
            ++count;
    return count;
}
 
int main()
{
    int a1[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
    long int* a2 = NULL;
    unsigned int i = 0 , size2, size1 = sizeof(a1) / sizeof(int);
 
    printf("Enter the size of the second array\n");
    scanf("%d", & size2);
    a2 = (long int*)malloc(sizeof(long int) * size2);
    printf("Enter the second array (size = %d)\n", size2);
    for ( ; i < size2; ++i)
        scanf("%d", &a2[i]);
 
    printf("Answer 1: %d\n", get3(a1, size1));
    printf("Answer 2: %d\n", get3(a2, size2));
 
    _getch();
 
    free(a2);
    a2 = NULL;
 
    return EXIT_SUCCESS;
}
OstapBender
 Аватар для OstapBender
581 / 519 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
24.06.2011, 15:20     C++ моя контрольная #7
немного оффтопа...

ну я просто привык писать так
long (*DOP)(int a, long b, float*c);
теперь можно писать DOP = f(...)

а так выходит я могу написать
typedef long (*DOP)(int a, long b, float*c);
и писать так:
DOP p1=f1(),p2=f2(),p3=f3();
?

в этом удобство?
sandye51
программист С++
 Аватар для sandye51
677 / 579 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
24.06.2011, 15:22     C++ моя контрольная #8
схематично - да, так.
Expert23
1 / 1 / 0
Регистрация: 24.06.2011
Сообщений: 35
24.06.2011, 19:07  [ТС]     C++ моя контрольная #9
Всем спасибо!!!
------
еще 2 вопроса))
-----
Какая ф-ция открывает заново поток? Для чего она нужна? Пример...
-----
Установите указатель со смещением влево на 50 байт от конца файла. Выдайте соответствеющее сообщение на экран...
sandye51
программист С++
 Аватар для sandye51
677 / 579 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
24.06.2011, 20:32     C++ моя контрольная #10
Цитата Сообщение от Expert23 Посмотреть сообщение
Для чего она нужна?
Цитата Сообщение от Expert23 Посмотреть сообщение
открывает заново поток
логично?
Expert23
1 / 1 / 0
Регистрация: 24.06.2011
Сообщений: 35
24.06.2011, 22:09  [ТС]     C++ моя контрольная #11
Цитата Сообщение от sandye51 Посмотреть сообщение
логично?
а какая ф-ция?
talis
 Аватар для talis
789 / 541 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
24.06.2011, 23:30     C++ моя контрольная #12
Цитата Сообщение от Expert23 Посмотреть сообщение
Какая ф-ция открывает заново поток?
std::fstream::close();
std::fstream::open( const char * filename, ios_base::openmode mode = ios_base::in | ios_base::out );

Эти что ли?

Добавлено через 4 минуты
Цитата Сообщение от Expert23
Установите указатель со смещением влево на 50 байт от конца файла. Выдайте соответствеющее сообщение на экран...
C++
1
2
3
4
5
6
7
8
9
10
11
12
fstream fs ("~/text.txt");
 
if( !fs.is_open() )
{
   fs.close();
   return;
}
 
fs.seekg( 50, ios::end );
cout << "Position = " << fs.tellg() << endl;
 
fs.close();
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.06.2011, 23:47     C++ моя контрольная
Еще ссылки по теме:

где моя ошибка? C++
Моя первая консольная игра :D C++
Моя первая попытка C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
kravam
быдлокодер
 Аватар для kravam
1513 / 873 / 44
Регистрация: 04.06.2008
Сообщений: 5,265
24.06.2011, 23:47     C++ моя контрольная #13
OstapBender, читать примерно с сообщения 35
Как грамотно нтерпретировать ввод нового имени типа, введённого typedef
Yandex
Объявления
24.06.2011, 23:47     C++ моя контрольная
Ответ Создать тему
Опции темы

Текущее время: 03:17. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru