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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.06.2012, 17:56   #1
Александр293
 
Регистрация: 08.06.2012
Сообщений: 3
По умолчанию C++ работа с файлами, фун-ция strtok

Ребят, помоги разобраться почему не работает прогга. нужно написать консольную утилиту с опциями (в коде их нет пока)Найти в тексте все палиндромы и вывести на экран или в файл. Палиндромом считать предложение (последовательность символов, завершающуюся точкой), которое можно прочитать одинаково в обоих направлениях, при этом регистр символов, знаки препинания и пробелы игнорируются. Примеры палиндромов: «I prefer Pi», «Да, искать такси — ад!».
Опции:
• -x=X – искать палиндромы не длиннее X символов (если опция не задана, то искать палиндромы любой длины);
• -n=N – искать палиндромы не короче N символов (если опция не задана, то искать палиндромы любой длины);
• -l – вывести кроме палиндромов также номера строк исходного текста, где соответствующие палиндромы были найдены. - задание.

// laba3.cpp: определяет точку входа для консольного приложения.
//

#include "stdafx.h"
#include<iostream>
#include <stdio.h>
#include<windows.h>
using namespace std;
#define n 250
#define name "C:\\test laba3\\text.txt"

int strcompare(const char* str1, const char* str2)
{
for( ; *str1 && *str2; ++str1, ++str2)
{
if((tolower(*str1) == tolower(*str2)))
return 1;
else return -1;
}

}

int main()
{
setlocale(LC_ALL, "Russian");
FILE *file1, *file2;

char str1 [n];
if((file1 = fopen(name, "r")) == 0)//проверяем, возможно ли его открыть
{
printf("Не удается открыть файл! Проверьте правильность ввода пути!");
exit(1);
}

while(!feof(file1))//пока не конец файла
{
fgets(str1, n-1, file1);//получаем из файла по строке и заносим ее в буфер
printf("%s",str1);
};

printf("\n");
/*char* str1 = new char [n];
cout << "Введите предложение: " ;
cin.getline(str1, n-1);
int len = strlen (str1);
int size = sizeof(str1)*(len+1);
cout << "Длина строки равна: " << len << "\n" << "размер вашей строки: " << size << "\n";*/
char* str2 = new char[n]; strcpy(str2, str1);
char* str3 = strrev(str2);
cout << "Ваша строка: " << str1 << "\nи она же после обработки (токены): ";
char *p = new char [n];
p = strtok(str1, " !.,;:""\t\n-'");
printf(p);
do
{
p = strtok('\0', " !.,;:""\t\n-'");
if(p) printf("%s", p);
} while(p);
cout << "\nВаша строка в обратном порядке: " << str3 << "\n";
cout << "И также обработанная строка по токенам(в обратном порядке): ";
char *f = new char [n];
f = strtok(str2, " !.,;:""\t\n-");
printf(f);
do
{
f = strtok('\0', " !.,;:""\t\n-");
if(f) printf("%s", f);
} while(f);
cout << "\n";
int pas = strcompare(str1, str3);
cout << "Результат сравнения: '1' - предложение-полиндром, '-1' - нет: " << pas << "\n";
fclose(file1);
return 0;
}
Александр293 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа со строками. strtok strrev asmars Общие вопросы C/C++ 16 07.04.2012 09:58
Построить график фун-ии MrVi Помощь студентам 6 17.03.2012 23:33
Рекурсивная ф-ция (обьяснить) Zedx Помощь студентам 14 26.09.2010 23:34
Pascal Сама обработка, с входом на фун-цию BanzoO Помощь студентам 3 08.12.2009 18:03
Фильтрующая ф-ция для мышки |{ot Win Api 0 13.11.2009 02:54