Ir para conteúdo
Fórum Script Brasil

rickayron

Membros
  • Total de itens

    679
  • Registro em

  • Última visita

Tudo que rickayron postou

  1. Olá bom dia, o que você deseja fazer é viável apenas com vetores que tem poucos elementos, imagina você escrever 2000 itens para um vetor! Isso é trabalheira atoa. Observe o exemplo. #include <stdio.h> int main(){ //declarando o tamanho do vetor. int pares[]{2, 4, 6, 8, 10}; //imprimindo o vetor. for(int i=0; i<(sizeof(pares)/sizeof(int)); i++){ printf("%d ", pares[i]); } }
  2. rickayron

    Dúvida em C

    Boa noite, sua lógica está ok, mas existe alguns erros. código corrigido. #include <stdio.h> #include <string.h> int main() { char nome[30]; int tam; printf("Digite um nome : "); scanf("%s", &nome); tam = strlen(nome); printf("\n"); for(int i=1; i<=tam; i++){ if(i % 2 != 0){ printf("%c ", nome[i]); } } } até mais.
  3. Post o código que ajudarei com prazer. até mais.
  4. Boa tarde, você esqueceu de falar aonde tem dúvida. E post o código para podermos ajudá-la. até mais.
  5. rickayron

    Pesquisa com filtro

    Boa noite, não sei se entendi bem, mas vamos lá. Observe o código abaixo. <?php //pegando os dados para o código ficar mais limpo e legível. $operador=!empty($_POST['op']) ? $_POST['op'] : null; $data=!empty($_POST['data']) ? $_POST['data'] : null; $valor=!empty($_POST['valor']) ? $_POST['valor'] : null; //verificando se todos foram preenchidos. if( !is_null($operador) && !is_null($data) && !is_null($valor) ){ print("Todos os itens foram preenchidos!"); } //ou um outro exemplo que facilita se for muitas variáveis. $campos=array('op', 'data', 'valor'); $camposPreenchidos=array(); foreach($campos as $key => $valorCampo){ if( !empty($_POST[$valorCampo]) ){ $camposPreenchidos[$valorCampo]=$_POST[$valorCampo]; } } if( count($camposPreenchidos)>=2 ){ echo "todos os campos foram prenchidos. ".count($camposPreenchidos)." valor recebido"; } até mais
  6. Boa noite, para você verificar se a tradução é correta você poderia fazer a consulta com essa restrição. Exemplo de uma consulta pela tradução $sql="SELECT * FROM produto WHERE name='{$nome}' AND traducao='{$traducao}' limit 1"; Nesse exemplo iria retornar um registro se a tradução estiver correta, caso contrário não iria retornar nenhum registro. Algumas observações. Notei que você está utilizando algumas funções obsoletas, tipo mysql_connect(). Uma boa prática é você não utilizar esse tipo de função, atualmente a PDO é muito recomendada nos artigos, é simples e prática. Um exemplo do pdo <?php //Dados de acesso $host = "Nome_do_Host"; $dbn = "Nome_da_Base"; $user = "Nome_do_Usuário"; $pass = "Senha_da_Base"; $tabela = "produto"; try { //Conectar $ligacao = new PDO("mysql:dbname=$dbn; host=$host", $user, $pass); $ligacao->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); //Em caso de pesquisas, via procedures //$pesq = ""; //$sql = "CALL Nome_da_procedure()"; //Em caso de querys $sql = "SELECT * FROM $tabela WHERE nome= :nome AND traducao= :traducao"; $resultados = $ligacao->prepare($sql); //Definição de parâmetros $resultados->bindParam(":nome", $nome, PDO::PARAM_STR); $resultados->bindParam(":traducao", $traducao, PDO::PARAM_STR); $resultados->execute(); echo'<p>'.$sql.'</p><hr>'; foreach($resultados as $linha) { echo '<p>'; //Nome do campo na tabela pesquisada echo $linha["Nome_da_Coluna"]; echo '</p>'; } echo '<hr><p>Resultados: '.$resultados->rowCount().'</p>'; //Desconectar $ligacao = null; } catch(PDOException $erro) { echo $erro->getMessage(); } ?> até mais
  7. Isso não é regra geral, pois no object pascal por exemplo você define o intervalo do arranjo(array). esse link tem uma teoria. vetores iniciam em 0
  8. Bom dia amigo, poste o restante do código, pois o que você postou não é suficiente para uma análise. Pois o código de uma função pode estar impactando no código de outra função, principalmente se trabalhar com variáveis compartilhadas. até mais.
  9. rickayron

    Exercício em C

    Olá, boa noite, eu já respondi um tópico semelhante à esse, então vou postar o link Cadastro de contato é uma fila, você só precisa mudar o nome dos métodos e mudar a estrutura contato para cliente, no resto fila é tudo igual. até mais
  10. rickayron

    Dúvida- Cadastro em C

    Boa noite, não entendi essa parada de bloco, mas se sua dúvida é a captação dos dados no main, eis aqui um exemplo de uma agenda. #include <stdio.h> #include <stdlib.h> //estrutura de um contato. struct contato{ char nome[30]; char telefone[11]; char email[100]; }; struct contato obterContato(void){ struct contato cont; printf("\tNome: "); gets(cont.nome); printf("\tTelefone: "); gets(cont.telefone); printf("\tEmail: "); gets(cont.email); return cont; }; //estrutura de uma agenda. struct agenda{ contato *contato; agenda *proximo; }; //criar uma agenda e retorna o seu inicio, ou seja, o primeiro registro da agenda. agenda* criarAgenda(contato *contato){ agenda *age=(agenda*) malloc(sizeof(agenda)); age->contato=contato; age->proximo=NULL; return age; } //insere um contato em uma agenda que já existe, e retorna o seu ultimo registro, ou seja o final da fila. agenda* inserirContatoNaAgenda(contato* cont, agenda *finalAgenda){ finalAgenda->proximo=(agenda*) malloc(sizeof(agenda)); finalAgenda=finalAgenda->proximo; finalAgenda->contato=cont; finalAgenda->proximo=NULL; return finalAgenda; } void imprimirAgenda(agenda *inicioAgenda){ agenda *pont=inicioAgenda; printf("NOME\tTELEFONE\tEMAIL"); while(pont!=NULL){ printf("\n %s \t %s \t %s",pont->contato->nome, pont->contato->telefone, pont->contato->email ); pont=pont->proximo; } } int main(){ struct contato cont; //criando a agenda. printf("\nPreencha as informacoes da agenda: \n"); cont=obterContato(); agenda *inicioAgenda=criarAgenda(&cont); agenda *fimAgenda=inicioAgenda; printf("\n"); cont=obterContato(); fimAgenda=inserirContatoNaAgenda(&cont, fimAgenda); //imprimindo a agenda. imprimirAgenda(inicioAgenda); }
  11. Olá, observe o código abaixo. #include <stdio.h> #include <stdlib.h> bool isPrimo(int numero){ for(int i=2; i<numero; i++){ if( numero%i==0 ){ return false; } } return true; } int fatoresPrimos(int numero){ int fator, numeroDeFatoresPrimos=0; for(fator=2; fator<numero; fator++){ if( (numero%fator)==0 && isPrimo(fator)){ numeroDeFatoresPrimos++; } } return numeroDeFatoresPrimos; } int main(){ int numero; printf("Informe um número: "); scanf("%d", &numero); printf("%d possui %d fatores que são primos.", numero, fatoresPrimos(numero)); } Esse código pega um número e mostra quantos fatores são primos, agora basta você adaptá-lo para a sua necessidade, ou seja, criar um vetor de números, e aplicar a função em cada número. Deixei um pouco pra você porque essa parte é chata e trivial, até mais.
  12. Boa noite. observe o seguinte código. if( *valor = 201010) Você declarou a variável valor como um vetor de char com set posições, no entanto, está fazendo uma atribuição de inteiro nele. Atribuição conforme o código abaixo. char senhaPadrao[]="201010"; //um igual é atribuição, comparação são dois iguais. Para fazer uma comparação, observe o seguinte código. if(strcmp (valor, "201010")==0){ printf("Correto."); }else{ printf("Errado."); } //strcmp precisa que dê o #include <string.h> você declarou um vetor e não um ponteiro explicito, por isso não precisa do seguinte código. uart1_read_text(*valor, "\r", 7); não conheço a função uart1_read_text(), mas sei que para usar um vetor de char base chamá-lo diretamente. exemplo. uart1_read_text(valor, "\r", 7); até mais.
  13. #include <stdio.h> /****************************************************** variação do algoritimo insertion short para ordenar um vetor e manter a relação para outro vetor, mantendo um mapeamento. ***********************************************/ void insertionSort(int vetor[], int vetorAuxiliar[], int tamanho){ int i, j; int temp, tempAux; for(i=1; i<tamanho; i++){ j=i; while(j>0 && vetor[j-1]>vetor[j]){ temp=vetor[j]; tempAux=vetorAuxiliar[j]; vetor[j]=vetor[j-1]; vetorAuxiliar[j]=vetorAuxiliar[j-1]; vetor[j-1]=temp; vetorAuxiliar[j-1]=tempAux; j--; } } } int main(){ //numero de corredores que participaram da corrida, número de voltas que a corrida possui. int numeroDeCorredores, numeroDeVoltas; printf("Informe o numero de corredos que participou da corrida: "); scanf("%d", &numeroDeCorredores); printf("\nInforme o numero de voltas que a corrida possui: "); scanf("%d", &numeroDeVoltas); //matriz para armazenar o tempo dos corredores, o ideal seria ser float mas como seu código estava com int então vamos desse jeito. int matrizTempoCorrida[numeroDeCorredores][numeroDeVoltas]; //armazena o tempo final dos corredores. int tempoTotalDosCorredos[numeroDeCorredores], somaTempo=0, vetorCorredore[numeroDeCorredores]; //preenchedo a matriz com o tempo de cada volta de cada corredor. for(int i=0; i<numeroDeCorredores; i++){ somaTempo=0; for(int j=0; j<numeroDeVoltas; j++){ printf("\nInforme o tempo do corredor %d na volta %d: ", i+1, j+1); scanf("%d", &matrizTempoCorrida[i][j]); somaTempo+=matrizTempoCorrida[i][j]; } tempoTotalDosCorredos[i]=somaTempo; vetorCorredore[i]=(i+1); //vai indicar o corredor 1, 2, 3, ...n } //agora já temos uma matriz com os tempos dos corredores em cada volta, // temos também o tempo total que cada corredor demorou para finalizar a corrida //ordenar os resultados. insertionSort(tempoTotalDosCorredos,vetorCorredore,numeroDeCorredores ); //imprimindo o cabeçalio. printf("Cor."); for(int i=0; i<numeroDeVoltas; i++){ printf("\tV%d", i+1); } printf("\ttempo total"); //imprimindo os resultados. for(int i=0; i<numeroDeCorredores; i++){ //imprimindo o corredor printf("\n%d", vetorCorredore[i]); //imprimindo o tempo do corredor. for(int j=0; j<numeroDeVoltas; j++){ printf("\t%d", matrizTempoCorrida[vetorCorredore[i]-1][j]); } //imprimindo a soma dos tempos de cada corredor. printf("\t%d", tempoTotalDosCorredos[i]); } } Esse código imprime ordenado todos os corredores, basta adaptar pro seu uso. até mais.
  14. Boa tarde Ana, a fila circular é somente uma fila comum cujo o último elemento aponta para o primeiro, por isso é necessário possuir sempre o fim da fila. fila circular consoante o código abaixo. #include <stdlib.h> #include <stdio.h> struct item{ char letra; item *proximo; }; /*********************************** *cria uma fila de char, ele vai retorar *a fila que criou. *********************************************/ item *criarFila(char letra){ item *fila=(item*) malloc(sizeof(item)); fila->letra=letra; fila->proximo=fila; //aponta para si proprio. return fila; } //retorna o fim da fila. item *inserirItemNaFila(char letra, item *fila){ item *fimAtual=fila; item *novoFim=(item*) malloc(sizeof(item)); novoFim->letra=letra; novoFim->proximo=fimAtual->proximo; fimAtual->proximo=novoFim; return fimAtual; } /********************************************** *Vai imprimir um loop inifinto da fila, mostrando *que a fila é circular ***********************************************/ void imprimir(item *filaInicio, item *filaFim){ item *ponteiro=filaInicio; while(ponteiro!=NULL){ printf("%c ", ponteiro->letra); ponteiro=ponteiro->proximo; } } int main(){ item *inicioFila=criarFila('a'); item *fimFila=inserirItemNaFila('b',inicioFila); printf("%c \n", fimFila->letra); fimFila=inserirItemNaFila('c',fimFila->proximo); printf("%c \n", fimFila->letra); fimFila=inserirItemNaFila('d',fimFila->proximo); printf("%c \n", fimFila->letra); fimFila=inserirItemNaFila('e',fimFila->proximo); printf("%c \n", fimFila->letra); printf("%c %c\n", inicioFila->letra,fimFila->letra); imprimir(inicioFila, fimFila); } até mais
  15. Bom dia, alguns dias atrás participei de um tópico que tinha uma dedução da serie de taylor, então dê uma olhada se é a mesma formula; Formula
  16. rickayron

    Numeros perfeitos

    No seu código faltou o acumulador para verificar se a soma dos divisores é igual ao dividendo, observe o código abaixo. #include <stdio.h> bool isPerfeito(int numero){ int soma=0; for(int i=1; i<numero; i++){ if( (numero%i)==0){ soma+=i; } } return (numero==soma); } int main(){ //quantidade de números que serão informados. int quantidadeNumeros=10; //vetor que irá armazenar os números informados pelo usuário. int vetorDeNumeros[quantidadeNumeros]; //vamos contar a quantidade de números que serão perfeitos, dentro do espaço amostral que o usuário forneceu. int quantidadeNumerosPerfeitos=0; //pegando todos os números que o usuários digitou. for(int i=0; i<quantidadeNumeros; i++){ printf("\nInforme o número %d de %d: ",i+1, quantidadeNumeros); scanf("%d", &vetorDeNumeros[i]); //verifica se o número que o usuário acabou de digitar é um número perfeito. if( isPerfeito(vetorDeNumeros[i])){ quantidadeNumerosPerfeitos++; } } //criando um vetor que vai armazenar os números perfeitos. if( quantidadeNumerosPerfeitos<=0){ printf("Nenhum dos números informados é perfeito!"); return -1; } //imprimindo todos os números e informando quais são perfeitos. for(int i=0; i<quantidadeNumeros; i++){ if( isPerfeito(vetorDeNumeros[i])){ printf("\n%d é perfeito", vetorDeNumeros[i]); }else{ printf("\n%d", vetorDeNumeros[i]); } } printf("\nTotal de números perfeitos: %d", quantidadeNumerosPerfeitos); }
  17. rickayron

    exercício - ajuda

    Post o código e aponte onde está sua dúvida.
  18. Larissa o código abaixo pode ser alterado e com poucas mudanças vai resolver seu exercício. #include <stdio.h> int main (void){ //vetor que armazena as notas float nota[]{6.1, 4.9, 7}; //descobrindo o tamanho do vetor. int numeroNotas=sizeof(nota)/sizeof(float); //variável para armazenar a soma das notas. float total=0; //variável para armazenar a média das notas. float media=0; //laço para percorrer todas as notas e somá-las. for(int i=0; i<numeroNotas; i++){ total+=nota[i]; //somando todas notas. } media=total/(numeroNotas*1.0); //aqui e a divisão do total das notas pwlo nnúmero sw notas, e a multiplicação é para forçar a conversão do int para float //aqui só para fins didáticos vamos imprimir as notas for(int i=0; i<numeroNotas; i++){ printf("%f \n", nota[i]); } printf("\nA Média é %f", media); return 0; } algumas dicas a mais. Para criar uma função siga exemplo abaixo. float meuNome(float array[], int tamanho){ float media; //codigo para criar a media. return media; } As próximas dúvidas não deixe de postar o seu código para os usuários poderem ajudar. até mais.
  19. Olá Jonas, o seu código está ilegível. Variáveis tipo a, m, b, n, não intuitivas por isso é necessário explicar o que você quer com o código. Mas mesmo sem saber o que você deseja, observei algumas coisas incomuns na programação, então vou abordá-las, caso ajude beleza mas se não resolver peço que explique o que você deseja fazer, qual exercício deseja resolver. O primeiro ponto que vou abordá é a declaração de uma matriz, conforme o código abaixo. int m[MAX][MAX] Embora você tenha declarado uma matriz você a usou como um vetor, de acordo com o seguinte trecho de código. for(i=0; i<a; i++) { for(j=0; j<b; j++) { scanf("%d",&m[j]); //<- referência a matriz } for(j=0; j<b; j++) { v+=m[j]; //<- referência a matriz } } E você utilizou dois for dentro de um for, por que? Outro fator que pode gerar erro é que o tamanho da sua matriz é determinada pela constante MAX que por sua vez tem o valor de 100, no entanto, você está utilizando as variáveis a e b para fazer o percorrimento pela matriz, mas se o usuário informa um valor maior que 100 vai gerar erro, uma vez que o tamanho da matriz é 100X100. Se seu objetivo era preencher uma matriz, isso está errado, isso poderia ser feito da seguinte maneira. //matriz é uma matriz de valores..., i e j são contadores para interagir com a matriz. int matriz[MAX][MAX], i, j; for(i=0; i<MAX; i++){ for(j=0; j<MAX; j++){ printf("\nInforme o valor da linha %d na coluna %d: ", j+1, i+1); scanf("%d", matriz[i][j]); } }
  20. Com JQuery e seus poderes (kkk) você faz isso de uma maneira simples e elegante. Usando JQuery para criar autocomplete Essa api tem inúmeros recursos uteis.
  21. Bom dia Guilherme, me desculpe acho que está no caminho errado cara. O exercício pede um cadastro, e por isso entende-se que pode haver 15 alunos, 20 ou mais alunos, e consequentemente o mesmo ocorre com as notas, ou seja você vai ter um conjunto de 20 boletins sendo que cada boletim pertence a um aluno e possui 5 notas. Existe n formas de se fazer esse exercício, vou mostrar uma ideia de como eu faria isso. 1) Iria criar uma estrutura para organizar o código e o mesmo ficar mais fácil de lidar. struct aluno{ char nome[25]; int matricula; }; struct boletim{ aluno *estudante; float notas[5]; }; 2) Iria criar uma de alunos (cadastro), e uma fila de notas, posteriormente criaria uma função parra imprimir alunos e suas notas, assim como sua media. 3) e agora verificaria qual a menor nota: int menorNota=-1; for(int i=0; i<5; i++){ if(menorNota>vetorNotas[i]){ menorNota=vetorNotas[i]; } } Nessa abordagem não é importante quantas avaliações são verificadas, pois isso não impacta no trabalho para adaptar o código, pois basta trocar o trecho i<5 para i<1000 por exemplo. Mas imagine aumentar o número de avaliações para 1000 na abordagem que você propôs, isso isso seria um caos. Espero que tenha ajudado em algo, até mais.
  22. rickayron

    linguagem c

    Bom dia mano. Segue um exemplo que com pouco esforço, ou melhor, 3 alterações que podem ser feitas em 20 segundos, você vai obter a resposta para o seu exercício. #include <stdio.h> #include <stdlib.h> int main(){ int tamanho=5, vetorA[]={2,4,6,8,7}, vetorB[]{3, 1, 5, 7, 9}, resposta[tamanho]; int total=0; for(int i=0; i<tamanho; i++){ resposta[i]=vetorA[i]-vetorB[i]; printf("%d\n", resposta[i]); total+=resposta[i]; } printf("----------------\nA soma dos itens é: %d", total); } Sei que as vezes é difícil estudar, mais acho bom você começar. kkkkkkkkkk até mais.
  23. rickayron

    Função tempo em C

    http://www.cplusplus.com/reference/ctime/ #include <stdio.h> #include <time.h> int main () { time_t tempo; struct tm * tempoinfo; char buffer [80]; time (&tempo); tempoinfo = localtime (&tempo); strftime (buffer,80,"agora é %I:%M%p.",tempoinfo); puts (buffer); return 0; } O mano, o site acima mencionado é muito completo e simples, vale a pena sempre consultar lá quando houver dúvidas pois ele é intuitivo.
  24. #include <stdlib.h> #include <stdio.h> /****************************************************** *Essa função conta o número de caracteres que existe *em um arquivo. *@param char nome do arquivo *@return inteiro. ************************************************/ int contaNumeroCaracterArquivo(char arquivo[]){ FILE *arq=fopen(arquivo, "r"); char caracter; int n=0; if(arq==NULL){ return -1; } while( (caracter=fgetc(arq)) != EOF){ if(caracter!='\n'){ n++; } } fclose(arq); return n; } /****************************************************** *Famoso algoritimo de ordenação insert sort, *sua perfomance na maioria das vezes é ridicula, *mas serve muito bem para o proposito desse código. *@param char vetor de caracteres que seram ordenados. *@param int tamanho do vetor, ou melhor número de elementos do vetor. @return nada. ***********************************************/ void insertionSort(char vetor[], int tamanho){ int i, j; char temp; for(i=1; i<tamanho; i++){ j=i; while(j>0 && vetor[j-1]>vetor[j]){ temp=vetor[j]; vetor[j]=vetor[j-1]; vetor[j-1]=temp; j--; } } } int main(){ char arquivo[40]; //="texto.txt"; //nome do arquivo que será lido. printf("Informe o nome do arquivo: \n"); scanf("%s", arquivo); int numeroCaracter=contaNumeroCaracterArquivo(arquivo); //conta o número de caracteres que existe no arquivo. FILE *arq=fopen("texto.txt", "r"); if( arq==NULL){ printf("Erro ao tentar abrir o arquivo."); return -1; } char caracter, vetor[numeroCaracter]; int n=0; while( (caracter=fgetc(arq)) != EOF){ if(caracter!='\n'){ vetor[n++]=caracter; } } insertionSort(vetor, numeroCaracter); //imprimindo o vetor. for(int i=0; i<numeroCaracter; i++){ printf("%c ", vetor[i]); } } Ana, no seu código acima deu erro porque no scanf a variável de saída é uma referência. %s -> para receber uma string (ou vetor de char). &variavel -> referencia (endereço de memória) da variável. (claro que no caso de vetor, ele já é uma referência por isso não precisa do operador &. Você também poderia usar a função gets que faz a mesma coisa, porém mais simples e melhor. até mais.
  25. Ana, vamos imaginar o seguinte cenário, tudo que está no são letras e números ou quebra de linha. Para esse cenário vamos propor como solução o seguinte algorítimo. #include <stdlib.h> #include <stdio.h> /****************************************************** *Essa função conta o número de caracteres que existe *em um arquivo. *@param char nome do arquivo *@return inteiro. ************************************************/ int contaNumeroCaracterArquivo(char arquivo[]){ FILE *arq=fopen(arquivo, "r"); char caracter; int n=0; if(arq==NULL){ return -1; } while( (caracter=fgetc(arq)) != EOF){ if(caracter!='\n'){ n++; } } fclose(arq); return n; } /****************************************************** *Famoso algoritimo de ordenação insert sort, *sua perfomance na maioria das vezes é ridicula, *mas serve muito bem para o proposito desse código. *@param char vetor de caracteres que seram ordenados. *@param int tamanho do vetor, ou melhor número de elementos do vetor. @return nada. ***********************************************/ void insertionSort(char vetor[], int tamanho){ int i, j; char temp; for(i=1; i<tamanho; i++){ j=i; while(j>0 && vetor[j-1]>vetor[j]){ temp=vetor[j]; vetor[j]=vetor[j-1]; vetor[j-1]=temp; j--; } } } int main(){ char arquivo[]="texto.txt"; //nome do arquivo que será lido. int numeroCaracter=contaNumeroCaracterArquivo(arquivo); //conta o número de caracteres que existe no arquivo. FILE *arq=fopen("texto.txt", "r"); if( arq==NULL){ printf("Erro ao tentar abrir o arquivo."); return -1; } char caracter, vetor[numeroCaracter]; int n=0; while( (caracter=fgetc(arq)) != EOF){ if(caracter!='\n'){ vetor[n++]=caracter; } } insertionSort(vetor, numeroCaracter); //imprimindo o vetor. for(int i=0; i<numeroCaracter; i++){ printf("%c ", vetor[i]); } } Ana, essa solução pode ser aprimorada em diversas frentes, mas o mais importante é observar o tamanho do arquivo, pois se existe muitos caracteres tipo 300 mil, 500 mil, ai é necessário utilizar ponteiros, pois creio que o sistema operacional vai s.o ou o compilador não vão liberar alocação de memoria de maneira simples.
×
×
  • Criar Novo...