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

Не работает программа - C++

Восстановить пароль Регистрация
 
Julia9311
3 / 3 / 0
Регистрация: 05.11.2011
Сообщений: 190
12.12.2012, 23:52     Не работает программа #1
По идее эта программа должна с помощью функции getline() считывать строки текстового файла и проверять, является ли записанное в каждой строке выражение палиндромом. Программа выдает много ошибок, помогите разобраться, пожалуйста!)

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
#include <iostream>
#include <string>
#include <algorithm>
 
bool isPal(const std::string& s, size_t i, size_t j)
{
    if(i >= s.length() || j >= s.length()) return false;
    if(i > j) std::swap(i, j);
    return std::equal(s.begin() + i, s.begin() + j, s.rbegin() + s.length() - j - 1);
}
 
int main()
{
    std::ifstream File_input("text1.txt", std::ifstream::in);
    std::string s;
    std::cout<<"Press ENTER to continue...";
    while(File_input) 
   {
    std::cout<<s<<std::endl;
    std::cin.get();
    std::getline(File_input, s);
    size_t i, j;
    std::cout << "i and j: ";
    std::cin >> i >> j;
    std::cout << (isPal(s, i, j)? "yes" : "no" );
    }
    File_input.close();
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
sovaz1997
CEO SOVAZ Corp.
 Аватар для sovaz1997
379 / 225 / 2
Регистрация: 17.12.2011
Сообщений: 816
Записей в блоге: 1
13.12.2012, 00:05     Не работает программа #2
А кто будет подключать #include <fstream> ???

Добавлено через 4 минуты
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
#include <iostream>
#include <string>
#include <algorithm>
#include <fstream>
 
bool isPal(const std::string& s, size_t i, size_t j)
{
    if(i >= s.length() || j >= s.length()) return false;
    if(i > j) std::swap(i, j);
    return std::equal(s.begin() + i, s.begin() + j, s.rbegin() + s.length() - j - 1);
}
 
int main()
{
    std::ifstream File_input("text1.txt", std::ifstream::in);
    std::string s;
    std::cout<<"Press ENTER to continue...";
    while(File_input) 
   {
    std::cout<<s<<std::endl;
    std::cin.get();
    std::getline(File_input, s);
    size_t i, j;
    std::cout << "i and j: ";
    std::cin >> i >> j;
    std::cout << (isPal(s, i, j)? "yes" : "no" );
    }
    File_input.close();
    return 0;
}
Julia9311
3 / 3 / 0
Регистрация: 05.11.2011
Сообщений: 190
13.12.2012, 22:52  [ТС]     Не работает программа #3
sovaz1997, спасибо, программа начала работать, но выдает что-то не то, что нужно... получается, отдельно ситывается содержимое файла и отдельно вводится строка, в которой нужно найти палиндром) как сделать так, чтобы именно строки текстового файла проверялись, являются они палиндромами или нет?)

Добавлено через 22 часа 14 минут
Вот попробовала немного по-другому сделать, но выдает ошибку


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <fstring>
#include <cstring>
int main()
{
    string str[260];
    ifstream fin("text1.txt"); 
    fin.getline(str, 260);
    if (!fin.is_open())  
    string::size_type ends=str.size();
    char* q = new char[ends];
    strcpy(q,str.c_str());
    bool key=0;
    for(string::size_type k=0;k!=(ends/2);++k){if(q[k]!=q[ends-1-k])key=1;}
    cout<<(key?"ne palindrom":"palindrom")<<endl;
    fin.close();
    system ("pause");
    return 0;
    }
c:\program files\microsoft visual studio\myprojects\1234567897654321\1234567898765432.cpp(2) : fatal error C1083: Cannot open include file: 'fstring': No such file or directory
Wolkodav
 Аватар для Wolkodav
599 / 452 / 32
Регистрация: 18.09.2012
Сообщений: 1,685
13.12.2012, 22:53     Не работает программа #4
что такое fstring? библиотека, я о таких не слышал.
Julia9311
3 / 3 / 0
Регистрация: 05.11.2011
Сообщений: 190
14.12.2012, 00:03  [ТС]     Не работает программа #5
С программой разобралась) но как теперь сделать, чтобы строки считывались именно с помощью getline()?

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
#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("text.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;
}
Yandex
Объявления
14.12.2012, 00:03     Не работает программа
Ответ Создать тему
Опции темы

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