Ir para conteúdo
Fórum Script Brasil

mJi

Membros
  • Total de itens

    429
  • Registro em

  • Última visita

Tudo que mJi postou

  1. mJi

    Login em php

    $login = $_GET[login]; $senha = $_GET[pass]; Coloque aspas simples no nome dos gets. Assim: $login = $_GET['login']; $senha = $_GET['pass']; Para atribuir o retorno do mysql_connect á uma variável, ao invés de $variavel == mysql_query .... use $validar = mysql_query .... Na query "SELECT * FROM usuario WHERE login='$login' AND senha='$senha'" Coloque o caractere ` entre as palavras oriundas do banco de dados. Isto facilita. Além disto, ao utilizar uma variavel na query, crie um 'buraco' na string com as aspas duplas, coloque o operador de união (ponto), digite a variavel, mais um operador de união, feche as aspas. Exemplo: "SELECT * FROM `usuario` WHERE `login` = '".$login."' AND `senha` = '".$senha."'" Ficando... $validar = mysql_query("SELECT * FROM `usuario` WHERE `login` = '".$login."' AND `senha` = '".$senha."'") or die(mysql_error()); A atribuição do mysql_num_rows também é com um único sinal de igual (bem como todas as atribuições, acredito eu). Além disto, o recurso que possui os resultados da query (no caso, a variavel $validar) deve ser passada para a função sem as aspas simples: $validacao = mysql_num_rows($validar); Na linha print '$login' Faltou o ponto-e-vírgula. Prefira o 'echo' para exibir o conteúdo de uma variável. A sintaxe é echo $login; Espero ter ajudado.
  2. Quando comecei a aprender um pouco de C, aquele 'salto' que ocorria durante os 'scanf's sempre me deixava na dúvida. Só depois, quando fui ler sobre os streams de E/S e buffers, passei a entender isto.
  3. Também fiz um aqui de bobeira... #include <stdio.h> #define QTDE_OPERARIOS 15 #define SALARIO_MINIMO 540 int main(){ int i, operarios[QTDE_OPERARIOS], pecas[QTDE_OPERARIOS], totalPecas=0, maiorSalario=0, maiorGanhador=0, qtdeFem=0, qtdeMasc=0; char sexo[QTDE_OPERARIOS]; float mediaMasc=0, mediaFem=0, salarios[QTDE_OPERARIOS], totalPagamento=0; printf("Cadastro de Operarios\n\n"); for(i=0;i<QTDE_OPERARIOS;i++){ printf("Numero do operario: "); scanf("%d", &operarios[i]); do { printf("Digite o sexo (M para masculino, F para feminino): "); fflush(stdin); scanf("%c", &sexo[i]); sexo[i] += (sexo[i] == 70 || sexo[i] == 77) ? 32 : 0; } while (sexo[i] != 102 && sexo[i] != 109); printf("Numero de pecas fabricadas: "); scanf("%d", &pecas[i]); totalPecas += pecas[i]; printf("\n"); } for(i=0;i<QTDE_OPERARIOS;i++){ if(sexo[i] == 'm'){ mediaMasc += pecas[i]; qtdeMasc++; } else { mediaFem += pecas[i]; qtdeFem++; } if(pecas[i] <= 30){ salarios[i] = SALARIO_MINIMO; } else if(pecas[i] > 30 && pecas[i] <= 35){ salarios[i] = SALARIO_MINIMO + (pecas[i] * (SALARIO_MINIMO * 0.03)); } else { salarios[i] = SALARIO_MINIMO + (pecas[i] * (SALARIO_MINIMO * 0.05)); } totalPagamento += salarios[i]; } mediaMasc /= qtdeMasc; mediaFem /= qtdeFem; for(i=0;i<QTDE_OPERARIOS;i++){ if(salarios[i] > maiorSalario){ maiorSalario = salarios[i]; maiorGanhador = operarios[i]; } } printf("\nTotal da Folha de Pagamentos: R$ %0.2f\nMedia de pecas masculina: %0.2f\nMedia de pecas feminina: %0.2f\nTotal de pecas fabricadas: %d\nOperario com maior salario: %d\n", totalPagamento, mediaMasc, mediaFem, totalPecas, maiorGanhador); return(0); } Bem diferente, mas também válido. Bruce845, posso estar enganado, mas vosso código apresenta um problema... A cada vez que o usuario digitar as informações dos operarios, tais informações serão sobreescritas. Ou seja, só vai valer as informações do último operário. Faz um teste de mesa aí =)
  4. mJi

    Vetores + Simulador de vendas

    Me referia á este caractere:  Sobre este problema de copiar-colar, há algumas IDEs que transformam as aspas duplas em outro tipo de aspas que não são aceitas pelo compilador... Talvez seja isto.
  5. Ah, agora entendi com clareza. A declaração de um vetor de ponteiros pode ser feita da seguinte forma: char *vetor[4]; Este é um vetor que contém 4 ponteiros. Até o momento, estes ponteiros podem estar apontando para um lugar qualquer da memória, portanto, ao utilizar alguns dos ponteiros, inicialmente é necessário alocar memória para os mesmos. Isto é feito com a função 'malloc' (disponível na biblioteca 'stdlib.h'). Um exemplo. Você deseja fazer o ponteiro vetor[1] apontar para uma string qualquer. Consideremos o tamanho máximo da string sendo 29 caracteres mais o caractere nulo '\ 0'. #include <stdio.h> #include <stdlib.h> #define MAXCARACTERES 30 int main(){ char *vetor[4]; vetor[1] = malloc(MAXCARACTERES*sizeof(char)); fgets(vetor[1], MAXCARACTERES-1, stdin); free(vetor[1]); return(0); } Interpretando... É feita a declaração do vetor de ponteiros, contendo 4 ponteiros. Antes de se utilizar um dos ponteiros, é necessário fazer a 'reserva' de memória. Não queremos colocar uma string num local desconhecido da memória, isto pode causar problemas dos mais simples aos mais sérios. Para isto, utiliza-se a função 'malloc' (Há outras funções de alocação dinâmica, mas fiquemos com esta por hora). Esta função recebe como parâmetro o número de bytes a ser reservado, portanto, é multiplicado o máximo de caracteres da string pelo tamanho de bytes que um caractere ocupa (nunca coloque este valor diretamente, sempre tilize o sizeof, pois o tamanho deste valor varia em alguns sistemas). A 'malloc' irá retornar um ponteiro void, que pode ser atribuido á qualquer ponteiro, e neste caso, atribuimos á vetor[1]. Agora, vetor[1] aponta para um endereço na memória que possui MAXCARACTERES*sizeof(char) livres á sua frente, prontos para receber a string. Utilizo o fgets para evitar o overflow; o endereço da string será o apontado por vetor[1], a quantidade de caracteres máximas será MAXCARACTERES-1 (deixa-se espaço para o '\ 0', que o fgets coloca automaticamente), e o stream-fonte será stdin (o teclado). Quando terminamos de utilizar aquele espaço na memória, temos que liberá-lo (não necessáriamente temos que fazer isto, pois o computador limpa a memória ao ser desligado. Porém, isto é uma boa prática, pois recupera espaço na memória que poderá ser usado por outras aplicações). Para liberá-lo, utiliza-se a função 'free' (também disponível em 'stdlib.h'). Foi mal o texto grande, espero ter ajudado.
  6. mJi

    Vetores + Simulador de vendas

    Não lí o código todo, mas reparei em algo... No topo do código: int numAle(int n); int numAle(int n) { return rand() % n; } Como a função 'numAle' precede a função principal, não é necessário colocar o protópopo dela alí. Provavelmente não é o que causa o erro, mas é importante tomar cuidado com essas coisas. Nesta linha: printf("\t%d \t %d \t %d \t %7.2f\n",i+1, consumidor[i], compra[i]+1, preço[compra[i]]); Note que há este caractere () antecedendo o printf. Há o mesmo caractere antecedendo o return: printf("TOTAL DE VENDAS %7.2f\n",total);  return 0; } Talvez seja isto.
  7. Olá Kaio21. A pergunta me parece um pouco confusa... > Leitura de uma string em um vetor de ponteiro de string Primeiramente, um vetor de ponteiro é, como o nome diz, uma estrutura que armazena vários ponteiros. Ponteiros apontam para endereços na memória. Uma string é uma cadeia de caracteres, logo, deve ser armazenada em um vetor de char. Segue um código... #include <stdio.h> int main(){ int cont; char vet[4]; printf("Digite uma nova string: \n"); fgets(vet, 4, stdin); return(0); } Está é a maneira que eu usaria para armazenar a string. Interpretando: char vet[4] é a declaração de um vetor que suporta 4 caracteres (tecnicamente, suporta apenas 3, pois a função adiciona o caracter nulo '\ 0' automaticamente. O fgets(vet, 3, stdin) pega a string que o usuário digitar, aceitando um máximo de 3 caracteres, e coloca em vet. Caso sua pergunta era sobre a utilização de um ponteiro para adicionar ao vetor a string, acredito que possa ser feito da seguinte forma: #include <stdio.h> int main(){ int cont; char vet[4], *ponteiro = &vet; printf("Digite uma nova string: \n"); fgets(ponteiro, 4, stdin); return(0); } Interpretando... São declarados o vetor de char e o ponteiro, que é inicializado logo na declaração com o endereço do vetor anteriormente declarado. Isto evita a necessidade de utilizar a função malloc para alocar dinamicamente espaço em memória durante o tempo de execução, mas isto é assunto pra outro momento. No momento do fgets, é utilizado o ponteiro ao invés do vetor, o que significa que o local na memória em que o ponteiro está apontando irá receber os caracteres digitados. Espero ter ajudado.
×
×
  • Criar Novo...