Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.11.2016, 11:39   #1
Ronin94
Пользователь
 
Регистрация: 28.01.2015
Сообщений: 13
По умолчанию Visual C++ Строки и файлы

Всем привет, помогите с задачей "Написать программу которая считывает строки из файла и выводит на экран строки НЕ содержащие двузначные числа". Собственно программу я сделал и все работает но есть загвоздка...строки с трехзначными числами и более тоже не выводит, а нужно чтобы только c двузначными не выводило
Текст программы:
#include <iostream>
#include <stdio.h>
#include <ctype.h>

using namespace std;

#define STRING_LEN 200 // длина строки

int main()
{
FILE *file;
char buff[STRING_LEN];
unsigned int n, i, dig;

file = fopen("text.txt", "r"); // открываем файл для чтения
if(!file) // если не открыли
return -1; // выходим
while(fgets(buff, STRING_LEN, file)) // читаем все строки до конца файла
{
dig = 0; // флаг наличия двузначного числа
n = strlen(buff); // получаем длину строки
if(n = 2) // если длина строки равнa 2
{
for(i = 0; i != n; i++) // проходим по всей строке
{
// устанавливаем значение флага присутствия двузначного числа
dig = isdigit(buff[i]) // текущий символ - цифра
& isdigit(buff[i+1]);// и следующий за ним символ - цифра

if(dig) // если есть двухзначное число
break; // выходим из цикла
}
if((!dig))// если двузначного числа в строке нет
cout << buff; // выводим строку в консоль
}
}
cout<<endl;
system("pause");
fclose(file); // закрываем файл
return 0; // выходим
}

Содержимое файла text.txt:
342frth
t!uop5tf
fgre/yhj
sha;deyk
r5yjg#hg67
8703ewqs?
Ronin94 вне форума Ответить с цитированием
Старый 24.11.2016, 11:49   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,830
По умолчанию

Код:
if(n = 2)
Это присваивание, сравнение ==

Код:
dig = isdigit(buff[i]) // текущий символ - цифра
& isdigit(buff[i+1]);// и следующий за ним символ - цифра

if(dig) // если есть двухзначное число
Нет проверки, что есть i+2 и он не цифра
p51x вне форума Ответить с цитированием
Старый 30.11.2016, 11:49   #3
Ronin94
Пользователь
 
Регистрация: 28.01.2015
Сообщений: 13
По умолчанию

не совсем понял что именно надо сделать
Ronin94 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Структуры, функции и файлы (Visual C++) ekv Помощь студентам 2 05.12.2014 11:15
Текстовые файлы (Visual C++) ekv Помощь студентам 2 05.12.2014 11:14
Текстовые файлы (Visual C++) ekv Помощь студентам 1 05.12.2014 09:14
visual studio c++ бинарные файлы Aziret Общие вопросы C/C++ 4 10.06.2012 19:40
Excel-файлы & Ms Visual C++ vasilisk-green Общие вопросы .NET 7 03.04.2011 22:35