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

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

Восстановить пароль Регистрация
 
Hydra
2 / 2 / 0
Регистрация: 17.02.2011
Сообщений: 32
23.04.2011, 16:58     Палиндромы в текстовом файле на С++ #1
Задача
Подсчитать количество слов-палиндромов в текстовом файле (.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;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Hydra
2 / 2 / 0
Регистрация: 17.02.2011
Сообщений: 32
23.04.2011, 19:42  [ТС]     Палиндромы в текстовом файле на С++ #2
Возможно необходимо прописать функцию для выделения слов из текстового файла, с последующим применением функции для определения палиндрома или все это можно в мейне прописать?
Проблема в том что в 1 посту алгоритм нахождения количества палиндромов к текстовому файлу не совсем подходит (имхо). возможно существует более удачный способ это сделать.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 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;
}
neske
1419 / 786 / 55
Регистрация: 26.03.2010
Сообщений: 2,694
23.04.2011, 20:52     Палиндромы в текстовом файле на С++ #4
ForEveR, а в str будет читаться текст до первого пробела?
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
23.04.2011, 20:56     Палиндромы в текстовом файле на С++ #5
neske, До пробелы или до перевода строки или до таба. Вообщем до isspace я так понимаю)
Hydra
2 / 2 / 0
Регистрация: 17.02.2011
Сообщений: 32
23.04.2011, 21:14  [ТС]     Палиндромы в текстовом файле на С++ #6
Большое спасибо
Yandex
Объявления
23.04.2011, 21:14     Палиндромы в текстовом файле на С++
Ответ Создать тему
Опции темы

Текущее время: 00:06. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru