Ir para conteúdo
Fórum Script Brasil

tucano

Membros
  • Total de itens

    22
  • Registro em

  • Última visita

Tudo que tucano postou

  1. tucano

    Python lista

    Olá Kay, Acho que com a formatação correta até rola isso que você tá querendo (Mas nunca me aprofundei em formatação, é só um chute!! Uso Python mais para cálculos/plotagem...). Dá uma olhada nessa documentação que pode ser que ajude, é um tutorial sobre formatação de saída: http://docs.python.org/tutorial/inputoutput.html Mas acho que não faz sentido deixar de usar um laço para fazer isso, até porque a solução fica bem mais simples: # Python 2.7.x for i in lista: print i, '\n' Abraços
  2. Olá, Estou mexendo com web services para monitoramento de uma rede de sensores. A implementação já está pronta e é código aberto da iniciativa 52north. Estou apenas adaptando para as minhas necessidades. Já consigo fazer a requisição do serviço e consigo resposta do servidor. Acontece que o servidor retorna XML, e estou com uns problemas para tratar a resposta. Vou descrever o processo porque aí fica mais fácil entender o problema: O usuário do serviço entra com dois valores. Eles são capturados e por AJAX (através de um script PHP), uma string XML (pedido descritivo do serviço) baseada nos dois valores é criada e mandada para o servidor, que trabalha em JSP. O servidor então interpreta a string e manda de volta outro XML, que é a resposta do pedido. Os dados da resposta estão corretos e tudo o mais. O problema é que quando o navegador recebe isso, já redireciona para uma página nova e simplesmente imprime o XML na tela, com todas as tags e sem formatação nenhuma... Eu já brinquei com PHP mas nunca fiz nada dessa complexidade. Queria saber então o caminho para capturar esse XML sob forma de um objeto SimpleXML ou pode ser até como string mesmo, porque aí daria para tratar... Alguém sabe lidar com isso? Obrigado!
  3. tucano

    Dica de IDE

    Eu uso o Geany e ocasionalmente o NetBeans e acho ambos excelentes, com suas particularidades.
  4. Olá, isso pode ser feito com Javascript. http://www.w3schools.com/jquery/default.asp Att.
  5. tucano

    codigo não funciona

    Compilei no prompt e também funcionou sem problema nenhum...
  6. Olá, Você tem que especificar o modo de abertura do arquivo, por exemplo: f = open("arquivo.ext", "w") # abre arquivo em modo de escrita g = open("arquivo2.ext", "r") # abre o arquivo em modo de leitura Isso deve ser bastante útil: (VEJA O TÓPICO 7.2) http://docs.python.org/tutorial/inputoutput.html Abraços e boa sorte! Edit: Para abrir arquivo, usar parênteses.
  7. tucano

    Tela modo texto

    Tomaz Edson, tem um pacote chamado os que atende às suas necessidades. Para utilizá-lo, antes de chamar qualquer método dele você deve importá-lo: import os Particularmente, para limpar a tela e executar um .sh, tem um método desse pacote que dá conta. Ele passa comandos para o Sistema Operacional, é o os.system(<comando>): >>> os.system("clear") # Limpa a tela (Linux) >>> os.system("./script.sh") # Executa script.sh (Já com permissão de execução) Sobre iniciar o programa numa tela com tamanho pré-definido, nunca tentei. É bem provável que esse mesmo pacote tenha algum método que faça isso... Abraços Edit: Pode ser que você já tenha lido, mas fica a dica de qualquer forma. Este tutorial é extenso mas é muito bom para quem começa a programar em Python: http://docs.python.org/tutorial/index.html
  8. E aí, Tomaz Edson! Cara, você tem razão. É que na realidade eu me arrisco em Python mas é de cara-de-pau mesmo. Foi um erro honesto!! heheh Fui pesquisar agora e parece que no Python 3.x o print foi implementado como function e não mais como statement: Vide: http://stackoverflow.com/questions/6239887...n-in-python-3-x Daí agora os parênteses não são mais opcionais... Abraços
  9. Tem um tutorial neste link que explica isso bem certinho: http://techandetcblog.wordpress.com/2011/0...utilizando-php/ Abs
  10. Henzel, na vdd void significa "vazio", "nada"... A presença dele é opcional. Escrever void main (void) é a mesma coisa que escrever main(void), que é o mesmo que void main(), que é igual a main()... Dá tudo na mesma. A notação está lá mais por boa prática de programação. É a mesma linha de escrever apenas "return;" numa função que retorna void... O void antes do nome de uma função significa que essa função não retorna nada. No caso da main que você viu com o void antes mas retornando 0, pode ser que esse código tenha sido escrito num ambiente que o processo precise retornar algo, Linux por exemplo (retorna 0 caso não haja erro e outro número caso haja). Sobre os parâmetros da função main, ela só pode receber nenhum (main(void) ou simplesmente main()) ou 2 parâmetros. É padrão que esses argumentos, quando existem, sejam (int argc, char *argv[]). É que quando você chama o programa (mais comumente por linha de comando no Terminal do Linux ou no Prompt do DOS) você pode passar um ou mais argumentos para o programa. Por exemplo: //codigo.c #include <stdio.h> int main (int argc, char *argv[]) { printf("Meu primeiro argumento foi: %s\n", argv[1]); return 0; } Se você compilar esse código e chamá-lo através do terminal: $./codigo argumento1 Ou ainda no windows: >codigo.exe argumento1 Na tela aparecerá: Meu primeiro argumento foi: argumento1 Os argumentos da main são os argumentos que você passa para o programa ao executá-lo. Observações: 1 - argc contará sempre o total de argumentos que foram passados 2 - argv[0] é sempre o nome do programa; os argumentos começam a contar mesmo a partir de argv[1], argv[2], ..., argv[n]
  11. Luiz_Junior, põe um rewind(fp); depois do fprintf(fp,"%s",nome); que funciona. Não tenho nem ideia do que cause isso...
  12. Acho que é isso, mesmo. Talvez isso ajude: http://scriptbrasil.com.br/forum/index.php?showtopic=110775
  13. Guilherme Freire, quanto a valor moeda, não sei te ajudar... Na verdade não conheço esse tipo de dado em SQL, mas dá uma olhada nessa busca, porque com esse 'or' aí, a query vai retornar todos os resultados para os quais qualquer uma das condiçoes for verdadeira, por exemplo: No intervalo de 1 a 10, selecione todos os números x que atendem (x >= 2 OU x <= 8) -> a seleção retorna o intervalo todo, porque: x >= 2 é (2, 3, 4, 5, 6, 7, 8, 9, 10) x <= 8 é (1, 2, 3, 4, 5, 6, 7, 8) Como você mandou selecionar quem atende uma condição OU a outra, a query retorna todo o intervalo [1, 10]. O correto seria: No intervalo de 1 a 10, selecione todos os números x que atendem (x >= 2 E x <= 8) -> agora sim ele vai retornar a intersecção dos conjuntos, isto é, quem atende às duas condições simultaneamente: somente [2, 8], ou seja: ... $busca .= "AND valor_imovel >= 'x' and valor_imovel <= 'y'"; ...
  14. tucano

    Ajuda php

    Guilherme, segue o retorno da consullta da versão do mysql: # mysql --version mysql Ver 14.14 Distrib 5.1.49, for debian-linux-gnu (x86_64) using readline 6.1 Abraços, disponha!
  15. tucano

    Ajuda php

    Guilherme Becker, você tem razão. Deve ser a versão do mysql que está dando problema. Criei um banco, fiz a query e não ocorreu nada anormal... Pode ser que a sua versão não suporte MyISAM. Talvez isto possa ajudar: http://dev.mysql.com/doc/refman/5.0/en/myi...age-engine.html Se você trocar o 'TYPE=MyISAM' por 'TYPE=ISAM' ou então não especificar o tipo, a query funciona?
  16. tucano

    Ajuda php

    Bom dia, tem um erro na sintaxe do SQL, especificamente na linha 6 do script. Posta aí esse trecho do código da linha 6 porque aí fica mais fácil achar o problema de sintaxe...
  17. Amigo, segue o código corrigido e uma lista com os erros. ERROS: 1 - ao tentar fazer comparação, você estava mandando fazer atribuição (trocou "==" por "="): diferente de C/C++, atribuições em condicionais não são permitidas, daí o script nem roda (C/C++ compilaria e daria erro ao rodar o programa). 2 - raw_input retorna uma string, mas você quer um número, então você precisa fazer um cast, isto é: int(raw_input('whatever...')) no lugar de raw_input('whatever...') apenas. Senão, se você mandar somar 2 e 2, por exemplo, o Python retorna '2' + '2', isto é, '22'. Já se você mandar somar 2 + 2, ele retorna 4. 3 - a indentação em Python é o que define o escopo de um bloco de código, em outras palavras, indentação é muito importante em Python (não sei se você indentou, pareceu que não). 4 - não é bem um erro, mas ao imprimir, diferente do printf() do C, quando você chama um print em Python, não precisa dos parênteses. CÓDIGO CORRIGIDO: #!/urs/bin/env python #-*- coding: UTF-8 -*- print ("Bem vindo!") escolha = (raw_input("Digite a conta que deseja fazer: ")) if escolha == 'adição': numero = int(raw_input("Digite o primeiro número a ser somado:")) numero2 = int(raw_input("Digite o segundo numero a ser somado:")) resposta = numero + numero2 print (resposta) elif escolha == 'subtração': minuendo = int(raw_input("Digite o minuendo:")) minuando = int(raw_input("Digite o minuando:")) resposta = minuendo - minuando print (resposta) elif escolha == 'divisão': dividendo = int(raw_input("Digite o dividendo:")) divisor = int(raw_input("Digite o divisor:")) resposta = dividendo / divisor print (resposta) elif escolha == 'multiplicação': multiplicando = int(raw_input("Digite o multiplicando:")) multiplicador = int(raw_input("Digite o multiplicador:")) resposta = multiplicando * multiplicador print (resposta) else: print("Revise o número colocado!")
  18. tucano

    Array MySQL PHP

    Cara, é porque toda vez que você passa pelo laço você manda fazer uma query... while ($arr = mysql_fetch_array(mysql_query('select * from alunos'))) { ... } Isso não dá certo. O laço não acaba nunca, porque toda vez o php vai resolver a query como se fosse uma coisa nova, ele vai interpretar que você quer selecionar todo mundo da tabela outra vez, e não é isso que você quer. Põe a query numa variável: $resultado = mysql_query('select * from alunos'); while ($arr = mysql_fetch_array($resultado)) { ... } Aí sim ele vai saber que se trata da mesma query, porque a variável é a mesma. (Não testei!! Mas certeza que é bem por aí...)
  19. LacosTTe, também achei meio esquisito esse modo que ele passou, mas parece que não está errado... Pelo menos aqui, compila (no gcc 4.4.5-8 Debian) e funciona. O que está faltando é um ponto-e-vírgula na declaração do arqAgenda e realmente o fwrite está errado (vide http://www.cplusplus.com/reference/clibrary/cstdio/fwrite).
  20. Amigo, eu tenho um código muito parecido com o que você precisa. Se quiser pode reaproveitar. É utilizando uma tabela hashing (vide http://pt.wikipedia.org/wiki/Hashing). Basicamente você teria que copiar o conteúdo do arquivo para uma estrutura intermediária (tabela de dispersão) e, dada a entrada do usuário, você faria a consulta por aquela entrada na tabela. A complexidade da pesquisa, idealmente, é de ordem constante, independente do número de produtos no estoque. Fica bem mais rápido do que fazer uma busca em laço. Segue o código para uma estrutura definida por uma string e um inteiro (produto e qte em estoque). /** * @file dicionario.c * @author Eduardo Vasconcelos * @brief Tabela de dispersao aberta * @date 28 Nov 2011 */ #include <stdio.h> #include <stdlib.h> #include <string.h> #define TAM_PALAVRA 30 #define TAM_TABELA 13 typedef struct bloco { char palavra[TAM_PALAVRA]; int valor; struct bloco *prox; }no; typedef struct { no *ini, *fim; }lista; lista dicionario[TAM_TABELA]; int hash(char *p_hash) { int i = 0, r = 0; for (; i < strlen(p_hash); i++) r += p_hash[i]; return (r % TAM_TABELA); } inicializa () { int i = 0; for (; i < TAM_TABELA; i++) { dicionario[i].ini = NULL; dicionario[i].fim = NULL; } } inserir(char *p_inserir, int v_inserir) { int h = hash(p_inserir); no *aux = (no*) malloc (sizeof(no)); strcpy(aux->palavra, p_inserir); aux->valor = v_inserir; aux->prox = NULL; if (dicionario[h].ini == NULL) { dicionario[h].ini = aux; dicionario[h].fim = aux; } else { dicionario[h].fim->prox = aux; dicionario[h].fim = aux; } } int pesquisar(char *p_pesquisar) { int h = hash(p_pesquisar); if (dicionario[h].ini == NULL) return -1; else { no *aux = dicionario[h].ini; while (aux != NULL) { if (strcmp(aux->palavra, p_pesquisar) == 0) return aux->valor; else aux = aux->prox; } } return -1; } int main (int argc, char *argv[]) { int t, n, v; char c[3], *p = (char*) malloc (TAM_PALAVRA * sizeof(char)); scanf("%d", &t); for (; t > 0; t--) { inicializa(); scanf("%d", &n); for (; n > 0; n--) { fflush(stdin); scanf("%s", c); if (strcmp(c, "I") == 0) { scanf("%s %d", p, &v); inserir(p, v); } else { scanf("%s", p); printf("%d\n", pesquisar(p)); } } } return 0; } Dicas: -> Defina TAM_TABELA com um número primo próximo do número de elementos que você espera guardar no dicionario, para otimizar a pesquisa. -> A pesquisa retorna -1 se o elemento não está na tabela e a qte relacionada a ele se o elemento está lá.
  21. Olá Clau Gueno, acontece que a função fscanf recebe (neste caso) 3 parâmetros: 1 - o ponteiro para o arquivo; 2 - o que será lido e 3 - "para onde" será lido o correto seria: fscanf(arqAgenda, "%s", contato.(algo, não sei como você definiu a estrutura)); Mas não vai dar certo. Observe que: -> O arquivo deve estar aberto e ser válido, isto é, o ponteiro (arqAgenda) não pode ser nulo. Parece que você não chegou a abrir nada no arqAgenda. Antes de ler do arquivo, você deve abrí-lo. -> Leitura de string não tem & (E Comercial) na frente do nome da string e quando lendo de arquivo, o primeiro argumento é o arquivo. A construção: fscanf(contato, "%s", &arqAgenda); vai apresentar erro (contato é a sua estrutura e não o arquivo). Dá uma olhada neste site aqui: http://www.cplusplus.com/ Nele você sempre acha os protótipos das funções que precisa!! Editado: Erro na tag
  22. tucano

    Dúvida em c

    Olá, Tem como fazer isso sim. A única restrição é que você só vai poder sobrescrever o mesmo número bytes, por exemplo: Se no arquivo a ser reescrito consta (sem aspas): "15\npessoa003" Você poderá reescrever a partir do início do arquivo (sem prejudicar o 'pessoa003'): "16\npessoa003", pois o que foi escrito (16) tem o mesmo número de bytes do que estava lá (15). Entretanto, se você tentar escrever algo com número de bytes maior do que aquilo que estava lá, o 15, o resto do arquivo será prejudicado, isto é, o 'pessoa003' vai ser, pelo menos em parte, sobrescrito também. Segue o código: #include <stdio.h> int main (int argc, char *argv[]) { int p = 16; FILE *arquivo = fopen("arquivo.txt", "r+"); fprintf(arquivo, "%d", p); fclose(arquivo); return 0; } Nota: arquivo.txt tem o seguinte conteúdo:
×
×
  • Criar Novo...