![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 08.06.2012
Сообщений: 3
|
![]()
Ребят, помоги разобраться почему не работает прогга. нужно написать консольную утилиту с опциями (в коде их нет пока)Найти в тексте все палиндромы и вывести на экран или в файл. Палиндромом считать предложение (последовательность символов, завершающуюся точкой), которое можно прочитать одинаково в обоих направлениях, при этом регистр символов, знаки препинания и пробелы игнорируются. Примеры палиндромов: «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; } |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Работа со строками. 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 |