Ir para conteúdo


- - - - -

Capicua PHP


  • Por favor inicie sessão para responder
25 respostas a este tópico

#1 NunoRibeiro22

NunoRibeiro22

    null

  • Membro
  • Pip
  • 14 mensagens

Publicado 29 de Março de 2010 - 17:20

Boas...
sou aluno e tenho que fazer um trabalho  em dreamweaver (saber se nome/numero é capicua, ou não) cliente-servidor
é trabalho simples em que o cliente escreve nome/numero e o cliente responde se é ou não um capicua.....se me poderem ajudar a fazer, agradecia...
aguardo ajuda...

#2 scorch

scorch

    Unsigned User

  • Moderador
  • PipPipPipPipPipPip
  • 3320 mensagens

Publicado 29 de Março de 2010 - 17:28

O que é que já tens feito na parte do servidor? Que dúvidas é que tens?

#3 NunoRibeiro22

NunoRibeiro22

    null

  • Membro
  • Pip
  • 14 mensagens

Publicado 29 de Março de 2010 - 17:33

Ver Mensagemscorch, em 29 de Março de 2010 - 17:28, disse:

O que é que já tens feito na parte do servidor? Que dúvidas é que tens?

já tentei fazer e pedir ajuda a colegas mas nao deu em nada...
o trabalho até é bastante simples, mas ainda nao consegui fazer
gostava é que alguem que perceba das capicuas me ajudasse a fazer...

#4 Caya

Caya

    CRLF

  • Membro
  • PipPipPipPipPip
  • 530 mensagens

Publicado 29 de Março de 2010 - 17:57

Divides o número/palavra em 2;
Invertes a ordem da segunda parte (strrev);
Comparas se são iguais;
Voilá, ai tens um verdadeiro ou falso;

PS: Tens de fazer em dreamweaver? o.O

#5 NunoRibeiro22

NunoRibeiro22

    null

  • Membro
  • Pip
  • 14 mensagens

Publicado 29 de Março de 2010 - 18:06

Ver MensagemCaya, em 29 de Março de 2010 - 17:57, disse:

Divides o número/palavra em 2;
Invertes a ordem da segunda parte (strrev);
Compares se são iguais;
Voilá, ai tens um verdadeiro ou falso;

PS: Tens de fazer em dreamweaver? o.O

tenho mesmo que fazer em dreamweaver...
pois isso na teoria é facil, mas na pratica para um utilizador inexperiente como eu...

nao vou ser hipocrita, se poderem fazer o essencial agradeci, agora.. eu sei que nem toda a gente o quer fazer...

#6 KiNgPiTo

KiNgPiTo

    Unsigned User

  • Membro
  • PipPipPipPipPipPip
  • 1050 mensagens

Publicado 29 de Março de 2010 - 19:11

Deixo-te aqui uma função que usei já há um valente tempo num trabalho quando andava a aprender:

Código (PHP):
<?php

//Funcao de retorno capicua
function capicua($frase){
        $len = strlen($frase); //length da string
        $par = (1 & $len) ? 'Impar' : 'Par'; //Se par ou impar para nao associar o do meio
       
        if ( $par == 'Par' ){   // Se par
                $str1 = substr($frase, 0, $len / 2); // Divide por 2 e cria uma string da 1ª parte
                $str2 = strrev(substr($frase, $len / 2)); // Divide por 2 e cria uma string da 2ª parte e ainda faz um reverse
        }else{   // Se impar
                $str1 = substr($frase, 0, $len / 2); // Divide por 2 e cria uma string da 1ª parte
                $str2 = strrev(substr($frase, ($len / 2) + 1)); // Divide por 2 e soma um para ignorar o do meio e cria uma string da 2ª parte e faz o reverse
        }
       
        if ( $str1 == $str2 ) // Se forem iguais, é capicua e retorna true
                $ret = true;
        else
                $ret = false; // Se não forem iguais, não é capicua e retorna false
               
        return $ret; // Retorna o valor
}

//exemplo de uso...
if ( capicua("01hha10") ) // Chama a função capicua e adiciona como parametro a frase que queremos verificar
        echo 'É uma capicua'; // Se true, imprime É uma capicua
else
        echo 'Não é uma capicua'; // Se false, imprime Não é uma capicua

?>

Agora que vejo isto com melhor olho, pode ser reduzido, mas dá para perceber a ideia e podes adaptar ao que precisares...

#7 NunoRibeiro22

NunoRibeiro22

    null

  • Membro
  • Pip
  • 14 mensagens

Publicado 29 de Março de 2010 - 21:55

antes de mais obrigado..

pois...vou testar o quanto antes...
não te esqueças que  é uma arquitecturas Cliente-Servidor, logo terá que existir um ficheiro php para cliente e outro pro servidor...

#8 Caya

Caya

    CRLF

  • Membro
  • PipPipPipPipPip
  • 530 mensagens

Publicado 30 de Março de 2010 - 09:11

Ver MensagemNunoRibeiro22, em 29 de Março de 2010 - 18:06, disse:

tenho mesmo que fazer em dreamweaver...
pois isso na teoria é facil, mas na pratica para um utilizador inexperiente como eu...

nao vou ser hipocrita, se poderem fazer o essencial agradeci, agora.. eu sei que nem toda a gente o quer fazer...

Como é que o teu professor vai saber se fizeste no Dreamweaver ou no bloco de notas?

A questão aqui não é querer fazer ou não, mas este fórum serve para ajudar os users a aprender a programar, não para programar por eles. O que eu te disse no meu primeiro post diz exactamente o que tens de fazer, até te disse funções que tens de utilizar, bastava "traduzires" para PHP. Quando tens a teoria toda, não há nada mais fácil que a prática...

#9 NunoRibeiro22

NunoRibeiro22

    null

  • Membro
  • Pip
  • 14 mensagens

Publicado 30 de Março de 2010 - 09:58

Ver MensagemCaya, em 30 de Março de 2010 - 09:11, disse:

Como é que o teu professor vai saber se fizeste no Dreamweaver ou no bloco de notas?

A questão aqui não é querer fazer ou não, mas este fórum serve para ajudar os users a aprender a programar, não para programar por eles. O que eu te disse no meu primeiro post diz exactamente o que tens de fazer, até te disse funções que tens de utilizar, bastava "traduzires" para PHP. Quando tens a teoria toda, não há nada mais fácil que a prática...

o trabalho consiste na elaboração de 1 programa em dreamweaver em que o cliente escreve um numero/nome e o servidor responde se o numero/nome é ou não capicua.
o problema é que percebo pouco de dreamweaver logo nao sei fazer o exercicio...apesar de ser um trabalho simples...

#10 Caya

Caya

    CRLF

  • Membro
  • PipPipPipPipPip
  • 530 mensagens

Publicado 30 de Março de 2010 - 10:27

O Dreamweaver é apenas um IDE, ele não faz programas, ele fornece um ambiente para os desenvolver. O que fazes no Dreamweaver podes fazer perfeitamente no Bloco de notas do Windows.

#11 KiNgPiTo

KiNgPiTo

    Unsigned User

  • Membro
  • PipPipPipPipPipPip
  • 1050 mensagens

Publicado 30 de Março de 2010 - 10:36

Quanto ao lado do servidor, já tens o que deixei, não precisas de mais. Quanto ao lado do cliente, crias um form cuja acção vai ser o script onde metas o código que te deixei, procuras na net o que é o POST e como passar os dados do form para o script, e chamas a função com o valor que é passado...

Quanto ao ser em dreamweaver ou não, é relativo. Pode haver profs que para além do ensino do html ou do php em si, podem querer adoptar uma ferramenta para a construção do mesmo usando um wysiwyg ou um editor de código apenas, talvez o dele optou por escolher o dreamweaver, óbvio que não obriga a que seja lá criado, o código é igual em todo o lado, mas não deixa de ser ensinado para além de uma linguagem, uma ferramenta de edição.

#12 NunoRibeiro22

NunoRibeiro22

    null

  • Membro
  • Pip
  • 14 mensagens

Publicado 30 de Março de 2010 - 12:04

agradeço a quem ajudou, agora vou ver o que consigo fazer...
se souberem de mais alguma coisa....avisem...

#13 NunoRibeiro22

NunoRibeiro22

    null

  • Membro
  • Pip
  • 14 mensagens

Publicado 30 de Março de 2010 - 19:09

tenho aqui um exemplo do que fiz num trabalho em que cliente insere um numero e o servidor responde se é par ou impar..
agora queria é q me ajudassem, (em vez de ter o codigo para o par ou impar) era o codigo pra ver se é ou nao uma capicua....


Código (PHP):
<?php

// don't timeout
set_time_limit (0);

// set some variables
$host = "localhost";
$port = 1234;

// create socket
$socket = socket_create(AF_INET, SOCK_STREAM, 0) or die("Não consegui criar o socket\n");

// bind socket to port
$result = socket_bind($socket, $host, $port) or die("Não consegui ligar o socket\n");

// start listening for connections
$result = socket_listen($socket, 3) or die("Não consegui estabalecer escutas\n");

echo "À espera de clientes...\n";

// accept incoming connections
// spawn another socket to handle communication
$spawn = socket_accept($socket) or die("Não consegui aceitar conexão\n");

echo "Pedido de cliente aceite\n";

// write a welcome message to the client
$welcome = "Bem vindo ao inverter a palavra!\n\r? ";
socket_write($spawn, $welcome, strlen ($welcome)) or die("Não consegui enviar a palavra\n");


// read client input
$input = socket_read($spawn, 1024, 1) or die("Não consegui ler do cliente\n");

if (trim($input) != "")
{
echo "Texto recebido: $input\n";

// reverse client input and send back
if($input%2==0)
{
$output = "par"."\n\r? ";
}
else
{
$output="impar"."\n\r? ";
}



socket_write($spawn, $output, strlen ($output)) or die("Não consegui enviar a palavra\n");
echo "palavra enviada: " . trim($output) . "\n";

}

// close primary socket
socket_close($socket);
echo "Socket terminado\n";

?>

APARTE: Usa o Geshi, torna o post mais apresentável. :)

#14 softklin

softklin

    Unsigned User

  • Membro
  • PipPipPipPipPipPip
  • 3949 mensagens

Publicado 30 de Março de 2010 - 20:08

Bem, é original usar o PHP dessa forma. De qualquer modo, acho que uma forma muito fácil de veres se um número é capicua é usar a função:

Código (PHP):
function ehCapicua($numero) {
  // cast para o tipo string, de forma a operar como se fosse texto;
  $numero = (string) $numero;
  return ($numero == strrev($numero));
}

A função retorna true se o número for uma capicua, ou falso caso contrário. Não deve apresentar dificuldades adoptar para o teu código.

#15 NunoRibeiro22

NunoRibeiro22

    null

  • Membro
  • Pip
  • 14 mensagens

Publicado 31 de Março de 2010 - 11:55

o que eu queria exactamente, era... substituir o que tenho....

{
$output = "par"."\n\r? ";
}
else
{
$output="impar"."\n\r? ";
}

pela funçao da capicua
...

#16 KiNgPiTo

KiNgPiTo

    Unsigned User

  • Membro
  • PipPipPipPipPipPip
  • 1050 mensagens

Publicado 31 de Março de 2010 - 12:41

Código (PHP):
<?php

function ehCapicua($numero) {
  // cast para o tipo string, de forma a operar como se fosse texto;
  $numero = (string) $numero;
  return ($numero == strrev($numero));
}

// don't timeout
set_time_limit (0);

// set some variables
$host = "localhost";
$port = 1234;

// create socket
$socket = socket_create(AF_INET, SOCK_STREAM, 0) or die("Não consegui criar o socket\n");

// bind socket to port
$result = socket_bind($socket, $host, $port) or die("Não consegui ligar o socket\n");

// start listening for connections
$result = socket_listen($socket, 3) or die("Não consegui estabalecer escutas\n");

echo "À espera de clientes...\n";

// accept incoming connections
// spawn another socket to handle communication
$spawn = socket_accept($socket) or die("Não consegui aceitar conexão\n");

echo "Pedido de cliente aceite\n";

// write a welcome message to the client
$welcome = "Bem vindo ao inverter a palavra!\n\r? ";
socket_write($spawn, $welcome, strlen ($welcome)) or die("Não consegui enviar a palavra\n");


// read client input
$input = socket_read($spawn, 1024, 1) or die("Não consegui ler do cliente\n");

if (trim($input) != "")
{
echo "Texto recebido: $input\n";

$varaux = ehCapicua($input);
$output = $varaux."\n\r? ";

socket_write($spawn, $output, strlen ($output)) or die("Não consegui enviar a palavra\n");
echo "palavra enviada: " . trim($output) . "\n";

}

// close primary socket
socket_close($socket);
echo "Socket terminado\n";

?>


#17 NunoRibeiro22

NunoRibeiro22

    null

  • Membro
  • Pip
  • 14 mensagens

Publicado 31 de Março de 2010 - 15:01

antes de mais agradeço...

tens a certeza que o codigo k me passastes está correcto?

#18 KiNgPiTo

KiNgPiTo

    Unsigned User

  • Membro
  • PipPipPipPipPipPip
  • 1050 mensagens

Publicado 31 de Março de 2010 - 15:53

adaptando ao que inseriste, sim... não há nada como testares

#19 NunoRibeiro22

NunoRibeiro22

    null

  • Membro
  • Pip
  • 14 mensagens

Publicado 01 de Abril de 2010 - 14:52

estive a testar e o que programa nao funciona....tentei alterar e adaptar, mas mesmo assim nao consegui por a funcionar....se poderem continuar a ajudar....

#20 Caya

Caya

    CRLF

  • Membro
  • PipPipPipPipPip
  • 530 mensagens

Publicado 05 de Abril de 2010 - 10:09

Em que linguagem criaste a aplicação cliente?