Jump to content

Capicua PHP


NunoRibeiro22
 Share

Recommended Posts

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

Link to comment
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...

Link to comment
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...

Link to comment
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...

Link to comment
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...

Link to comment
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.

Link to comment
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. 🙂

Link to comment
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.

Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Link to comment
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";

?>
Link to comment
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
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.