• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Sign in to follow this  
Followers 0
NunoRibeiro22

Capicua PHP

26 posts in this topic

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...

0

Share this post


Link to post
Share on other sites

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

0

Share this post


Link to post
Share on other sites

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...

0

Share this post


Link to post
Share on other sites

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

0

Share this post


Link to post
Share on other sites

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...

0

Share this post


Link to post
Share on other sites

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

<?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...

0

Share this post


Link to post
Share on other sites

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...

0

Share this post


Link to post
Share on other sites

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...

0

Share this post


Link to post
Share on other sites

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...

0

Share this post


Link to post
Share on other sites

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.

0

Share this post


Link to post
Share on other sites

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.

0

Share this post


Link to post
Share on other sites

agradeço a quem ajudou, agora vou ver o que consigo fazer...

se souberem de mais alguma coisa....avisem...

0

Share this post


Link to post
Share on other sites

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....

<?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. :)

0

Share this post


Link to post
Share on other sites

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:

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.

0

Share this post


Link to post
Share on other sites

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

{

$output = "par"."\n\r? ";

}

else

{

$output="impar"."\n\r? ";

}

pela funçao da capicua

...

0

Share this post


Link to post
Share on other sites
<?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";

?>

0

Share this post


Link to post
Share on other sites

antes de mais agradeço...

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

0

Share this post


Link to post
Share on other sites

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....

0

Share this post


Link to post
Share on other sites

Em que linguagem criaste a aplicação cliente?

em php....dreamweaver, tanto o cliente, como o servidor foi em php...

0

Share this post


Link to post
Share on other sites

cliente...

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>
<?php 
// form not yet submitted 
if(empty($_POST['submit']))
{ 
?> 
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"> 
Enter some text:<br> 
<input type="Text" name="xptoo" size="15" id="xptoo">
<input type="submit" name="submit" value="Send"> 
</form> 
<?php 
} 
else 
{ 
// form submitted 

// where is the socket server? 
$host="localhost"; 
$port = 1234; 

// create socket 
$socket = socket_create(AF_INET, SOCK_STREAM, 0) or die("Could not create socket\n"); 

// connect to server 
$result = socket_connect($socket, $host, $port) or die("Could not connect to server\n"); 

$mensagem=socket_read ($socket, 1024) or die("Could not read server response\n"); 

// send string to server 
$xptoo=$_POST['xptoo']."\n";
socket_write($socket, $xptoo, strlen($xptoo)) or die("Could not send data to server\n"); 

// get server response 
$result = socket_read ($socket, 1024) or die("Could not read server response\n"); 

// end session 
socket_write($socket, "END", 3) or die("Could not end session\n"); 

// close socket 
socket_close($socket); 

// clean up result 
$result = trim($result); 
$result = substr($result, 0, strlen($result)-1); 

// print result to browser 
?> 
<p>Objectivo: <?php echo $mensagem ?></p> 
<p>Server said: <b><?php echo $result; ?></b></p> 
<?php 
} 
?> 
</body>
</html>

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

0

Share this post


Link to post
Share on other sites

penso que esta parte do cliente está correcta...o que deve estar incorrecto é o servidor, mas...

0

Share this post


Link to post
Share on other sites

Porque estás a complicar isto e a usar sockets em vez de um simples $_POST? O script tem de usar sockets obrigatoriamente?

0

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0