Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.53/15: Рейтинг темы: голосов - 15, средняя оценка - 4.53
0 / 0 / 0
Регистрация: 22.04.2009
Сообщений: 16

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

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

Студворк — интернет-сервис помощи студентам
Описать функцию TextSize(Name) целого типа, возвращающую число строк в текстовом файле с именем Name. Если файл не существует, то функция возвращает -1. С помощью этой функции определить размер трёх файлов с данными именами.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.05.2009, 13:19
Ответы с готовыми решениями:

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

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

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

20
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
12.05.2009, 13:51
На чем застрял?
0
0 / 0 / 0
Регистрация: 22.04.2009
Сообщений: 16
12.05.2009, 14:30  [ТС]
Не понял насчёт трёх файлов, какие три файла, откуда, как размер посчитать...
0
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
12.05.2009, 14:44
Ну просто вызови эту функцию с именами трех файлов. Любых у тебя на винте.
Размер можно определить кучей способов. Например fstat. Или winapi - getfilesize.
0
0 / 0 / 0
Регистрация: 22.04.2009
Сообщений: 16
12.05.2009, 14:48  [ТС]
Как выглядит оператор вызова сразу трёх файлов напиши пожалуйста.
0
 Аватар для Gravity
577 / 571 / 65
Регистрация: 29.01.2009
Сообщений: 1,274
12.05.2009, 14:55
Зачем сразу трех? Можно ведь последовательно вызывать эту ф-ю для каждого файла. Ну а чтобы узнать число строк, делай fgets в цикле и увеличивай счетчик строк, пока тот не вернет NULL.
0
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
12.05.2009, 14:56
Три раза вызови функцию
0
0 / 0 / 0
Регистрация: 22.04.2009
Сообщений: 16
12.05.2009, 15:13  [ТС]
Спасибо, ни хрена не понимаю.
Тогда вопрос, как сделать динамический двумерный массив символов.
и возможно ли заполнить его с помощью 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
0 / 0 / 0
Регистрация: 22.04.2009
Сообщений: 16
16.05.2009, 23:01  [ТС]
Написал прогу:

два вопроса, как определить размер открываемого файла, и как сделать чтоб в случае, если файл не существует функция возвращала -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
2816 / 1408 / 107
Регистрация: 07.03.2009
Сообщений: 4,446
16.05.2009, 23:13
Цитата Сообщение от Tolgrim Посмотреть сообщение
если файл не существует функция возвращала -1
C++
1
if (!Name) return -1;
Добавлено через 7 минут 18 секунд
Определить размер файла
0
0 / 0 / 0
Регистрация: 22.04.2009
Сообщений: 16
16.05.2009, 23:39  [ТС]
Пробовал вставлять в функцию
C++
1
if (!Name) return -1;
такое условие, оно работает если файл не найден, всё правильно выдаёт, но когда файл есть, почему-то
C++
1
return(kol);
перестаёт возвращать число строк, вместо этого возвращает 0.
0
 Аватар для Monte-Cristo
2816 / 1408 / 107
Регистрация: 07.03.2009
Сообщений: 4,446
16.05.2009, 23:54
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

попробуйте так: поидеи должно работать...

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
0 / 0 / 0
Регистрация: 22.04.2009
Сообщений: 16
17.05.2009, 00:14  [ТС]
Мне же нужно в случае отсутствия файла вывести сообщение

Делаю так:
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
2816 / 1408 / 107
Регистрация: 07.03.2009
Сообщений: 4,446
17.05.2009, 00:38
а можете нормально сказать что надо реализовать? только подсчитать кол-во строк?

просто из-за двойного вызова функции, у вас сбивается точка считывания... и получается, что при втором вызове вы считываете НОЛЬ строчек с конца файла..вам надо или перемещать на начало файла функцией 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
0 / 0 / 0
Регистрация: 22.04.2009
Сообщений: 16
17.05.2009, 01:07  [ТС]
функция должна возращать либо количество строк, либо -1. Спасибо, я понял, о чём-то таком догадывался.
0
 Аватар для Monte-Cristo
2816 / 1408 / 107
Регистрация: 07.03.2009
Сообщений: 4,446
17.05.2009, 11:44
просто если кол-во строк, то функцию можно упростить
0
0 / 0 / 0
Регистрация: 22.04.2009
Сообщений: 16
20.05.2009, 14:15  [ТС]
Цитата Сообщение от Monte-Cristo Посмотреть сообщение
просто если кол-во строк, то функцию можно упростить
Как?

Добавлено через 2 часа 10 минут 53 секунды
Есть ли возможность посчитать строки в файле не выделяя память?
0
 Аватар для Monte-Cristo
2816 / 1408 / 107
Регистрация: 07.03.2009
Сообщений: 4,446
20.05.2009, 14:41
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

ну например вот так:
без открытия файла, строки подсчитать нельзя.

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
int TextSize(FILE *Name);
 
int main()
{
    FILE *Name = fopen("D:\\Name.txt", "r");
 
    int x = TextSize(Name);
    if(x == -1)
        cout<<"File not found" << endl;
    else
    {
        cout << "Kol-vo dtrok v file = " << x << endl;
        fclose(Name);
    }
 
    //getch();
    return 0;
}
 
int TextSize(FILE *Name)
{
        if (!Name) return -1;
        int kol=0;
        
        char str[1000];
 
        while (!feof(Name))
        {
            fgets(str, sizeof(str), Name);
            kol++;
        }
 
        return kol;
}
0
0 / 0 / 0
Регистрация: 22.04.2009
Сообщений: 16
20.05.2009, 15:06  [ТС]
То есть количество строк будет ограничено в любом случае? В данном примере 1000 строк...
0
 Аватар для Monte-Cristo
2816 / 1408 / 107
Регистрация: 07.03.2009
Сообщений: 4,446
20.05.2009, 15:22
нет..в данном примере, это не кол-во строк.. а кол-во символов в строке.
т.е. принимаем, что символов в ОДНОЙ строке меньше 1000. а кол-во строк не ограничивается.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.05.2009, 15:22
Помогаю со студенческими работами здесь

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

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

Описать функцию СОN(K,N) целого типа , возвращающую количество цифр целого положительного числа К равны N
2. Описать функцию СОN(K,N) целого типа , возвращающую количество цифр целого положительного числа К равны N. Если таковых нету то функция...

Описать функцию getInt(Name,k) целого типа, возвращающую k-й элемент файла
очередная просьба о срочном и по максимуму простом решении этой задачи...( Описать функцию getInt(Name,k) целого типа, возвращающую ...

Описать функцию IntFileSize целого типа, возвращающую размер файла
Доброе время суток господа! Помогите пожалуйста срочно с задачей:Описать функцию IntFileSize(Name) целого типа, возвращающую размер файла...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru