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

Подсчитать количество строк, которые начинаются на букву «А» - C++

Восстановить пароль Регистрация
 
Temikk2
2 / 2 / 0
Регистрация: 12.12.2011
Сообщений: 128
07.02.2012, 01:23     Подсчитать количество строк, которые начинаются на букву «А» #1
Создать программу которая выполняет следующие действия:
1) Скопировать из файла F1 в файл F2 все строки, которые не содержат цифры.
2) Подсчитать количество строк, которые начинаются на букву «А» в файле F2.

Добавлено через 49 минут
Второе задание не обязательно.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.02.2012, 01:23     Подсчитать количество строк, которые начинаются на букву «А»
Посмотрите здесь:

C++ Строка содержит текст.подсчитать количество слов которые начинаются на вводимую букву.
Подсчитать количество слов в тексте, которые начинаются с цифры C++
В текстовом файле подсчитать количество строк которые начинаются и оканчиваются одной и той же буквой C++
Подсчитать количество пучтых строк и количество строк,которые начинаются и оканчиваются на одну и ту же букву. C++
Файлы: в текстовом файле подсчитать количество строк, которые начинаются с буквы C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
07.02.2012, 02:00     Подсчитать количество строк, которые начинаются на букву «А» #2
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 <stdio.h>
#include <string.h>
 
#define FILENAME_1 "f1.txt"
#define FILENAME_2 "f2.txt"
#define DIGITS "0123456789"
 
int main(void)
{
    FILE* in_file1;
    FILE* in_file2;
 
    int c, n = 0;
    char buf[256] = "";
 
    //----------
 
    if((in_file1 = fopen(FILENAME_1, "r")) == NULL)
    {
        printf("can`t open file \"%s\"\n", FILENAME_1);
        return 1;
    }
 
    if((in_file2 = fopen(FILENAME_2, "w+")) == NULL)
    {
        printf("can`t open file \"%s\"\n", FILENAME_2);
        return 1;
    }
 
    // --------- 1
    while(fgets(buf, sizeof(buf), in_file1) != NULL)
        if(!strpbrk(buf, DIGITS))
            fputs(buf, in_file2);
 
    fclose(in_file1);
 
    // --------- 2
    rewind(in_file2);
    while(fgets(buf, sizeof(buf), in_file2) != NULL)
        if(buf[0] == 'A') ++n;
 
    fclose(in_file2);
    printf("%d\n", n);
 
    return 0;
}
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,269
07.02.2012, 02:22     Подсчитать количество строк, которые начинаются на букву «А» #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
#include <stdio.h>
#include <iostream>
#include <fstream>
#include <algorithm>
#include <ctype.h>
#include <string>
using namespace std;
 
 
 
 
 
int main () {
 ifstream iss ("источник.txt");
 ofstream oss ("приёмник.txt");
 string str;
 while(getline(iss, str)) {
  if (find_if (str.begin(), str.end(), [](char i) -> bool { return isdigit(i); })== str.end())
  oss<< str<< endl;
 }
 iss.close();
 oss.close();
 return 0;
}
Temikk2
2 / 2 / 0
Регистрация: 12.12.2011
Сообщений: 128
07.02.2012, 17:21  [ТС]     Подсчитать количество строк, которые начинаются на букву «А» #4
rangerx - спасибо за написанный Вами код но он не выполняет условия.

Добавлено через 1 минуту
kravam
C++
1
if (find_if (str.begin(), str.end(), [](char i) -> bool { return isdigit(i); })== str.end())
в этой строчке ошибку показывает.
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
07.02.2012, 18:31     Подсчитать количество строк, которые начинаются на букву «А» #5
Цитата Сообщение от Temikk2 Посмотреть сообщение
спасибо за написанный Вами код но он не выполняет условия.
Например?

Добавлено через 1 минуту
Цитата Сообщение от kravam Посмотреть сообщение
if (find_if (str.begin(), str.end(), [](char i) -> bool { return isdigit(i); })== str.end())
лямбда здесь не нужна
C++
1
if(find_if (str.begin(), str.end(), isdigit) == str.end())
Temikk2
2 / 2 / 0
Регистрация: 12.12.2011
Сообщений: 128
07.02.2012, 18:39  [ТС]     Подсчитать количество строк, которые начинаются на букву «А» #6
Ну с 1го файла во втором не чо не появляется.
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,269
07.02.2012, 19:53     Подсчитать количество строк, которые начинаются на букву «А» #7
Можно попроще
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
#include <stdio.h>
#include <iostream>
#include <fstream>
#include <algorithm>
#include <ctype.h>
#include <string>
using namespace std;
 
 
bool IoSs (char i) {
 return isdigit(i);
} 
 
 
 
int main () {
 ifstream iss ("источник.txt");
 ofstream oss ("приёмник.txt");
 string str;
 while(getline(iss, str)) {
  if(find_if (str.begin(), str.end(), IoSs) == str.end())
   oss<< str<< endl;
 }
 iss.close();
 oss.close();
 return 0;
}
А с этим
C++
1
if(find_if (str.begin(), str.end(), isdigit) == str.end())
не компилится
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.02.2012, 21:37     Подсчитать количество строк, которые начинаются на букву «А»
Еще ссылки по теме:

C++ Подсчитать количество слов списка, которые начинаются и заканчиваются одной и той же буквой
Дан текстовый файл. Найти количество строк, которые начинаются и заканчиваются одной буквой C++
Посчитать количество слов которые начинаются на букву "Б" C++

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

Или воспользуйтесь поиском по форуму:
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
07.02.2012, 21:37     Подсчитать количество строк, которые начинаются на букву «А» #8
Цитата Сообщение от kravam Посмотреть сообщение
А с этим
C++
1
if(find_if (str.begin(), str.end(), isdigit) == str.end())
не компилится
liveworkspace.org/code/7cb246498886471f99c361fe134d42a8

Добавлено через 20 минут
хотя, если использовать using namespace std; код действительно не компилируется(по причине конфликта с std::isdigit из <locale>). В таком случае следует сделать так
C++
1
if(find_if(str.begin(), str.end(), static_cast<int(*)(int)>(isdigit)) == str.end())
либо явно указать тип в параметрах шаблона
C++
1
if(find_if<string::iterator, int(*)(int)>(str.begin(), str.end(), isdigit) == str.end())
Yandex
Объявления
07.02.2012, 21:37     Подсчитать количество строк, которые начинаются на букву «А»
Ответ Создать тему
Опции темы

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