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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.11.2009, 21:03   #1
Blondy
Участник клуба
 
Аватар для Blondy
 
Регистрация: 07.07.2009
Сообщений: 1,385
По умолчанию C++ палиндром и логическая функция

Здравствуйте, дорогие форумчане!

Я тут с палиндромом и логической функцией запуталась, ну не выходит каменный цветок((((Помогите поправить код (в С++). По архиву посмотрела - все, в основном для Паскаля, что смогла скрутила, довести до ума никак(((( Пыталась ее решить с символьным массивом. А какие возможны еще варианты решения, если не использовать массив?

Задача при нем)))))))))
Написать функцию, которая возвращает True, если строка – палиндром. Должна подходить как для букв, так и для цифр.

Код:
#include "stdafx.h"
#include<conio.h>
#include<iostream>
using namespace std;

bool Paly(char CH[],bool Flag=true);
char ch[], Ch[], CH[];
bool Flag;
  int i;
bool Paly(CH, Flag);
int main()
{
  
	cout<<"Vvedite frazy: "<<endl;
	cin>>CH[i];
	cout<<endl;
if (!Flag)
     cout<<"Fraza "<<CH<<" ne palindrom"<<endl;
  else
     cout<<"Fraza "<<CH<<" palindrom"<<endl;
	getch();
  return 0;
}
//******************************************
bool Paly(char CH[], bool Flag=true);
{
	{for (i=0; i<Length, i++)
	do
	{Ch[i]=CH[Length-i+1];}
    }
Ch[i]==CH[];
return Flag;
	}
"Все мы жаждем чудес. Чисто человеческое свойство." Carl Sagan

Последний раз редактировалось Blondy; 15.11.2009 в 21:09.
Blondy вне форума Ответить с цитированием
Старый 16.11.2009, 01:24   #2
Secc
Пользователь
 
Аватар для Secc
 
Регистрация: 19.10.2009
Сообщений: 30
По умолчанию

без массива не обойтись! завтро напишу. Смысл таков-строку с конца и с начала рассматривать до середины и потом сравнить ..
Спасибо! Кэп!!
FORZA LAZIO e NON MOLLARE MAI !!
Secc вне форума Ответить с цитированием
Старый 16.11.2009, 09:51   #3
Blondy
Участник клуба
 
Аватар для Blondy
 
Регистрация: 07.07.2009
Сообщений: 1,385
По умолчанию

Ждемс)) Очень просим)) Без консультации спеца мне пока никак))
"Все мы жаждем чудес. Чисто человеческое свойство." Carl Sagan
Blondy вне форума Ответить с цитированием
Старый 16.11.2009, 11:25   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Такое подойдет?
Код:
{
 char e[50]="мама амам",s[50]="",t[1];
 for (int i = 0; i < strlen(e); i++) {
  if (e[i]!=' ') {t[0]=e[i];
   strncat(s,t,1);
  }
 }
 if (strlen(s)%2==0) {
  int k=strlen(s)/2;
  for (int i = 0; i < (strlen(s)/2); i++) {
	if (s[i]==s[strlen(s)-i]) k--;
  }
  if (!k) {cout<<"No";} else {cout<<"Yes";}
 }
 else {
  cout<<"No";
 }
 cin.get();
	return 0;
}
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 16.11.2009, 12:15   #5
Secc
Пользователь
 
Аватар для Secc
 
Регистрация: 19.10.2009
Сообщений: 30
По умолчанию

Код:
#include <windows.h>
#include <iostream.h>
#include <string.h>
#include <stdlib.h>
int main()
{
SetConsoleOutputCP(1251);
char ar1[100];
char ar2[100];
cout<<"vvesti frazu \n";
cin.getline(ar1,100,'\n');   // вводим строку
int n,j,f,k;
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); // функция сравнивает до n-ого эл., если равны то возвр.0
if(p==0) cout <<"is polindrom\n\n";
else cout<<"is not polindrom\n\n";
system("pause");

        return 0;
}
Немного сложновато , но как вариант..
Спасибо! Кэп!!
FORZA LAZIO e NON MOLLARE MAI !!

Последний раз редактировалось Secc; 16.11.2009 в 12:19.
Secc вне форума Ответить с цитированием
Старый 17.11.2009, 15:37   #6
Blondy
Участник клуба
 
Аватар для Blondy
 
Регистрация: 07.07.2009
Сообщений: 1,385
По умолчанию

Ага, ребят, спасибо, сейчас буду проверять.

Я прошу прощения за наивный вопрос, преподаватель просил решить функцией, которая возвращает True: мне всегда казалось что тогда функция должна быть логической и до скобок должен стоять тип bool - а тут получается, что достаточно лишь объявить логическим один аргумент и функция вернет True. Это так? Просто я в функциях не очень сильна((((
"Все мы жаждем чудес. Чисто человеческое свойство." Carl Sagan
Blondy вне форума Ответить с цитированием
Старый 17.11.2009, 16:13   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну навскидку:
Код:
bool func() {

 char e[50]="мама амам",s[50]="",t[1];
 for (int i = 0; i < strlen(e); i++) {
  if (e[i]!=' ') {t[0]=e[i];
   strncat(s,t,1);
  }
 }
 if (strlen(s)%2==0) {
  int k=strlen(s)/2;
  for (int i = 0; i < (strlen(s)/2); i++) {
	if (s[i]==s[strlen(s)-i]) k--;
  }
  if (!k) {return TRUE} else {return FALSE}
 }
 else {
  return FALSE;
 }
}
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.11.2009, 16:34   #8
Secc
Пользователь
 
Аватар для Secc
 
Регистрация: 19.10.2009
Сообщений: 30
По умолчанию

функция типа int может возвращать только целочисленные значения..
точно также и с другими типами. bool - либо тру , либо фолс
Спасибо! Кэп!!
FORZA LAZIO e NON MOLLARE MAI !!
Secc вне форума Ответить с цитированием
Старый 17.11.2009, 21:28   #9
Blondy
Участник клуба
 
Аватар для Blondy
 
Регистрация: 07.07.2009
Сообщений: 1,385
По умолчанию

Спасибо)))) Буду крутить комментарии )) я не очень сильна в функциях - теорию читаю, вроде все понятно, а как начинаешь писать - обязательно споткнешься. Поэтому и шла к Вам за помощью.
"Все мы жаждем чудес. Чисто человеческое свойство." Carl Sagan
Blondy вне форума Ответить с цитированием
Старый 18.11.2009, 09:11   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Blondy
Ну если что спрашивай - поясним.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Палиндром. Паскаль. Nubas Помощь студентам 6 17.12.2009 21:23
Палиндром в строке semennn Помощь студентам 6 04.05.2009 23:36
Палиндром Carbon Помощь студентам 9 12.11.2007 14:32
"Логическая функция" ZYRGiX Win Api 4 29.08.2007 13:04