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

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

Войти
Регистрация
Восстановить пароль
 
photonr
Заблокирован
#1

Строки в C++ - C++

11.01.2011, 18:58. Просмотров 567. Ответов 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
#include <iostream>
#include <stdio.h>
#include <ctype.h>
 
using namespace std;
 
#define STRING_LEN 70 // длина строки
 
int main()
{
FILE *file;
char buff[STRING_LEN];
unsigned int n, i, dig;
 
file = fopen("file.txt", "r"); // открываем файл для чтения
if(!file) // если не открыли
return -1; // выходим
while(fgets(buff, STRING_LEN, file)) // читаем все строки до конца файла
{
dig = 0; // флаг наличия двузначного числа
n = strlen(buff); // получаем длину строки
if(n >= 2) // если длина строки больше или равно 2
{
for(i = 0; i != n; i++) // проходим по всей строке
{
// устанавливаем значение флага присутствия двузначного числа
dig = isdigit(buff[i]) // текущий символ - цифра
& isdigit(buff[i+1]); // и следующий за ним символ - цифра
if(dig) // если есть двухзначное число 
break; // выходим из цикла
}
if(!dig) // если двузначного числа в строке нет
cout << buff; // выводим строку в консоль
}
}
fclose(file); // закрываем файл
return 0; // выходим
}
Спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.01.2011, 18:58
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Строки в C++ (C++):

Сгенерировать две произвольные строки и определить, является ли какое-либо слово первой строки частью второй строки - C++
Сгенерировать две произвольные строки и определить, является ли какое-либо слово первой строки частью второй строки. 1. Я дуб дубом,даже...

Добавить строки, начиная со строки К1 и до строки К2, в динамический массив строк - C++
Есть динамический массив строк. Заполняется, т.е. размер его уже известен будет. Но дальше нужно сделать задание: &quot;Добавить строки, начиная...

Удалить строки динамической матрицы, начиная со строки К1 и до строки К2 - C++
Сформировать динамический двумерный массив, заполнить его случайными числами и удалить строки, начиная со строки К1 и до строки К2 вот...

Ввести две символьных строки. Выполнить поиск второй строки в первой и вывести номер позиции первой строки, с которой вторая строка содер-жится в ней - C++
Ввести две символьных строки. Выполнить поиск второй строки в первой и вывести номер позиции первой строки, с которой вторая строка...

Прибавить ко всем элементам каждой строки максимальное значение этой строки - C++
добрый вечер! Помогите пожалуйста доработать код! Изменить текущий массив, прибавив ко всем элементам каждой строки максимальное...

Как считать строки из файла, если там больше одной строки? - C++
Как считать строки из файла в массив. Если в файле одна строка, то нет проблем, но если несколько, то при использовании функции fgets ...

3
asics
Freelance
Эксперт С++
2848 / 1783 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
11.01.2011, 19:24 #2
Цитата Сообщение от photonr Посмотреть сообщение
Написать программу которая считывает текст из файла и выводит на экран только строки, содержащие двузначные числа.
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
#include <iostream>
#include <fstream>
#include <string>
#include <cctype>
 
int main()
{
    const std::string file_name("1.txt");
    std::ifstream ifs(file_name.c_str());
 
    while(!ifs.eof())
    {
        std::string str, num;
        getline(ifs, str, '\n');
 
        bool key = false;
        for(std::string::size_type i = 0; i < str.length(); ++i)
        {
            if(isdigit(str[i]))
            {
                int j = i;
 
                while(isdigit(str[j]) || (isdigit(str[j]) || j < num.length()))
                    num.push_back(str[j++]);
 
                if(num.length() == 2)
                    key = true;
 
                i += num.length();
            }
 
            num.clear();
        }
 
        if(key)
            std::cout << str << '\n';
 
        str.clear();
    }
    return 0;
}
0
photonr
Заблокирован
11.01.2011, 19:54  [ТС] #3
Да, и в принципе все равно на чем, с или с++. На с даже лучше

Добавлено через 28 минут
asics,
C:\44\44.cpp(19) : error C2065: 'getline' : undeclared identifier
C:\44\44.cpp(29) : error C2039: 'push_back' : is not a member of 'basic_string<char,struct std::char_traits<char>,class std::allocator<char> >'
C:\44\44.cpp(37) : error C2039: 'clear' : is not a member of 'basic_string<char,struct std::char_traits<char>,class std::allocator<char> >'
C:\44\44.cpp(43) : error C2039: 'clear' : is not a member of 'basic_string<char,struct std::char_traits<char>,class std::allocator<char> >'
Error executing cl.exe.
О_о
0
asics
Freelance
Эксперт С++
2848 / 1783 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
11.01.2011, 19:57 #4
photonr, Незнаю, g++ молчит.
0
11.01.2011, 19:57
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.01.2011, 19:57
Привет! Вот еще темы с ответами:

Вычислить длину введенной строки и вывести символы строки с четными индексами - C++
Напишите программу, которая требует ввода строки с клавиатуры. Программа вычисляет длину строки и выводит на экран только те символы...

Чтение через fscanf_s части строки с пробелом (и запись этой же строки) - C++
нужно записать в файл строку, содержащую через табуляцию int, char, char, char, float, int. Далее необходимо из такой же строки вывести...

Найти среднее арифметическое каждой строки матрицы и отсортировать строки по возрастанию - C++
Дана квадратная матрица. Найти среднее арифметическое каждой строки и отсортировать строки по возрастанию этих характеристик

Упорядочить символы строки B в алфавитном порядке и удалить латинские буквы из строки A - C++
&quot;Даны строки A и B. Если в A есть латинские буквы, а в B нет повторяющихся символов, то упорядочить символы B в алфавитном порядке и...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

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