Ir ao conteúdo
  • Cadastre-se

Ansi C

Membro Pleno
  • Posts

    3.301
  • Cadastrado em

  • Última visita

Tudo que Ansi C postou

  1. se ambas matrizes com mesmo índice, isso não tem que acontecer, eu acho que a função que grava os dados é quem possuí o erro.
  2. OK! float * nutri[3] = { peso,altura,imc}! onde te ! e ;
  3. /* inverte a sequ�ncia ao imprimir */ /* pr�-dados: ponteiro para fun��o que retorna dados */ /* p�s-dados: realiza recur��o da mesma fun��o */ void inverte( int (*f)(void), int freio) { int ch = f(); if(ch != freio) inverte(f, freio); else ch = '\b'; printf("%c", ch); return; }
  4. Ok! Observei que você já possui um contador sentinela (tentativa), porém faltou o loop que busca o banco Crie um função chamada que pesquise os usuários por conta; tipo assim: void acesse(){ int pesq_base(char[]); //> função que realiza pesquisa int i=0, tentativa = 3;//> Maximo de tentativas char nr_conta_tmp[50]; //> Número da conta temporária char senha_tmp[6]; //> Senha temporária; system("CLS"); printf("\nUsuario, digite o numero da sua conta: "); fflush(stdin); gets(nr_conta_tmp); //> Pega úmero da conta aqui; if( (i = pesq_base(nr_conta_tmp)) > -1 ) //> verifica aqui. { printf("\nEssa conta esta cadastrada em nosso sistema ! \n"); printf("\nUsuario, digite a sua senha de 6 digitos ! "); gets(senha_tmp); //> pegando senha temporária fflush(stdin); if(strcmp(clientes[i].verifsenha, senha_tmp) == 0) { printf("\nAcesso permitido !"); system("CLS"); printf("\n1.Para fazer um deposito !"); printf("\n2.Para fazer um saque! "); printf("\n3.Para fazer uma transferencia! "); printf("\nDigite a opcao desejada: "); scanf("%d", &op1); switch(op1) { case 1: //deposito(); break; case 2: //saque(); break; case 3: //trf(); break; } } else { //if(strcmp(clientes[i].verifsenha, clientes[i].senha) != 0) não é mais necessário //{ while((tentativa > 0) && (strcmp(clientes[i].verifsenha, senha_tmp) != 0) ) { printf("\nUsuario, voce tem mais %d", tentativa); printf("\nDigite novamenta a sua senha: "); fflush(stdin); gets(senha_tmp); tentativa--;//< Invés de mais, menos tentativas } //} if (tentativa > 0) printf("Bom dia : %s\n", clientes[i].nome); else printf("Acesso Bloqueado procura seu Gerente!\n"); } } else { printf("\nEssa conta nao esta disponivel !\n Retorne e faca o seu cadastro !"); return; } //i++; //> não é mais necessário;}/* complemento da função acesso */int pesq_base(char nr_conta[]){ int i; for (i = 0; i < 5/* tamanho da base */; i++) { if(strcmp(clientes[i].verifconta, clientes[i].nr_conta) == 0) return i; } return -1; //> se não encontrar retorna -1}
  5. OK! Tive dificuldade de entender esse conceito no começo, e me explicaram como abaixo; int num[ 10]; //> nesta caso será disponibilizado sequencia de 10 inteiros;/* mais a pegunta é! Como acessar os 10 inteiros *//* quando se trata de C o nome do vetor e o elemento número 1 *//* então num é o primeiro elemento; *//* como se faz para acessar o 2 elemento ? */ /* faz assim: num + 1 = 2 elemento, que em C se escreve num[ 1] = 2 elemento *//* conclui-se que; Sendo é num[ 0] = 1, num[ 1] = 2 ... num[ 9] = 10 elemento*/ Com base nesse conteúdo posso produzir algo como: #include <stdio.h>#include <stdlib.h>int i_MenosOuMaio(int n, int num[], char ch){ int i, i_tmp; if(ch) ch = -1; //Se for 0 retorna o Maior //se for diferente retorna menor; for (i_tmp = i = 0; i < n; i++) if (ch + (num[i_tmp] < num[i])) i_tmp = i; return (i_tmp);// O índice com maior valor ou menor;}int main(void){ int num[5] = {1,2,3,4,5}; printf("o maior valor e: %d\n", num[ i_MenosOuMaio(5, num, 0/*Maior*/) ]); printf("o menor valor e: %d\n", num[ i_MenosOuMaio(5, num, 1/*Menor*/) ]); return (0);}
  6. Primeira pergunta: %21s -- significa que o string que vem por parâmetro tem 21 de tamanho máximo; Segunda pergunta: Desculpa mais não faz sentido algum para mim, então esperamos que outro membro responda essa.
  7. Ok! Neste então você precisa de uma variável nome; em C'99 isso funciona assim: /* pergunta seu nome */char * gets_nome(char *str){ puts("Entre com seu nome:");/* imprime na tela a pergunta */ scanf("%21s", str); /* recebe os dados digitados */ return str; /* retorna um ponteiro do nome */}/* função inicial do programa */int main(void){ char nome[ 21 ];//> Nome com no máximo 20 letras; gets_nome(nome);//> chamo a função que pega nomes printf("Seu nome e %s\nBonito Nome!\n", nome); return (0);}
  8. Ok! Então tipo: quando estão assim: *vetpositivo[i] o que acontece é que primeiro ele acessa um vetor de ponteiro (que não existe) e depois o inteiro que não existe; daí os erros; precedência de Pare resolver isso acredito eu que basta fazer assim e contorna a precedência com parenteses ; (*vetpositivo)[i]
  9. Ata! Tem um confusão danada ai, Não ficou bem claro para mim, me responde um coisa é uma matriz que você deseja ou um vetor ( a diferença é que o vetor tem apenas uma linha) ? Caso seja um vetor basta modificar assim com parenteses para o ponteiro de ponteiro: while( (*vetpositivo)[i] <= 0 )
  10. Ok! Observe abaixo: void inicializarpositivo(float* *vetpositivo, int* quantEleme) //Na verdade essa parte que diz: int* quantEleme é um desproposito, um ponteiro para um int tem o mesmo tamanho de um int então ao invés de como está essa parte que seja um int normal; void inicializarpositivo(float* *vetpositivo, int quantEleme) Já na função scanf basta fazer assim com e-comercial: scanf("%d", &quantEleme);
  11. É um emaranhado de coisa, Pode conter desde de código para execução e processamentos de dados: Cálculos aritméticos; Criptografia etc. Até mesmo resources: Imagens, Gifs, Sons, Dumbs O sistema operacional windows armazenas seus resources (Trd.: recursos) em dll; Alguns jogos para Pc também, quando são pequenos, usam *.dll ao invés de *.Data para proteger seus resources.
  12. Ansi C

    Alocação Dinâmica

    Não tenho mais dicas para esse problema, Vamos aguarda pela solução vinda de outros membros.
  13. Ansi C

    Alocação Dinâmica

    fopen("entrada.txt", "rt"); ? rt eu acho que você quer abrir somente leitura então deve ser somente "r"
  14. Ansi C

    Alocação Dinâmica

    Sinceramente, é impossível está sendo impresso 1 2 0.000000 0.000000 0.000000 0.000000 esses valores Já que não a dados para ser impressos como nos diz no else Você modificou o conteúdo do for por if (fscanf(arq,"%lf %lf",&x,&fx) == 2) printf("%lf %lf\n",x,fx); else printf("Loop %d sem dados", i); ou acrescentou, se acrescentou substitua;
  15. Ansi C

    Alocação Dinâmica

    Ok! Faremos o seguinte teste: acrescentando um if ao algoritmo de exibição; como abaixo: for(i=0;i<n;i++){ if (fscanf(arq,"%lf %lf",&x,&fx) == 2) printf("%lf %lf\n",x,fx); else printf("Loop %d sem dados", i); }
  16. Ansi C

    Alocação Dinâmica

    a função fscanf nesta situação vai retorna o numero 2, se consegui ler o dados corretamente e diferente de 2, se não. Faça um teste e observe se 2 está saindo de fscanf
  17. Se eu entendi, trazendo para o C'99 já que não sei nadinha de C++; O objeto, nosso que estranho falar isso, tem que saber os Mnemônicos: MaxT, MinT, AmbT, DefT, LimT, CicT; CicT = Tempo entre cada ciclo de verificação de temperatura; Exemplo: 3 segundos AmbT = É a temperatura marcada pelo termostato; Exemplo; A temperatura pois os 6 minutos ou 3 segundos DefT = Temperatura desejada; Exemplo: 25*C LimT = Coeficientes de o intervalo médio das Temperaturas (MinT e MaxT); Exemplo: .6 esse ultimo pode ser omitido como Default; MaxT = DefT + (DefT* LimT); = 25 + (25 * 0.6) = 40; MinT = DefT - (DefT* LimT); = 25 - (25 * 0.6) = 10; Depois de tudo isso, o seu objeto, vai ter que tratar disso: Quando CicT = 0; se (MaxT < AmbT) Liga; se não se (MinT > AmbT) Desliga;
  18. Ansi C

    Alocação Dinâmica

    Ok! Está com erro de aqui, você precisa converte o ponteiro para tipo certo, que no caso e double Errado: x=malloc(n * sizeof(double)); fx=malloc(n * sizeof(double)); Correto: x= (double*) malloc(n * sizeof(double)); fx= (double*) malloc(n * sizeof(double));
  19. É preciso ter conhecimentos preveis para realizar essa tarefa, o mais importante e dominar manipulação de arquivos com o ponteiro para FILE depois disso, tenho certeza que o resto vai vir naturalmente.
  20. OK! Mais é isso mesmo, olha no exercício que está no topo, diz: "...O procedimento não deve fazer ordenação. Deve usar a informação que os vetores estão ordenados e fazer a intercalação apropriada de elementos de A e B, copiados para o vetor C." Devido a ambiguidade desse trecho, a questão já foi respondida ao juntar os valores dos dos dois em um. Agora se era para ordena-los em um novo vetor esse trecho deveria ser omitido, e se ainda era para juntar digamos; C 1 = A 1 C 2 = B 1 C 3 = A 2 C 4 = B 2 ... é uma suposição já que nada ficou claro. Esse é o problema de questões de curso universitário, serve apenas para enrolar.
  21. OK! Eu acredito que o vetor que armazena as cores jogadas pelo usuário, tenha o máximo de jogadas possíveis, então ele é previamente criado no mesmo momento quando é definido o número de jogadas máximas do jogador. Outra Dica é, ao invés de usar caracteres para representar as cores, use números: AZUL 0 AMARELO 1 VERMELHO 2 ... Assim você economiza memoria e da dinâmica. Já que o mesmo vetor de string será reutilizado. o vetor de jogadas precisa apenas lembrar do numeral da jogada que representa uma cor, e não do string todo. Ao cria um variável que incremente o vetor jogadas erradas, ao vetor é atribuído o número da cor da jogada, até atingir o seu limite, e então Game Over.
  22. O código abaixo, possui um maneira de fazer, isso de modo simples; Observe que o scanf esta dentro da condição do while, mas poderia esta dentro do bloco também, restando apenas a função SoLetra a obrigação de verificar se a entrada esta correta. Execute, e estude-o a vontade. /* soletra.c -- validação de dados com letras do alfabeto ascii *//*--------Keep it simple--------* | Autor: Mauro Brito | | e-Mail: [email protected] | | Linguagem: C 99 | | Plataforma: Windows 32-bit | | Editor: Code::Blocks v13.12 | *------------------------------*/#include <stdio.h> // puts(); printf(); fflush(); putchar() funções#include <stdbool.h> // variável booliano TRUE \ FALSE/* protótipos de funções *//* operação : verifica existente caracteres não alfabéticos *//* pre-dados: str vetor de char string a ser verificado *//* pôs-dados: retorna 1 se houve somente letras, 0 senão */bool SoLetras(char str[]);/* função principal do sistema */int main(void){ char sNomeUsuario[15]; // máximo 14 letras; char underline = 0; // grifar nome do usuário. puts("Entre com seu nome:"); printf("<< "); while ( (scanf("%s", sNomeUsuario) != 1) || (SoLetras(sNomeUsuario) == 0) ) { printf("\n\n""[ %s ] detectado invalido!\n", sNomeUsuario); puts("Entre com seu nome:"); printf("<< "); fflush(stdin); // limpa o buffer de entrada stdin; } printf("\n\n"); underline = printf("%s", sNomeUsuario); puts(" e um nome bonito. Parabens!"); while(underline--)putchar('-'); puts("\n\n""acabou.""\n\n"); getchar();//PAUSA; return 0;}/* definição de funções *//* verifica existente caracteres não alfabéticos */bool SoLetras(char str[]){ int index = 0; // percorre as células do string while(str[index] /* percorre o string até \0 */) { if (str[index] < 'A' || str[index] > 'z' ) if ((str[index]) != ' '/* diferente de espaço */) return false; index++; } return true;}
  23. Ok! Observe que aliando a struct você vai utilizar outro poderoso recurso da linguagem; union Veja abaixo: /* union.c -- soma dos n-elementos na mesma celula */#include <stdio.h>#include <stdlib.h>/* minhas struct bit[4]*/struct myByte{ unsigned char bit_0_4: 4; //Mais baixo nível unsigned char bit_5_7: 4; //Mais alto nível}; //Tenho 8 bits;typedef union byte_bit //Poderoso recurso de edição de tipos{ struct myByte byte; char unsigned interge;} Byte; //Novo tipo de dadosint main(void){ Byte b; b.byte.bit_0_4 = 8; //Mais baixo nível **** 1000; printf ("Meu tamanho e: %u""\n", sizeof(struct myByte)); printf("Meu Integer e=: %u""\n", b.interge); printf("Meu numero char=: %c""\n", b.byte.bit_0_4 + '0'); return (0);}
  24. De nada ! Só mais uma coisa; no lugar de switch (i) de ver o switch (atual)

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!