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

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

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.01.2012, 18:48   #1
Kasperiks
Новичок
Джуниор
 
Регистрация: 07.01.2012
Сообщений: 2
По умолчанию C++ на Visual studio 2010

прошу помочь с данной прогой.
В текстовом файле в столбик записаны слова или числа. Вывести на экран содержимое файла, указав рядом с каждым словом, является ли оно палиндромом, т е читается в прямом и обратном порядке одинаково.

вот мой текст проги:
в файлик положил вот что:
121
5646123
13222
545
тоесть числа. у меня проблема с определением палиндрома. не могу понять как мне сравнить символы да еще и дописать в ту же строку сохранив существующее.

Код:
#include "StdAfx.h"
#include <fstream>
#include <iostream>
#include <conio.h>
#include <stdlib.h>
#include <string.h>

using namespace System;
using namespace std;
void readfile (char x[])
{	
	
	fstream f("D:\\Alex\\C++\\laba2_2.dat",ios::in); 
	if (f.fail()) 
	{
		cout<<"Ошибка: Файл не найден";
		getch(); //библиотека Conio.h
		exit;
	}
	f>>x;
	while (!f.eof())
	{
		cout<<x<<"\n";
		f>>x;
	}
	f.close();
}
void proverka(char x[])
{
	fstream f("D:\\Alex\\C++\\laba2_2.dat",ios::app);
	for (int i=0;i=strlen(x);i++)//библиотека string.h
	{
		f>>x;
		char* z="palindrom";
		strcpy(x,z);
		f<<x;

		//if (x[i]==x[strlen(x)]) x<<"da"; 
	}
	f.close();

}
int main()
{
	system("cls"); // очищение экрана, Библиотека stdlib.h
	char x[20];
	readfile(x);
	proverka(x);
	readfile(x);
	getch();
	

    return 0;
}

Последний раз редактировалось ACE Valery; 08.01.2012 в 18:03.
Kasperiks вне форума Ответить с цитированием
Старый 07.01.2012, 19:00   #2
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

Kasperiks

ну например для чисел оно может выглядеть так:

Код:
#include <iostream>
#include <fstream>
#include <locale>

bool is_palindrome(int number)
{
	int reverse = 0;
	for (int i = number; i; i /= 10)
	{
		int digit = i % 10;
		reverse = reverse * 10 + digit;
	}

	return number == reverse;
}

void check_palindrome(std::istream& is)
{
	int i;
	while (is >> i)
		std::cout << i << " => " << std::boolalpha << is_palindrome(i) << std::endl;
}

int main()
{
	setlocale(LC_ALL, "");

	std::ifstream ifs("numbers.txt");
	check_palindrome(ifs);

	return 0;
}
Вывод:

Код:
121 => true
5646123 => false
13222 => false
545 => true
Rififi вне форума Ответить с цитированием
Старый 07.01.2012, 19:13   #3
Kasperiks
Новичок
Джуниор
 
Регистрация: 07.01.2012
Сообщений: 2
По умолчанию

Спасибо огромное, я уже проверил.
все работает, ток вот некоторые моменты не могли бы мне пояснить

Код:
bool is_palindrome(int number)
{
	int reverse = 0;
	for (int i = number; i; i /= 10)
	{
		int digit = i % 10;
		reverse = reverse * 10 + digit;
	}

	return number == reverse;
}
вот эту функцию

Последний раз редактировалось ACE Valery; 08.01.2012 в 18:03.
Kasperiks вне форума Ответить с цитированием
Старый 07.01.2012, 19:19   #4
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

функция последовательно "отсекает" от исходного числа по цифре, и из них строит перевернутое число
Rififi вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
visual studio 2010>>>Cи? abzas Общие вопросы C/C++ 13 22.09.2011 20:58
Visual Studio 2010 и C Frolov Софт 12 19.12.2010 15:29
visual studio 2010 Voblax Visual C++ 8 12.12.2010 19:58
Expression Studio и Visual Studio 2010 ждать ли русские версии? Casper-SC Свободное общение 31 25.05.2010 14:31
Visual studio 2010 Dimarik Общие вопросы .NET 1 24.05.2010 01:43