Martinsrj 0 Denunciar post Postado Maio 17, 2009 Ola pessoa, boa tarde! Estou com duvidas na criacao do array em php. Irei colocar o codigo em portugol ou pascal abaixo: programa media Variavel md: array[1..5] tipo real; soma, media : real; I: inteiro; Inicio soma := 0; Escreva (`calculo de media`); Para I := 1 ate 5 faca inicio escreva (Informa a media); leia (md[I]); soma := soma + md[I]; fim; media := soma / 8; Escreva (A media e:); Escreva (media); // imprimindo a variavelComo que eu posso fazer o codigo acima em PHPAqui vai o codigo do formulario: <!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>Programa Fatorial</title> </head> <body> Media de cada aluno <br/> <form action="processa_dados.php" method="POST"> Digite a primeira media: <input type="text" name="media_1" size="5"><br/> Digite a segunda media: <input type="text" name="media_2" size="5"><br/> Digite a terceira media: <input type="text" name="media_3" size="5"><br/> Digite a quarta media: <input type="text" name="media_4" size="5"><br/> Digite a quinta media: <input type="text" name="media_5" size="5"><br/> <input type="submit" value="Calcular Media" name="btn_media"> </form> </body> </html> Abracos. Compartilhar este post Link para o post Compartilhar em outros sites
eibon 2 Denunciar post Postado Maio 17, 2009 CLI: <?php define('endl', "\n"); if(!defined('STDIN')) define('STDIN', fopen('php://stdin', 'r')); echo endl, str_repeat('-', 50), endl, 'Calculo de médias', endl, str_repeat('-', 50), endl; $md = array(); $soma = 0; for($i = 0;$i < 5;$i++){ echo 'Média:'; fscanf(STDIN, '%d\n', $md[$i]); if(!($md[$i] >= 0 && $md[$i] <= 10)){ $i--; echo '\a[Média inválida]', endl; continue; } $soma += $md[$i]; } echo str_repeat('-', 35), endl, 'A média é:', /*(faça um cast para o tipo desejado)*/$soma/8, endl, str_repeat('-', 35), endl; fclose(STDIN); ?> Command: php -f nomeDoScript.php CGI: <?php $md = array(); $soma = 0; for($i = 0;$i < 5;$i++){ $md[$i] = $_POST['media_'.($i+1)]; if(!($md[$i] >= 0 && $md[$i] <= 10)){ echo 'Médias inválidas foram informadas', nl2br("\n"), 'As médias devem estar entre 0 e 10.'; exit(1); } $soma += $md[$i]; } echo 'A média é:', /*(faça um cast para o tipo desejado)*/$soma/8; ?> Compartilhar este post Link para o post Compartilhar em outros sites
Martinsrj 0 Denunciar post Postado Maio 17, 2009 Ola Eibon! Desculpa, mas nao entendi o seu codigo. No formulario que eu crei acima (index.php), tem como eu colocar todos os <input type="text" name="media_1" size="5"> (dados) em array na pagina: processa_dados.php Desde ja agradeco a todos! Compartilhar este post Link para o post Compartilhar em outros sites
eibon 2 Denunciar post Postado Maio 17, 2009 <?php $md = array(); $soma = 0; for($i = 0;$i < 5;$i++){ $md[$i] = $_POST['media_'.$i+1]; if(!($md[$i] >= 0 && $md[$i] <= 10)){ echo 'Médias inválidas foram informadas', nl2br("\n"), 'As médias devem estar entre 0 e 10.'; exit(1); } $soma += $md[$i]; } echo 'A média é:', /*(faça um cast para o tipo desejado)*/$soma/8; ?> Compartilhar este post Link para o post Compartilhar em outros sites
Martinsrj 0 Denunciar post Postado Maio 17, 2009 Entendi a sua logica, porem esta dando erro nessa linha: $md[$i] = $_POST['media_'.$i+1]; Aparece o seguinte erro: Notice: Undefined offset: 1 in C:\Arquivos de programas\Apache Software Foundation\Apache2.2\htdocs\algoritmo\vetor\processa_dados.php on line 5 Notice: Undefined offset: 1 in C:\Arquivos de programas\Apache Software Foundation\Apache2.2\htdocs\algoritmo\vetor\processa_dados.php on line 5 Notice: Undefined offset: 1 in C:\Arquivos de programas\Apache Software Foundation\Apache2.2\htdocs\algoritmo\vetor\processa_dados.php on line 5 Notice: Undefined offset: 1 in C:\Arquivos de programas\Apache Software Foundation\Apache2.2\htdocs\algoritmo\vetor\processa_dados.php on line 5 Notice: Undefined offset: 1 in C:\Arquivos de programas\Apache Software Foundation\Apache2.2\htdocs\algoritmo\vetor\processa_dados.php on line 5 A média é:0 <?php $md = array(); $soma = 0; for($i = 0;$i < 5;$i++){ $md[$i] = $_POST['media_'.$i+1]; if(!($md[$i] >= 0 && $md[$i] <= 10)){ echo 'Médias inválidas foram informadas', nl2br("\n"), 'As médias devem estar entre 0 e 10.'; exit(1); } $soma += $md[$i]; } echo 'A média é:', /*(faça um cast para o tipo desejado)*/$soma/8; ?> Compartilhar este post Link para o post Compartilhar em outros sites
eibon 2 Denunciar post Postado Maio 17, 2009 Troque: $md[$i] = $_POST['media_'.$i+1]; Por: $md[$i] = $_POST['media_'.($i+1)]; Erro meu...mal. O primeiro tá normal.O problema é que o PHP faz a concatenação antes da soma.Com os parentesis isso é resolvido. <?php $a = 'abc'; echo $a+1; ?> Compartilhar este post Link para o post Compartilhar em outros sites
Martinsrj 0 Denunciar post Postado Maio 17, 2009 Eibon, obrigado ai pelas dicas, porem apos realizar as mudancas aparece esse erro: Notice: Undefined index: media_6 in C:\Arquivos de programas\Apache Software Foundation\Apache2.2\htdocs\algoritmo\vetor\processa_dados.php on line 5 Aproveitando, quero tirar duas duvidas, 1) $md[$i] = $_POST['media_'.($i+1)]; aqui você esta dando um incremento para que a variavel tenha os valores dos input, correto? 2) Qual foi a funcao do: exit(1); Desde ja agradeco pelas dicas novamente. Troque: $md[$i] = $_POST['media_'.$i+1]; Por: $md[$i] = $_POST['media_'.($i+1)]; Erro meu...mal. O primeiro tá normal.O problema é que o PHP faz a concatenação antes da soma.Com os parentesis isso é resolvido. <?php $a = 'abc'; echo $a+1; ?> Compartilhar este post Link para o post Compartilhar em outros sites
eibon 2 Denunciar post Postado Maio 17, 2009 Impossivel ter dado o erro que você disse o loop indo só até 4.Testei e funcionou normal. A função exit serve para parar o script,o inteiro 1 passado a ela quer dizer ao programador que ver meu code 'pare a execução já que de certa forma houve um erro'. Compartilhar este post Link para o post Compartilhar em outros sites
Martinsrj 0 Denunciar post Postado Maio 17, 2009 Estranho, porque esta ocorrendo aqui comigo: Notice: Undefined index: media_6 in C:\Arquivos de programas\Apache Software Foundation\Apache2.2\htdocs\algoritmo\vetor\processa_dados.php on line 5 A média é:6 Nos campos do formulario digitei tudo 6. Segue o codigo do processa_dados.php: <?php $md = array(); $soma = 0; for($i = 0;$i <= 5;$i++){ $md[$i] = $_POST['media_'.($i+1)]; if(!($md[$i] >= 0 && $md[$i] <= 10)){ echo 'Médias inválidas foram informadas', nl2br("\n"), 'As médias devem estar entre 0 e 10.'; exit(1); } $soma += $md[$i]; } echo 'A média é:', $soma/5; ?> Obrigado Impossivel ter dado o erro que você disse o loop indo só até 4.Testei e funcionou normal. A função exit serve para parar o script,o inteiro 1 passado a ela quer dizer ao programador que ver meu code 'pare a execução já que de certa forma houve um erro'. ---Resolvido, problema estava nessa linha: for($i = 0;$i <= 5;$i++){ porem o correto e assim for($i = 0;$i < 5;$i++){ pois o indice comeca com 0 Muito obrigado Eibon Compartilhar este post Link para o post Compartilhar em outros sites
eibon 2 Denunciar post Postado Maio 17, 2009 Claro que tava occorrendo com você. Você alterou o código que te passei,e ainda o fez errado. -.- Compartilhar este post Link para o post Compartilhar em outros sites