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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.92
Tolgrim
0 / 0 / 0
Регистрация: 22.04.2009
Сообщений: 16
#1

Описать функцию TextSize (Name) целого типа, возвращающую число строк в текстовом файле - C++

12.05.2009, 13:19. Просмотров 1591. Ответов 20
Метки нет (Все метки)

Описать функцию TextSize(Name) целого типа, возвращающую число строк в текстовом файле с именем Name. Если файл не существует, то функция возвращает -1. С помощью этой функции определить размер трёх файлов с данными именами.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.05.2009, 13:19
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Описать функцию TextSize (Name) целого типа, возвращающую число строк в текстовом файле (C++):

Описать функцию DigitN(K, N) целого типа, возвращающую N-ю цифру целого положительного числа K - C++
Помогите выполнить задание. Описать функцию DigitN(K, N) целого типа, возвращающую N-ю цифру целого положительного числа K (цифры в...

Описать функцию DecToBin(N) строкового типа, возвращающую строковое представление целого неотрицательного числа N - C++
Описать функцию DecToBin(N) строкового типа, возвращающую строковое представление целого неотрицательного числа N в двоичной системе...

Описать функцию, которая подсчитывает количество пустых строк в текстовом файле - C++
Описать функцию, которая подсчитывает количество пустых строк в тек- стовом файле

Описать рекурсивную функцию FibRec(N) целого типа, вычисляющую N-е число Фибоначчи - C++
Описать рекурсивную функцию FibRec(N) целого типа, вычисляющую N-е число Фибоначчи F(N) по формуле: F(1) = F(2) = 1, F(k) = F(k–2) +...

Описать рекурсивную функцию целого типа, находящую число сочетаний из n элементов по m, используя формулу - C++
1.Описать рекурсивную функцию C(m,n) целого типа, находящую число сочетаний из n элементов по m, используя формулу: C(0,n) = C(n,n) = 1,...

Описать функцию, возвращающую строковое представление целого неотрицательного числа - C++
Описать функцию DecToHex(N) строкового типа, возвращающую строковое представление целого неотрицательного числа N в 16-ричной системе...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Vourhey
Почетный модератор
6481 / 2256 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
12.05.2009, 13:51 #2
На чем застрял?
0
Tolgrim
0 / 0 / 0
Регистрация: 22.04.2009
Сообщений: 16
12.05.2009, 14:30  [ТС] #3
Не понял насчёт трёх файлов, какие три файла, откуда, как размер посчитать...
0
Vourhey
Почетный модератор
6481 / 2256 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
12.05.2009, 14:44 #4
Ну просто вызови эту функцию с именами трех файлов. Любых у тебя на винте.
Размер можно определить кучей способов. Например fstat. Или winapi - getfilesize.
0
Tolgrim
0 / 0 / 0
Регистрация: 22.04.2009
Сообщений: 16
12.05.2009, 14:48  [ТС] #5
Как выглядит оператор вызова сразу трёх файлов напиши пожалуйста.
0
Gravity
562 / 556 / 39
Регистрация: 29.01.2009
Сообщений: 1,274
12.05.2009, 14:55 #6
Зачем сразу трех? Можно ведь последовательно вызывать эту ф-ю для каждого файла. Ну а чтобы узнать число строк, делай fgets в цикле и увеличивай счетчик строк, пока тот не вернет NULL.
0
Vourhey
Почетный модератор
6481 / 2256 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
12.05.2009, 14:56 #7
Три раза вызови функцию
0
Tolgrim
0 / 0 / 0
Регистрация: 22.04.2009
Сообщений: 16
12.05.2009, 15:13  [ТС] #8
Спасибо, ни хрена не понимаю.
Тогда вопрос, как сделать динамический двумерный массив символов.
и возможно ли заполнить его с помощью gets(), как это сделать?
C++
1
2
3
4
5
6
7
8
9
int i, j;
 
   cout<<"Vvedite max razmer stroki = ";
   cin>>i;
 
   cout<<"Vvedite max kolichestvo strok = ";
   cin>>j;
 
   **str = new char *[i];
Вот это, я предполагаю правильно создал динам. массив символов... А Дальше - Как заполнять?
0
Tolgrim
0 / 0 / 0
Регистрация: 22.04.2009
Сообщений: 16
16.05.2009, 23:01  [ТС] #9
Написал прогу:

два вопроса, как определить размер открываемого файла, и как сделать чтоб в случае, если файл не существует функция возвращала -1, и выводилось бы сообщение, что файл не найден.
Пробовал вставлять в функцию такое условие, оно работает если файл не найден, но когда файл есть, почему-то он перестаёт возвращать число строк, вместо этого возвращает 0. Надеюсь, понятно... (Текст задания, в первом топике)!!!

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
int TextSize(FILE *Name);
int main()
{
    FILE *Name = fopen("D:\\Name.txt", "r");
 
    cout<<"Kol-vo dtrok v file = "<<TextSize(Name);
 
    getch();
 
    return 0;
}
int TextSize(FILE *Name)
{
    const int maxlen = 80, maxstr = 10;
 
    int i,kol=0;
 
    char **str=new char *[maxstr];
 
 
    for (i = 0; i < maxstr; i++)
    {
       str[i]=new char [maxlen];
    }
 
    if(Name)
    {
       for(i=0; fgets( str[i], maxstr,Name);i++)
       {
          kol+=1;
       }
    }
 
    fclose(Name);
 
    return(kol);
 
    }
0
Monte-Cristo
2789 / 1375 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
16.05.2009, 23:13 #10
Цитата Сообщение от Tolgrim Посмотреть сообщение
если файл не существует функция возвращала -1
C++
1
if (!Name) return -1;
Добавлено через 7 минут 18 секунд
Определить размер файла
0
Tolgrim
0 / 0 / 0
Регистрация: 22.04.2009
Сообщений: 16
16.05.2009, 23:39  [ТС] #11
Пробовал вставлять в функцию
C++
1
if (!Name) return -1;
такое условие, оно работает если файл не найден, всё правильно выдаёт, но когда файл есть, почему-то
C++
1
return(kol);
перестаёт возвращать число строк, вместо этого возвращает 0.
0
Monte-Cristo
2789 / 1375 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
16.05.2009, 23:54 #12
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
попробуйте так: поидеи должно работать...

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
int TextSize(FILE *Name);
int main()
{
        FILE *Name = fopen("D:\\Name.txt", "r");
        cout << "Kol-vo dtrok v file = " << TextSize(Name);
        fclose(Name);
        getch();
        return 0;
}
 
int TextSize(FILE *Name)
{
    if (!Name) return -1;
  
    const int maxlen = 80, maxstr = 10;
    int i,kol=0;
    char **str=new char *[maxstr];
 
    for (i = 0; i < maxstr; i++)
        str[i]=new char [maxlen];
 
    for(i=0; fgets( str[i], maxstr,Name);i++)
        kol++;
 
    return kol;
}
0
Tolgrim
0 / 0 / 0
Регистрация: 22.04.2009
Сообщений: 16
17.05.2009, 00:14  [ТС] #13
Мне же нужно в случае отсутствия файла вывести сообщение

Делаю так:
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
int TextSize(FILE *Name);
int main()
{
        FILE *Name = fopen("D:\\Name.txt", "r");
 
        if(TextSize(Name) == -1){
        cout<<"File not found";
        }
        else
        {
        cout << "Kol-vo dtrok v file = " << TextSize(Name);
        }
        fclose(Name);
        getch();
        return 0;
}
 
int TextSize(FILE *Name)
{
    if (!Name) return -1;
 
    const int maxlen = 80, maxstr = 10;
    int i,kol=0;
    char **str=new char *[maxstr];
 
    for (i = 0; i < maxstr; i++)
        str[i]=new char [maxlen];
 
    for(i=0; fgets( str[i], maxstr,Name);i++)
        kol++;
 
    return kol;
}
Если файла нет всё правильно выдаёт, если есть то выдаёт - "Kol-vo dtrok v file = 0" При любом раскладе, а у меня в файле 3 строки.

А с твоим вариантом и смоим первоначальным всё правильно считает, но нужно чтоб сообщение было...
0
Monte-Cristo
2789 / 1375 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
17.05.2009, 00:38 #14
а можете нормально сказать что надо реализовать? только подсчитать кол-во строк?

просто из-за двойного вызова функции, у вас сбивается точка считывания... и получается, что при втором вызове вы считываете НОЛЬ строчек с конца файла..вам надо или перемещать на начало файла функцией fseek(), или делать так:

C++
1
2
3
4
5
6
7
8
9
    int x = TextSize(Name);
    if(x == -1)
    {
        cout<<"File not found";
    }
    else
    {
        cout << "Kol-vo dtrok v file = " << x;
    }
1
Tolgrim
0 / 0 / 0
Регистрация: 22.04.2009
Сообщений: 16
17.05.2009, 01:07  [ТС] #15
функция должна возращать либо количество строк, либо -1. Спасибо, я понял, о чём-то таком догадывался.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.05.2009, 01:07
Привет! Вот еще темы с ответами:

Описать функцию HexToDec(S) целого типа, определяющую целое неотрицательное число по его строковому представлению S в 16-ричной системе счисления - C++
Очень прошуууу помочь .Param47. Описать функцию HexToDec(S) целого типа, определяющую целое неотрицательное число по его строковому...

Реализовать функцию возведения целого числа в квадрат, возвращающую значение типа int - C++
Как правильно изменить код что бы он скомпилировался, ошибка: Функция должна возвращать значение. Если заменить int Sqr (int q) на ...

Описать функцию RootsCount(A, B, C) целого типа - C++
Помогите пожалуйста описать функцию RootsCount(A, B, C) целого типа, определяющую количество корней квадратного уравнения A•x2 + B•x + C =...

Описать функцию IsPrime(N) логического типа, возвращающую True, если целый параметр N (> 1) является простым числом - C++
Описать функцию IsPrime(N) логического типа, возвращающую True, если целый параметр N (&gt; 1) является простым числом, и False в против-ном...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
17.05.2009, 01:07
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru