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

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

Войти
Регистрация
Восстановить пароль
 
Hydra
2 / 2 / 0
Регистрация: 17.02.2011
Сообщений: 32
#1

Палиндромы в текстовом файле на С++ - C++

23.04.2011, 16:58. Просмотров 996. Ответов 5
Метки нет (Все метки)

Задача
Подсчитать количество слов-палиндромов в текстовом файле (.txt). Cлова разделены пробелом или каждое записано с новой строки.

Пример
asa mom dad joy
3 палиндрома

или

Пример
asa
mom
dirt
noon
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
39
40
41
42
43
44
45
46
#include "stdafx.h"
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
using namespace std; 
int main()
{   
   int n,j,f,k;
   char ar1[100];
   char ar2[100];
   FILE *f1;
   f1=(fopen("D:\\1.txt","r"));
   fgets(ar1,100,f1);              
   n=strlen(ar1);   
   j=0; f=0; k=0;   
   while(k<n)               
   {
       if(ar1[k]==' ')       
   {
   for(int j=k; j<n; j++) 
   ar1[j]=ar1[j+1];
   n--;
   k--;
   }                              
   k++;
   }
   for(int i=n-1; i>=0; i--)               
   {
   for(j=f; j<n; j++)
   {
    ar2[j]=ar1[i];
       }
            j=0;
           f++;
              }
            int p;                                  
                p=strncmp(ar1,ar2,n); 
         if(p==0) 
        cout << "Eto polindrom\n\n"; 
          else 
            cout << "Eto ne polindrom\n\n";
 
 
return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.04.2011, 16:58
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Палиндромы в текстовом файле на С++ (C++):

Найти в текстовом файле слова-палиндромы и записать их в новый файл - C++
Найти в данном файле слова палиндромы и записать их в новый файл (палиндромы - слова, читаются одинаково слева направо и справа налево).

Удалить в текстовом файле 1.txt все строки, которые встречаются в текстовом файле 2.txt - C++
например имеется текстовый файл 1.txt c таким содержанием 111 222 333 444 555 и имеется текстовый файл 2.txt c таким...

Найти в файле слова-палиндромы - C++
Вообщем засада) Дана задача: Имеется текстовый файл, содержащий текст на русском языке. Найти в нем слова-палиндромы...

Найти в файле слова-палиндромы - C++
1 Найти в файле f все слова, какие слева направо и наоборот читаются одинаково и сложить из них новый файл q. 2 Запись имеет вид:...

Поиск в текстовом файле всех слов, заданных в другом текстом файле - C++
Вообщем такое задание: Поиск в текстовом файле всех слов, заданных в другом текстом файле; Не могу понять почему не работает: ...

Найти все числа-палиндромы, которые не больше 100, и их квадраты тоже палиндромы - C++
Натуральное число называется палиндромом, если его запись читается однинакого с начала и с конца (4884, 393, 1). Найти все числа-паиндромы,...

5
Hydra
2 / 2 / 0
Регистрация: 17.02.2011
Сообщений: 32
23.04.2011, 19:42  [ТС] #2
Возможно необходимо прописать функцию для выделения слов из текстового файла, с последующим применением функции для определения палиндрома или все это можно в мейне прописать?
Проблема в том что в 1 посту алгоритм нахождения количества палиндромов к текстовому файлу не совсем подходит (имхо). возможно существует более удачный способ это сделать.
0
ForEveR
В астрале
Эксперт С++
7978 / 4737 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
23.04.2011, 20:42 #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
#include <iostream>
#include <fstream>
#include <string>
 
bool isPal(const std::string& str)
{
    return str == std::string(str.rbegin(), str.rend());
}
 
int main()
{
    std::string str;
    std::string f_name;
    std::getline(std::cin, f_name);
    std::ifstream ifs(f_name.c_str());
    if(!ifs)
    {
       std::cerr<< "Can`t open file: "<< f_name;
       return 1;
    }
    int cnt = 0;
    while(ifs >> str)
       if(isPal(str))
          ++cnt;
    std::cout<<cnt;
}
2
neske
1498 / 865 / 84
Регистрация: 26.03.2010
Сообщений: 2,966
23.04.2011, 20:52 #4
ForEveR, а в str будет читаться текст до первого пробела?
1
ForEveR
В астрале
Эксперт С++
7978 / 4737 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
23.04.2011, 20:56 #5
neske, До пробелы или до перевода строки или до таба. Вообщем до isspace я так понимаю)
2
Hydra
2 / 2 / 0
Регистрация: 17.02.2011
Сообщений: 32
23.04.2011, 21:14  [ТС] #6
Большое спасибо
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.04.2011, 21:14
Привет! Вот еще темы с ответами:

Найти числа от 1 до 99 - палиндромы, которые при возведении в квадрат также дают палиндромы (используя циклы) - C++
Задание: Натуральное число является палиндромом, если его запись читается одинаково с начала и с конца (как, например , 393, 1). Найти...

Движение в текстовом файле - C++
Мне нужно двигаться и считывать в строку символы до определенного символа, означающего конец строки(той в которую я записываю символы)....

Поиск в текстовом файле - C++
Всем привет! Нужно на С++ написать программу,в поиске похожего не нашёл. Вот сама задача - Имеются два текстовых файла. Определить в каком...

Поиск в текстовом файле - C++
Есть тестовый файл такого типа: Имя: Плотник Трудоемкость: 32 Время: 22 Квалификация: бывалый Необходимо создать поиск по...


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

Или воспользуйтесь поиском по форуму:
6
Yandex
Объявления
23.04.2011, 21:14
Ответ Создать тему
Опции темы

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