Ir ao conteúdo
  • Cadastre-se

Pietra Ester

Membro Pleno
  • Posts

    36
  • Cadastrado em

  • Última visita

Reputação

18
  1. E SE COLOCAR UM VETOR MAIOR TIPO 10 O VALOR MENOR NA FUNÇÃO DIFERENÇA CALCULA ERRADO O MENOR eu testei aqui e mesmo assim esta retornado e gravando zero a soma e a diferença //BIBLIOTECAS #include <stdio.h> #include <stdlib.h> //CONSTANTE LOCAL DO ARQUIVO #define ARQ_LOCAL "soma_diferenca.txt" //VARÁVEL GLOBAL PARA O TAMANHO DO VETOR int tam_v; //CRIA VETOR int *cria_vet(int n) { int *vet; int i; printf("\nDigite o tamanho do vetor: "); scanf("%d", &tam_v); //cria um vetor de n posições vet = (int *) malloc (tam_v*sizeof(int)); return vet; } //PREENCHE O VETOR void inicializa(float *vet, int tam_v) { int i; //Preenche o vetor for(i=0; i<tam_v; i++) { printf("Elemento %d: ", i);//valores digitados pelo usuario scanf("%f", &vet[i]);//lê os valores } } //MOSTRA float mostra(float *vet, int tam_v) { int i; printf("\nVetor gerado:\n"); for (i=0; i<tam_v; i++) printf("%.2f ", vet[i]); return vet[tam_v];//retorna o vetor } //CALCULA A DIFERENÇA float diferenca(float *vet, int tam_v) { int i; float dif, menor, maior; //encontra o maior maior = vet[0]; for(i=1; i<tam_v; i++) { if (vet[i] > maior) maior = vet[i]; } printf("\n\nMaior = %.2f\n", maior); //limpa o buffer do teclado fflush(stdin); //encontra o menor menor = vet[0]; for(i=0; i<tam_v; i++) { if (vet[i] < maior) menor = vet[i]; } printf("Menor = %.2f\n", menor); //calcula a diferença dif = maior - menor; //mostra a diferença printf("Diferenca = %.2f \n\n", dif); return dif; } //CALCULA A SOMA DOS ELEMENTOS float soma_elementos(float *vet, int tam_v) { int i; float soma=0; for(i=0; i<tam_v; i++) { soma = soma + vet[i]; } printf("Soma dos elementos = %.2f\n\n", soma); return soma; } //ARMAZENA EM DISCO float salva_le(float *vet, int tam_v, float soma, float dif) { FILE *fp; //Modo W de write (escrita) fp = fopen(ARQ_LOCAL, "a"); if(fp == NULL) { fopen(ARQ_LOCAL, "w");// cria e abre e reseta o arquivo para gravar no inicio dele } else { fprintf(fp, "Soma = %.2f", soma); fprintf(fp, "Dif = %.2f", dif); fclose(fp);//fecha o arquivo } printf("Soma e diferenca gravados com sucesso!\n"); //LÊ EM DISCO FILE *le; le = fopen(ARQ_LOCAL, "r");//Modo R de Read (leitura) if(le == NULL) //verifica se existe o arquivo { printf("\nErro ao abrir o arquivo.\n\n"); } else { fscanf(le, "Soma = %.2f\n", &soma); fscanf(le, "Dif = %.2f", &dif); printf("Soma = %.2f\nDiferenca = %.2f\n", &soma, &dif); fclose(fp);//fecha o arquivo } system ("pause");//pausa na tela, somente para Windows } int main() { //VARIÁVEIS int n; float vet[tam_v], soma, dif; //FUNÇÃO QUE CRIA O VETOR cria_vet(n); //FUNÇÃO QUE INICIALIZA O VETOR inicializa(vet, tam_v); //FUNÇÃO QUE IMPRIME O VETOR mostra(vet, tam_v); //FUNÇÃO QUE CALCULA A DIFERENÇA dif = diferenca(vet, tam_v); //FUNÇÃO SOMA soma = soma_elementos(vet, tam_v); //FUNÇÃO QUE ARMAZENA EM DISCO FAZ A LEITURA salva_le(vet, tam_v, soma, dif); return 0; }
  2. não deu certo atribuir as variaveis no main
  3. @kgin eu declarei como float soma e dif no main, não é isso? como eu pegaria elas?
  4. Estou fazendo esse exercicio de vetores e arquivos, e esta retornando zero a soma e a diferença no arquivo, acho que não esta gravando em arquivo, alguém sabe o porque? //BIBLIOTECAS #include <stdio.h> #include <stdlib.h> //VARÁVEL GLOBAL PARA O TAMANHO DO VETOR int tam_v; //CRIA VETOR int *cria_vet(int n) { int *vet; int i; printf("\nDigite o tamanho do vetor: "); scanf("%d", &tam_v); //cria um vetor de n posições vet = (int *) malloc (tam_v*sizeof(int)); return vet; } //PREENCHE O VETOR void inicializa(float *vet, int tam_v) { int i; //Preenche o vetor for(i=0; i<tam_v; i++) { printf("Elemento %d: ", i);//valores digitados pelo usuario scanf("%f", &vet[i]);//lê os valores } } //MOSTRA float mostra(float *vet, int tam_v) { int i; printf("\nVetor gerado:\n"); for (i=0; i<tam_v; i++) printf("%.2f ", vet[i]); return vet[tam_v];//retorna o vetor } //CALCULA A DIFERENÇA float diferenca(float *vet, int tam_v) { int i; float dif, menor, maior; //encontra o maior maior = vet[0]; for(i=1; i<tam_v; i++) { if (vet[i] > maior) maior = vet[i]; } printf("\n\nMaior = %.2f\n", maior); //encontra o menor menor = vet[0]; for(i=1; i<tam_v; i++) { if (vet[i] < maior) menor = vet[i]; } printf("Menor = %.2f\n", menor); //calcula a diferença dif = maior - menor; //mostra a diferença printf("Diferenca = %.2f \n\n", dif); return dif; } //CALCULA A SOMA DOS ELEMENTOS float soma_elementos(float *vet, int tam_v) { int i; float soma=0; for(i=0; i<tam_v; i++) { soma = soma + vet[i]; } printf("Soma dos elementos = %.2f\n\n", soma); return soma; } //ARMAZENA EM DISCO float salva_le(float *vet, int tam_v, float soma, float dif) { FILE *fp; //Modo W de write (escrita) fp = fopen("e:\\armazena_soma_dif.txt", "w"); if(fp == NULL) { printf("Sem memória!\n");//verifica se existe o arquivo } else { fprintf(fp, "Soma = %f", soma); fprintf(fp, "Dif = %f", dif); printf("Soma e diferenca gravados com sucesso!\n"); fclose(fp);//fecha o arquivo } //LÊ EM DISCO FILE *le; le = fopen("e:\\armazena_soma_dif.txt", "r");//Modo R de Read (leitura) if(le == NULL) //verifica se existe o arquivo { printf("\nErro ao abrir o arquivo.\n\n"); } else { fscanf(le, "Soma = %.2f\n", &soma); fscanf(le, "Dif = %.2f", &dif); printf("Soma = %.2f\nDiferenca = %.2f\n", &soma, &dif); fclose(fp);//fecha o arquivo } system ("pause");//pausa na tela, somente para Windows } int main() { //VARIÁVEIS int n; float vet[tam_v], soma, dif; //CABEÇALHO printf("---> Avaliacao de Algoritmo\n"); printf("---> 2o Semestre\n"); printf("---------------------------------------\n"); //FUNÇÃO QUE CRIA O VETOR cria_vet(n); //FUNÇÃO QUE INICIALIZA O VETOR inicializa(vet, tam_v); //FUNÇÃO QUE IMPRIME O VETOR mostra(vet, tam_v); //FUNÇÃO QUE CALCULA A DIFERENÇA diferenca(vet, tam_v); //FUNÇÃO SOMA soma_elementos(vet, tam_v); //FUNÇÃO QUE ARMAZENA EM DISCO FAZ A LEITURA salva_le(vet, tam_v, soma, dif); return 0; }
  5. Não sou uma autodidata, porque tambem na faculdade é difícil dominar tudo, mas valeu pessoal por tentarem me ajudar, a entrega desse exercício era para ontem, vou encerrar esse tópico. Abraços!
  6. Ainda mais que estavamos no EAD por causa da covid-19, como que vai aprender eletrônica no EAD?????????
  7. Então pessoal, aqui no fórum temos usuários de 0 a 10 no conhecimento, estou conheçando em eletronica, não consegui fazer esse projeto porque não é muito simples mesmo, fica muito grande o mapa com 5 variáveis, esse já é um nível mais elevado e não é para iniciantes, se alguém puder fazer a solução no Proteus Isis o mais simples possível para meus estudos e der o passo a passo apenas com 5 entradas paralelas, eu agradeceria. Obgda!
  8. Ta, mas ele tem que mostrar o endereço da memoria que se encaixe a quantidade de zeros em sequencia solicitado pelo usuario, o while não da certo pois preciso usar o for e percorrer o vetor novamente.
  9. Olá, estou desenvolvendo um exercicio em c, onde preciso contar um numero que esta esta repetido e em sequencia em um vetor dinâmico, por exemplo: v[10] = {1,0,0,1,0,1,1,0,0,0}; Onde os zeros em vermelho precisam ser contados, como se fosse o algoritmo FIRT FIT. DEPOIS o usuario escolhe o tamanho do processo e o programa mostra a primeiro posição da memoria para o tamanho desejado. Se o usuario escolher 3 mostrara a posição 7 nesse vetor, pois o unico espaço suficiente de 3 zeros em seguida que possui no vetor (v[10] = {1,0,0,1,0,1,1,0,0,0};) Por enquanto esta assim meu algoritmo: #include <stdio.h> #include <stdlib.h> #include <time.h> //1 MEMÓRIA OCUPADA //0 MEMÓRIA LIVRE int *cria_vet(int n); int inicializa(int *vet, int tam); void mostra(int *vet, int tam); //VARÁVEL GLOBAL PARA O TAMANHO DO VETOR int tam_v, tam_p; //CRIA VETOR int *cria_vet(int n) { int *vet; int i; printf("Digite o tamanho do vetor: "); scanf("%d", &tam_v); //cria um vetor de n posições vet = (int *) malloc (tam_v*sizeof(int)); return vet; } //INICIALIZA int inicializa(int *vet, int tam) { int i; //SEMENTE ALEATÓRIA DO VETOR VET srand(time(NULL)); for (i=0; i<tam; i++) vet[i]= rand() % 2; return *vet; } //MOSTRA void mostra(int *vet, int tam_v) { int i; printf("\nVetor gerado:\n"); for (i=0; i<tam_v; i++) printf("%d ", vet[i]); } //FUNÇÃO FIRT FIT int firtfit(int *vet, int tam_v, int tam_p) { int i, cont = 0; //contagem de memoria vazia (quantidade de zeros) for(i=0; i<tam_v; i++) if(vet[i] == 0) cont++; printf("Memoria vazia = %d\n", cont); } int main() { //VARIÁVEIS int *vet, n; //CABEÇALHO printf("---> Trabalho de Algoritmo\n"); printf("---> Gerenciamento de memoria FIRST FIT\n"); printf("---------------------------------------\n"); //FUNÇÃO QUE CRIA O VETOR cria_vet(n); //FUNÇÃO QUE INICIALIZA O VETOR inicializa(vet, tam_v); //FUNÇÃO QUE IMPRIME O VETOR mostra(vet, tam_v); //SOLICITA O TAMANHO DO PROCESSO printf("\n\n-> Digite o tamanho do processo (-1 ENCERRA): "); scanf("%d", &tam_p); //FUNÇÃO QUE CHAMA O FIRT FIT firtfit(vet, tam_v, tam_p); return 0; } Não sei como posso contar um sequencia de zeros
  10. è exatamente isso, estamos aprendendo microcontroladores, e o objetivo é esse. Obgda pelo norte
  11. ´São 5 bits paralelizados apenas o professor falou, não é pra complicar tanto kkkkk. As tabelas eu conclui agora não sei montar o circuito, vai ter um monte de porta mesmo igual o @MOR mencionou. É mais complexo do que se imaginei.
  12. Tem que ter 5 entradas para saida do display de 7 segmentos?

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...