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

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

12.05.2009, 13:19. Показов 3383. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru