Ir ao conteúdo
  • Cadastre-se

Jessé P. de Melo

Membro Pleno
  • Posts

    94
  • Cadastrado em

  • Última visita

Tudo que Jessé P. de Melo postou

  1. Da string eu sabia agora stdlib não, sempre uso stdio e stdlib juntas nem sei mais diferenciar as duas, só sei que são bibliotecas para facilitar entrada e saída de dados e realizar algumas operações simples. Só tenho conhecimentos teóricos sobre ponteiros, eles estão no plano de estudo só que mais para frente. Eu tinha a intenção de trabalhar com strings, e depois converter com atoi esse pedaço ficou do código antigo. Coloco por redundância mesmo, se não me engano a linguagem trabalha de acordo com o sistema.
  2. Boa noite. Estou estudando para programar em microcontroladores, esses aparelhos tem recursos bem limitados, ou seja quanto mais otimizado melhor. Fiz o exercício: Faça uma função para verificar se um numero é um quadrado perfeito. Um quadrado perfeito e um numero inteiro não negativo que pode ser expresso como o quadrado de outro numero inteiro. Ex: 1, 4, 9... (Definição mais completa). Quero otimizar esse código. #include<stdio.h> #include<stdlib.h> int main(void){//2,3,5,7 int num; int quadrado_perfeito(int x); printf("Digite um numero para saber se e um quadrado perfeito: "); scanf("%i",&num); quadrado_perfeito(num); } int quadrado_perfeito(int x){ int exp_n2=0; int exp_n3=0; int exp_n5=0; int exp_n7=0; int teste1=0; int teste2=0; int teste3=0; int teste4=0; while(x>1){ while (x%2==0){ x=x/2; exp_n2++; } while (x%3==0){ x=x/3; exp_n3++; } while (x%5==0){ x=x/5; exp_n2++; } while (x%7==0){ x=x/7; exp_n7++; } } if(exp_n2==0||exp_n2%2==0){ teste1=1; } if(exp_n3==0||exp_n3%2==0){ teste2=1; } if(exp_n5==0||exp_n5%2==0){ teste3=1; } if(exp_n7==0||exp_n7%2==0){ teste4=1; } if(teste1&&teste2&teste3&&teste4==1){ printf("E' um quadrado perfeito"); } else{ printf("Nao e' um quadrado perfeito"); } } .
  3. Esquece parei para reparar aqui. o Mes começa em 1 enquanto o vetor começa em 0. Por isso estava dando erro.
  4. @Fernando Mercês Já terminei, estou corrigindo o que você sugeriu. adicionado 11 minutos depois Ficou assim. #include<stdio.h> #include<stdlib.h> #include<string.h> void main (void){ char data [11]; char converte_data(char data[11]); converte_data(data); } char converte_data(char data[11]){ unsigned int dia; unsigned int mes; unsigned int ano; char mes_por_extenso[12][10]={"Janeiro","Fevereiro","marco","abril","maio","junho","julho","agosto","setembro","outubro","novembro","dezembro"}; printf("Digite a data(DD-MM-AAAA): "); scanf("%d-%d-%d",&dia,&mes,&ano); fflush(stdin); for(int x=0;x<12;++x){ if(mes-1==x){ printf("%u de %s de %u",dia,mes_por_extenso[x],ano); } } } Eu que fiz mais estou em duvida o motivo de "if(mes-1==x)"? Na minha concepção deveria funcionar sem o -1.
  5. @Fernando Mercês Porque eu não aprendi isso antes? Fiz vários exercícios no mesmo esquema.
  6. Afff, meu Deus ! Queria não ter aberto o post e ter prestado mais atenção.
  7. Boa tarde. Recentemente comecei a estuda linguagem c de maneira mais profunda, já programo ha algum tempo porém era tudo a base da gambiarra.E como no Arduíno existe um bloco chamado loop (similar ao main) que é executado infinita vezes não dei a devida importância a funções. Resumindo... estou com o seguinte problema: Faca uma função que receba a data atual (dia, mês e ano em inteiro) e exiba-a na tela no formato textual por extenso. Exemplo: Data: 01/01/2000, Imprimir: 1 de janeiro de 2000. Não dá erro de compilação porém não printa a ultima linha da função. Programei isso: #include<stdio.h> #include<stdlib.h> #include<string.h> void main (void){ char data [11]; char converte_data(char data[11]); printf("Digite a data(DD-MM-AAAA): "); scanf("%s",&data); fflush(stdin); converte_data(data); } char converte_data(char data[11]){ char dia[3]; dia[0]=data[0]; dia[1]=data[1]; dia[2]='\0'; char mes[3]; mes[0]=data[3]; mes[1]=data[4]; mes[2]='\0'; char ano[5]; ano[0]=data[6]; ano[1]=data[7]; ano[2]=data[8]; ano[3]=data[9]; ano[4]='\0'; int dia_final; int mes_final; int ano_final; char mes_por_extenso[20]; dia_final=atoi(dia); mes_final=atoi(mes); ano_final=atoi(ano); switch(mes_final){ case 1: strcpy(mes_por_extenso,"Janeiro"); break; case 2: strcpy(mes_por_extenso,"Fevereiro"); break; case 3: strcpy(mes_por_extenso,"marco"); break; case 4: strcpy(mes_por_extenso,"abril"); break; case 5: strcpy(mes_por_extenso,"maio"); break; case 6: strcpy(mes_por_extenso,"junho"); break; case 7: strcpy(mes_por_extenso,"julho"); break; case 8: strcpy(mes_por_extenso,"agosto"); break; case 9: strcpy(mes_por_extenso,"setembro"); break; case 10: strcpy(mes_por_extenso,"outubro"); break; case 11: strcpy(mes_por_extenso,"novembro"); break; case 12: strcpy(mes_por_extenso,"dezembro"); break; printf("%i de %s de %i",dia_final,mes_por_extenso,ano_final); } }
  8. Obrigado pela solução. Como não sei trabalhar direito com ponteiros vou deixar esse exercício salvo para quando souber ponteiros.
  9. Estou refazendo o código do zero, porém estou com duvidas. Segundo o trecho: primeiro se cria o tipo de dados e depois modifica um membro para se tornar um vetor. porém como faço isso se: eu iria resolver criando um vetor externo da struct filme como vetor, mas não é isso que o exercício pede Como resolvo o exercício seguindo as instruções do enunciado?
  10. Isso aconteceu por causa do famoso remendo que fico tentando fazer pra não perder tudo que fiz. Só percebi que tinha errado quando fui programar os prints. Vou apagar tudo e começar do zero, depois posto aqui.
  11. Boa tarde. Estou resolvendo o seguindo problema. Faca um programa que armazena filmes produzidos por varios diretores e: ´ • Crie e leia um vetor de 5 diretores, cada um contendo nome (maximo 20 letras), ´ quantidade de filmes e filmes. O membro filmes e um vetor, que deve ser criado ´ apos ter lido quantidade de filmes. Cada filme é composto por nome, ano e duracao. • Procure um diretor por nome, mostrando todos os filmes que ele já produziu. Repita o processo ate digitar uma string vazia. Porque me código esta dando erro? Sem o índice do vetor compila mais com o índice não. Código de resolução: #include<stdio.h> #include<stdlib.h> #include<string.h> void main (void){ char diretor_pesq[21]; struct diretores{ char nome_dir[21]; int qtd; struct filmes[qtd]; /*ONDE ESTA DANDO O ERRO*/ }; struct filmes{ char nome_fil[30]; int ano; int duracao; }; struct diretores lista[5]; for (int x=0;x<5;x++){ printf("Digite um nome de um diretor: "); scanf("%21[^\n]",&lista[x].nome_dir); fflush(stdin); printf("Quantidades de filmes ? "); scanf("%i",&lista[x].qtd); fflush(stdin); for(int contador=0;contador<lista[x].qtd;contador++){ printf("Nome do %i filme? ",contador+1); scanf("%30[^\n]",&lista[x].nome_fil[contador]); fflush(stdin); printf("Ano de producao do filme? "); scanf("%i",&lista[x].ano[contador]); fflush(stdin); printf("Duracao: "); scanf("%i",lista[x].duracao[contador]); fflush(stdin); } } printf("Digite um nome de diretor para pesquisar"); scanf("%21[^\n]",&diretor_pesq); if(diretor_pesq==" "){ exit(0); } for (int x=0;x<5;x++){ char *teste=NULL; teste=strstr(lista[x].nome_dir,diretor_pesq); if(teste!=NULL){ printf("Nome do diretor:%s\n",lista[x].nome_dir); for(int contador=0;contador<lista[x].qtd;contador++){ printf("Nome do filme: %s\tAno: %i\tDuracao: %i min\n",lista[x].nome_fil[contador],lista[x].ano[contador],lista[x].duracao[contador]); } } } }
  12. @vangodp Vai agilizar bastante... acredito que não consegui me expressar direito. As vezes eu uso variáveis no singular e plural no mesmo código, ao compilar da erro e tenho que escolher uma das duas e corrigir manualmente uma a uma. Com esse facilitador encurta bastante o processo de correção.
  13. Era exatamente essa funcionalidade que eu queria.
  14. Aproveitando o assunto, porque existem vários compiladores para a mesma linguagem? A linguagem não é parametrizada porque precisa de vários?
  15. Estou a procura de um bom compilador C. Atualmente estou usando o codeblocks 17.12 mas esta deixando bastante a desejar, ou eu que não estou sabendo usar direito. As vezes quando eu começo a programar ele não sobe o auto-complete e tem que ficar digitando tudo varias vezes, sei que isso é bom para quem esta aprendendo mas alguns comandos são muitos usados. Outro problema é quando eu digito nome de variáveis erradas, por falta de atenção digito varias vezes errado, ai quando vou compilar ta metade de um jeito e metade de outro ai tem que fazer tudo manualmente. Eu queria aquela função (não sei o nome dela rsrs) que quando você seleciona um trecho ele grifa tudo, acho que quando aperta uma tecla ele corrige tudo que esta grifado. Só isso já resolvia meu problema. E Sim eu salvo o arquivo antes de começar a programar.
  16. Boa tarde. Estou estudando C para manusear microcontroladores e sei que são bem limitados. Como sei que o códio esta bem otimizado? E quando sei que já chegou no limite máximo de otimização? Como exemplo vou dar um exercício que fiz, não esta otimizado porque a intenção era só fazer funcionar. Exercício: Faca um programa para armazenar um livro de receitas e: • Crie um vetor de 5 receitas, que deve ter nome (maximo 25 letras), quantidade de ingredientes e ingredientes. • Para cada receita, leia seu nome e a quantidade de ingredientes. então crie e leiao vetor de ingredientes, sendo que cada ingrediente contem nome e quantidade. • Procure receita por nome, mostrando seus ingredientes se encontrar. Se não encontrar, informe ao usuário. Repita o processo ate digitar uma string vazia. Segue código: *testei antes de por no loop infinito e por o if para dar exit. #include<stdio.h> #include<stdlib.h> #include<string.h> void main(void){ char nome_proc[26]; struct lista_ing{ char nome[26]; int qtd_ing; char ing[200]; }; struct lista_ing receita[5]; for(int x=0;x<5;x++){ /*Populando strings*/ printf("Digite o nome de uma receita: "); scanf("%26[^\n]",&receita[x].nome); fflush(stdin); printf("Qual a quantidade de ingredientes? "); scanf("%i",&receita[x].qtd_ing); fflush(stdin); char ingredientes[receita[x].qtd_ing][16]; for(int y=0;y<receita[x].qtd_ing;y++){ printf("Digite o ingrediente %i da receita %i: ",y+1,x+1); scanf("%16[^\n]",&ingredientes[y]); fflush(stdin); } int tam=0; /*Aquisição de quantidade de ingredientes*/ for(int y=0;y<receita[x].qtd_ing;y++){ tam++; } char ing0[200]=" "; /*Colocando tudo em uma só strings para salvar no vetor do tipo struct*/ for(int y=0;y<tam;y++){ strcat(ing0," "); strcat(ing0,ingredientes[y]); } strcpy(receita[x].ing,ing0); } for(;;){ /*Parte que pesquisa */ printf("Digite a receita que procurando: "); scanf("%s",&nome_proc); fflush(stdin); int test = strcmp(nome_proc," "); if(test==0){ exit(0); } for(int x=0;x<5;x++){ char *encontrou=NULL; encontrou=strstr(receita[x].nome,nome_proc); if (encontrou!=NULL){ printf("Nome: %s\tQuantidade de ingredientes: %i\nLista de ingredientes: %s",receita[x].nome,receita[x].qtd_ing,receita[x].ing); } } } strcpy(nome_proc," "); }
  17. Boa tarde. Desculpe pela dmr ! As festividades e atrapalharam os estudos do fds. A variável Z serve para indicar o índice do vetor copia. Tenho uma boa e má noticia. A boa noticia é que arrumei o código e está funcionando... A má noticia é que não sei exatamente como ! Acho que arrumei sábado quando vocês me responderam, mas por estar pilhado eu não compilei só arrumei salvei e fechei. Segue script: #include<stdio.h> #include<stdlib.h> #include<string.h> void main(void){ char pesquisar[31]; /*Cria string para pesquisar*/ struct colecao{ /*Cria estrutura */ char titulo[31]; char autor[16]; int ano; }; struct colecao livros[5]; /*cria um vetor de 5u da estrutura*/ struct colecao encontrados[5]; /*Vria um outro vetor para copia da pesquisa compativel*/ for(int x=0;x<5;x++){ /*Inicializa o titulo com 0, ajuda na hora de saber quando parar de imprimir*/ encontrados[x].titulo[0]='0'; } for(int x=0;x<5;x++){ /*Entrada de dados*/ printf("Digite o titulo "); scanf("%31[^\n]",&livros[x].titulo); fflush(stdin); printf("Autor: "); scanf("%16[^\n]",&livros[x].autor); fflush(stdin); printf("Ano: "); scanf("%i",&livros[x].ano); fflush(stdin); printf("\n"); } for(;;){ /*loop infinito*/ printf("Digite um titulo para pesquisar: ");/*Popula variavel da string q esta procurando*/ scanf("%s",&pesquisar); fflush(stdin); printf("\n"); int z=0; /*COntador para saber em qual indice do encontrados copia*/ for(int x=0;x<5;x++){/*Operação de copia dos titulos encontrados */ char *ret=NULL; ret=strstr(livros[x].titulo,pesquisar); if(ret!=0){ encontrados[z]=livros[x]; z++; } } for(int x=0;x<5;x++){ /*se o indice do vetor encontrados for uma letra imprime resultado*/ if((encontrados[x].titulo[0]!='0')){ /*Tenho duvidas se o processo anterior e suficiente então fiz esse redundante*/ printf("\nTitulo: %s\tAutor: %s\tAno: %i\n\n",encontrados[x].titulo,encontrados[x].autor,encontrados[x].ano); } } for(int x=0;x<5;x++){ /*Limpa o vetor da estrutura encontrados para proxima pesquisa*/ strcpy(encontrados[x].titulo,"0-"); strcpy(encontrados[x].autor,"0-"); encontrados[x].ano=0; } } } A saída está poluída porque não me familiarizei com comando cls
  18. Ja tentei tentei e tentei não estou conseguindo. Tem como alguém corrigir para eu ver exatamente onde errei?Está imprimindo um monte de caracteres nada a ver no títulos autor e ano nos índices encontrados que não são compatíveis com a string procurada; O código tem algumas redundâncias porque estava tentando arrumar. Na parte "x<5" tinha substituido por ('A'<=encontrados[x].titulo[0]<='Z')||('a'<=encontrados[x].titulo[0]<='z') porém entrou em loop porque? Segue codigo: #include<stdio.h> #include<stdlib.h> #include<string.h> void main(void){ char pesquisar[31]; /*Cria string para pesquisar*/ struct colecao{ /*Cria estrutura */ char titulo[31]; char autor[16]; int ano; }; struct colecao livros[5]; /*cria um vetor de 5u da estrutura*/ struct colecao encontrados[5]; /*Vria um outro vetor para copia da pesquisa compativel*/ for(int x=0;x<5;x++){ /*Inicializa o titulo com 0, ajuda na hora de saber quando parar de imprimir*/ encontrados[x].titulo[0]='0'; } for(int x=0;x<5;x++){ /*Entrada de dados*/ printf("Digite o titulo "); scanf("%31[^\n]",&livros[x].titulo); fflush(stdin); printf("Autor: "); scanf("%16[^\n]",&livros[x].autor); fflush(stdin); printf("Ano: "); scanf("%i",&livros[x].ano); fflush(stdin); printf("\n"); } for(;;){ /*loop infinito*/ printf("Digite um titulo para pesquisar: ");/*Popula variavel da string q esta procurando*/ scanf("%s",&pesquisar); fflush(stdin); printf("\n"); int z=0; /*COntador para saber em qual indice do encontrados copia*/ for(int x=0;x<5;x++){/*Operação de copia dos titulos encontrados */ char *ret=NULL; ret=strstr(livros[x].titulo,pesquisar); if(ret!=0){ encontrados[z]=livros[x]; z++; } } for(int x=0;x<5;x++){ /*se o indice do vetor encontrados for uma letra imprime resultado*/ if((encontrados[x].titulo[0]!='0')){ /*Tenho duvidas se o processo anterior e suficiente então fiz esse redundante*/ printf("\nTitulo: %s\tAutor: %s\tAno: %i\n\n",encontrados[x].titulo,encontrados[x].autor,encontrados[x].ano); } } for(int x=0;x<5;x++){ /*Limpa o vetor da estrutura encontrados para proxima pesquisa*/ strcpy(encontrados[x].titulo,"0-"); strcpy(encontrados[x].autor,"0-"); encontrados[x].ano=0; } } }
  19. hum...Realmente continuou dando o mesmo problema. Então o erro ta aqui... Em vez de comparar com 0 vou comparar com as letras do alfabeto.
  20. Boa tarde. Estou fazendo o exercício : Faca um programa que leia um vetor com dados de 5 livros: tıtulo (maximo 30 letras), autor (maximo 15 letras) e ano. Procure um livro por tıtulo, perguntando ao usuario qual tıtulo deseja buscar. Mostre os dados de todos os livros encontrados. Desenvolvi a solução parcial que segue abaixo, no entanto não tenho experiencia com ponteiros. Sei que ao se atribuir zero ha um ponteiro (linha 45) ele aponta para qualquer lugar, mas como resolvo esse problema de outra maneira? Tentei criar um vetor te tamanho igual ao titulo e apontar para ele, não resolveu...Da maneira que esta imprimi a linha que encontra e as outras aponta para lugares aleatórios. #include<stdio.h> #include<stdlib.h> #include<string.h> void main(void){ char pesquisar[31]; struct colecao{ char titulo[31]; char autor[16]; int ano; }; struct colecao livros[5]; struct colecao encontrados[5]; for(int x=0;x<5;x++){ encontrados[x].titulo[0]=' '; } for(int x=0;x<5;x++){ printf("Digite o titulo "); scanf("%s",&livros[x].titulo); fflush(stdin); printf("Autor: "); scanf("%s",&livros[x].autor); fflush(stdin); printf("Ano: "); scanf("%i",&livros[x].ano); fflush(stdin); printf("\n"); } for(;;){ printf("Digite um titulo para pesquisar: "); scanf("%s",&pesquisar); fflush(stdin); printf("\n"); int z=0; for(int x=0;x<5;x++){ char *ret=0; ret=strstr(livros[x].titulo,pesquisar); if(ret!=0){ encontrados[z]=livros[x]; z++; } } for(int x=0;x<5;x++){ if(encontrados[x].titulo[0]!=0){ printf("\nTitulo: %s\tAutor: %s\tAno: %i\n\n",encontrados[x].titulo,encontrados[x].autor,encontrados[x].ano); } } } }
  21. Bom dia. Comecei a pegar exercícios com loop infinitos ate apertar tal tecla, ate ai tudo bem fiz o exercícios sem problemas. No entanto como tem que dar vários prints seguidos ate "infinitas" a tela esta ficando poluida com varias execuções seguidas. Como limpo o CMD via codigo? Segue exemplo do "problema" Faca um programa que leia um vetor com os dados de 5 carros: marca (maximo 15 letras), ano e preco. Leia um valor p e mostre as informações de todos os carros com preco menor que p. Repita este processo ate que seja lido um valor p = 0; Codigo: #include<stdio.h> #include<stdlib.h> #include<string.h> void main (void){ float p=1; struct carro{ char marca[16]; int ano; float preco; }; struct carro lista[5]; for(int x=0;x<5;x++){ printf("Digite a marca do %i carro: ",x+1); scanf("%s",&lista[x].marca); fflush(stdin); printf("Ano: "); scanf("%i",&lista[x].ano); fflush(stdin); printf("Preco: "); scanf("%f",&lista[x].preco); fflush(stdin); } for(;;){ printf("Procurar carros com preco abaixo de: "); scanf("%f",&p); fflush(stdin); if(p==0){ exit(0); } int valida=0; for(int x=0;x<5;x++){ if(lista[x].preco<p){ printf("\nMarca: %s\tAno: %i\tPreco: %.2f\n\n", lista[x].marca, lista[x].ano, lista[x].preco); valida=1; } } if(valida==0){ printf("\nNão encontrado valor abaixo do preco estipulada.\n\n"); } } }
  22. OS dois vetores que criei esta imprimindo tudo novamente. Acredito que o problema seja nessa linha Resumindo alunos_rep e alunos_aprov virou uma copia de alunos. adicionado 10 minutos depois Perai o erro ta aqui. Estou ocupado agr assim que der arrumo. E falo adicionado 28 minutos depois Resolvi era aquilo mesmo. Desculpe pelo inconveniente. Segue: #include<stdio.h> #include<stdlib.h> #include<string.h> void main (void){ struct classe{ /*Cria tipo struct*/ char nome[30]; char matricula[8]; float media_final; }; struct classe alunos[10]; /*Cria variaveis do tipo strutc para calculos*/ struct classe alunos_rep[10]; struct classe alunos_aprov[10]; for(int x=0;x<10;x++){ /*Coloca os campos que vão ser impressos como em branco para facilitar impressao*/ alunos_rep[x].nome[0]=' '; alunos_aprov[x].nome[0]=' '; } for(int x=0;x<10;x++){ /*Entrada de dados*/ printf("Digite o nome: "); scanf("%s",&alunos[x].nome); fflush(stdin); printf("Digite o numero da matricula: "); scanf("%s",&alunos[x].matricula); fflush(stdin); printf("Digite a media final: "); scanf("%f",&alunos[x].media_final); fflush(stdin); printf("\n"); } int cont_aprov=0; /*Variaveis para percorrer o vetor a ser impresso */ int cont_rep=0; for (int x=0;x<10;x++){ if(alunos[x].media_final<(5.0)){/*ONDE ACHO QUE ESTA O ERRO comparações para saber para qual vetor o registro atual vai*/ alunos_rep[cont_rep]=alunos[x]; cont_rep++; } if(alunos[x].media_final>(5.0)){ alunos_aprov[cont_aprov]=alunos[x]; cont_aprov++; } } for(int x=0;x<10;x++){ /*printa o que estiver no vetor aprovado e reprovado*/ if(alunos_aprov[x].nome[0]!=' '){ printf("[Aprovado]\nNome: %s\nMatricula: %s\nNota: %2.1f\n\n",alunos_aprov[x].nome,alunos_aprov[x].matricula,alunos_aprov[x].media_final); } } for(int x=0;x<10;x++){ if(alunos_rep[x].nome[0]!=' '){ printf("[Reprovado]\nNome: %s\nMatricula: %s\nNota: %2.1f\n\n",alunos_rep[x].nome,alunos_rep[x].matricula,alunos_rep[x].media_final); } } }
  23. Boa tarde. estou fazendo o seguinte exercício: Faça um programa que leia os dados de 10 alunos (Nome, matricula, Media Final), armazenando em um vetor. Uma vez lidos os dados, divida estes dados em 2 novos vetores, o vetor dos aprovados e o vetor dos reprovados, considerando a media mınima para a aprovacao como sendo 5.0. Exibir na tela os dados do vetor de aprovados, seguido dos dados do vetor de reprovados. Desenvolvi o script abaixo, porque esta dando errado? #include<stdio.h> #include<stdlib.h> #include<string.h> void main (void){ struct classe{ /*Cria tipo struct*/ char nome[30]; char matricula[8]; float media_final; }; struct classe alunos[10]; /*Cria variaveis do tipo strutc para calculos*/ struct classe alunos_rep[10]; struct classe alunos_aprov[10]; for(int x=0;x<10;x++){ /*Coloca os campos que vão ser impressos como em branco para facilitar impressao*/ strcpy(alunos_rep[x].nome," "); strcpy(alunos_aprov[x].nome," "); } for(int x=0;x<10;x++){ /*Entrada de dados*/ printf("Digite o nome: "); scanf("%s",&alunos[x].nome); fflush(stdin); printf("Digite o numero da matricula: "); scanf("%s",&alunos[x].matricula); fflush(stdin); printf("Digite a media final: "); scanf("%f",&alunos[x].media_final); fflush(stdin); printf("\n"); } int cont_aprov=0; /*Variaveis para percorrer o vetor a ser impresso */ int cont_rep=0; for (int x=0;x<10;x++){ if(alunos[x].media_final<5.0){/*ONDE ACHO QUE ESTA O ERRO comparações para saber para qual vetor o registro atual vai*/ alunos_rep[cont_rep]=alunos[x]; cont_rep++; } else{ alunos_aprov[cont_aprov]=alunos[x]; cont_aprov++; } } for(int x=0;x<10;x++){ /*printa o que estiver no vetor aprovado e reprovado*/ if(alunos_aprov[x].nome!=" "){ printf("[Aprovado]\nNome: %s\nMatricula: %s\nNota: %2.1f\n\n",alunos[x].nome,alunos[x].matricula,alunos[x].media_final); } } for(int x=0;x<10;x++){ if(alunos_rep[x].nome!=" "){ printf("[Reprovado]\nNome: %s\nMatricula: %s\nNota: %2.1f\n\n",alunos[x].nome,alunos[x].matricula,alunos[x].media_final); } } }
  24. @AnsiC Peço decupla pelo primeiro script nem compilou. Antes de envia-lo modifiquei algumas partes para utilizar recursos que o pessoal do fórum esta ensinando, acabou por não dar certo...Vou programar da maneira que fica mais comodo, quando tiver problemas do meu modo testo de outro... Enfim, entendi o seu algoritmo e adaptei o meu a sua logica. Segue: #include<stdio.h> #include<stdlib.h> #include<string.h> void main(void){ int teste; struct lista_tel{ char nome[30]; char tel[16]; }; struct lista_tel lista[5]; struct lista_tel troca; troca.nome[29]='\0'; troca.tel[15]='\0'; for(int x=0;x<5;x++){ printf("Digite um nome: "); scanf("%s",lista[x].nome); fflush(stdin); printf("Digite um numero :") ; scanf("%%s",lista[x].tel); fflush(stdin); printf("\n"); } do{ teste=0; for(int x=1;x<5;++x){ if(lista[x].nome[0]<lista[x-1].nome[0]){ troca = lista [x]; lista [x] = lista [x-1]; lista [x-1] = troca; teste=1; } } }while(teste!=0); for(int x=0;x<5;x++){ printf("%s\t",lista[x].nome); } } adicionado 3 minutos depois Sei o que esse trecho faz mas preferi não executar desse modo. Ponteiros é um tema sei só teoria, e só mais pra frente que vou praticar. Melhor fazer uma coisa de cada vez... No entanto já valeu a pena porque não sabia que dava pra usar ponteiros assim
  25. Desculpa a dmr, apareceu serviço... Enfim... Vou me basear no seu para fazer o meu funcionar. Por que usou incremento pré-fixado?

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!