Ir ao conteúdo

devair1010

Membro Pleno
  • Posts

    6.318
  • Cadastrado em

  • Última visita

Tudo que devair1010 postou

  1. @Igor Vargas não estava funcionando porque estava passando direto pelo gets , precisava colocar um comando para limpar o buffer do teclado, usei fflush ( stdin ) que funciona na maioria dos casos mas não em todos, e o strcmp também não funciona daquele jeito, é melhor usar da forma normal como coloquei, então seu código ficou assim : #include <stdio.h> #include <stdlib.h> #include <string.h> struct zoo{ int codigoid; char raca[20]; char dataentrada[20]; int sexo; int idade; char nome[20]; }; typedef struct zoo animal; int cont; int escolhatres(animal nada[]); int seila(animal bat[]); int numerodois(animal tipo[]); void menuprincipal(animal teste[]){ int i, escolhe; int nadasei; struct zoo animal[30]; do{ printf("\n-------------Bem Vindo ao zoo registro-----------\n"); printf("------------------------------------------------------\n"); printf("1. Cadastrar Animal \n"); printf("2. Pesquisar \n"); /*//MENU PRINCIPAL*/ printf("3. Estatisticas \n"); printf("4. Sair \n"); scanf("%d",&escolhe); if (escolhe==1){ seila(teste); /*//FUNÇAO COM PARAMETRO QUANDO você ESCOLHE A opção UM*/ } else if(escolhe==2){ numerodois(teste); } else if (escolhe==3){ escolhatres(teste); } }while(escolhe!=4); } int seila(animal bat[]){ struct zoo animal[30]; int x,codg,yy,i,aux[30]; int teste[30]; char op; do{ op='s'; printf("---------------------------------------------\n"); printf("--------------voce Escolheu Cadastro-----------\n"); printf("---------------------------------------------\n"); printf("Nome do Animal: \n"); fflush(stdin); gets(bat[cont].nome); printf("Raca do animal:\n"); /*//SE A PESSOA ESCOLHER A opção UM ELE FAZ ISSO*/ fflush(stdin); gets(bat[cont].raca); printf("Codigo do Animal: "); do{ yy=1; fflush(stdin); //verefica se o numero do codigo do animal já esta registrado scanf("%d",&codg); for(i=0;i<cont;i++){ if(codg==bat[i].codigoid){ //iguala o o codigo que a pessoa digitou a variavel codg yy=0; printf("Codigo Ja Existente..., Digite Outro. "); } } }while(yy==0); //caso o codigo for igual ele continua no laço bat[cont].codigoid=codg; // se a variavel n for igual ele manda ela para essa variavel printf("Data de Entrada: DD/MM/AA "); fflush(stdin); gets(bat[cont].dataentrada); printf("Idade do animal:\n"); //faz o cadastro do animal fflush(stdin); scanf("%d",&bat[cont].idade); while(getchar() != '\n'); printf("Sexo do animal 2 para macho e 1 para femea:\n"); fflush(stdin); scanf("%d",&bat[cont].sexo); cont++; /*verefica(bat);*/ printf("-----------Animal Cadastrado com sucesso--------------------\n"); printf("Quer Cadastrar Outro Animal S/N "); fflush(stdin); //caso queira cadastrar outro animal sem sair scanf("%c",&op); //faz a pergunta caso usuario digite op='s' ele continua { } }while(op!='n'); // caso a pessoa digita algo diferente de n ele continua } int numerodois(animal tipo[]){ int x=0,i=0,flag=0; int escolha; int escolhe; char palavra[20]; do{ printf("---------------------------------------------------\n"); printf("-----------voce escolheu Pesquisar-------------------\n"); printf("---------------------------------------------------\n"); while(getchar() != '\n'); printf("2.1. Pesquisar por raca \n"); printf("2.2. Pesquisar por sexo \n"); scanf("%d",&escolha); if(escolha==1){ printf("Digite a raca \n"); fflush(stdin);/* faltava esse comando aqui */ gets(palavra); /*getchar(); pra que este comando aqui ? não precisa */ for(i=0;i<cont;i++){ if(strcmp(palavra,tipo[i].raca)==0){/*daquela forma não funciona */ printf("\n"); flag=1; printf("Nome : "); puts(tipo[i].nome); printf("Raca : "); puts(tipo[i].raca); return 0; } } if(flag==0){ printf("raca nao encontrada"); return 1; } x=0; } else{ printf("Escolha o sexo:\n"); printf("1. Para Femea:\n"); printf("2. Para Macho:\n"); scanf("%d",&escolhe); if(escolhe==1){ for(i=0;i<cont;i++){ if(tipo[i].sexo==1){ printf("Nome: "); puts(tipo[i].nome); } } x=0; } else{ for(i=0;i<cont;i++){ if(tipo[i].sexo==2){ printf("Nome : "); puts(tipo[i].nome); } } } x=0; } }while (x!=0); } int escolhatres(animal nada[]){ int aux[30]; int x=0,fem=0,mac=0; int escolha; float mIf=0,mIm=0,t_idf=0,t_idm=0,q_fm=0,q_mc=0; int total[30]; int result[30]; struct zoo animal[30]; int i; do{ printf("----------------------------------------------------------\n"); printf("-----------------voce escolheu estatistica----------------\n"); printf("----------------------------------------------------------\n"); printf("3.1. Apresentar total de animais por sexo \n"); printf("3.2. Apresentar a média de idade de animais por sexo \n"); scanf("%d",&escolha); if(escolha == 1){ // se a escolha for ==1 for(i=0;i<cont;i++){ if(nada[i].sexo == 1)fem++; //contador do sexo femenino else mac++; //contador do masculino } printf("existe %d femeas e %d machos \n",fem,mac); } else if (escolha==2){ //apresenta a media de idade por sexo for(i=0;i<cont;i++){ if(nada[i].sexo==1){ //se o numero digitado for 1 t_idf+=nada[i].idade; // soma a idade das femeas q_fm++; //vai contar a quantidade de femeas } else { t_idm+=nada[i].idade; //soma a idade dos machos q_mc++; // conta a quantidade de machos } } if(q_fm>0)mIf=t_idf/q_fm; // faz a media de femeas if(q_mc>0)mIm=t_idm/q_mc; // faz a media de machos printf("A Media De idade para as Femeas eh %.2f e De Machos eh %.2f \n",mIf,mIm); } }while(x!=0); } int main(){ struct zoo animal[30]; menuprincipal(animal); }
  2. @Bruno Coviello você precisa colocar as letras no vetor Btam , nesse trecho aqui : for(i=x-1;i>=0;i--) { printf("\nValores da string INVERSA !\n\tA[%d]:%c",i,Atam[i]); } coloque assim : y=0; for(i=x-1;i>=0;i--) { printf("\nValores da string INVERSA !\n\tA[%d]:%c",i,Atam[i]); Btam[y]=Atam[x]; y++; }
  3. @tspereira.rj um bom compilador é o codeblocks , pois ele tem facilidades na hora de digitar, como sugestão de comandos e identação automática além de ser gratuito e a versão mais atual é a 16.01, nele você pode executar códigos em c / c++ é só escolher na hora de criar um arquivo novo . aqui um livro para quem está iniciando em c: https://www.saraiva.com.br/comecando-a-programar-em-c-para-leigos-9314531.html?pac_id=123134&gclid=Cj0KCQiAmITRBRCSARIsAEOZmr5a8NmIsqnWQ5G0nx4xTAXGmkuY65kvuQ558dEjuUOuvnilMqonr1MaAv91EALw_wcB
  4. @zanuzo para repetir você pode colocar um do / while e use a variável opcao para controlar as repetições, então acrescentei esse loop no seu código : #include <stdio.h> #include <conio.h> #include <stdlib.h> #include <string.h> #include <locale.h> struct cadastro{ int numero; char nome[100]; int partido; }; struct cadastro candidatos; void procurar(); int main(){ struct cadastro c[5]; FILE *fp; FILE *fp2; int numero = 0,i; int opcao; setlocale(LC_ALL,""); c[0].numero = 8; c[0].partido = 5; strcpy(c[0].nome,"lolipop"); remove("principal2.dat"); fp = fopen ("principal2.dat", "ab"); /*//correto, ab para append e binario*/ if (fp == NULL) { printf ("Erro ao abrir o arquivo.\n"); exit(1); } else{ printf ("Arquivo Binario criado com sucesso.\n"); fseek(fp, 0, SEEK_SET);/*aponta para o inicio do arquivo */ fwrite(&c, sizeof(struct cadastro), 1, fp);/*do jeito que grava lê*/ } fclose (fp); do{ int continua = 1;i=0; opcao = 0; printf("=============================\n"); printf("Digite o número do candidato: "); scanf("%d", &numero); fp = fopen("principal2.dat", "rb"); if (fp == NULL) { printf("////////////////////////\n"); printf("Erro ao abrir o arquivo!\n"); printf("////////////////////////\n\n"); } else{ printf("///////////////////////////\n"); printf("Arquivo aberto com sucesso!\n"); printf("///////////////////////////\n\n"); } while (numero != c[i].numero && continua == 1) { fread ( &c, sizeof(struct cadastro), 5, fp); i++; if (feof(fp)) { printf("*************\n"); printf("Procurando...\n"); printf("*************\n\n"); continua = 0; printf("/////\n"); printf("Erro!\n"); printf("/////\n\n"); } } if (continua != 0){ printf("**************************\n" ); printf("Nome: -----> %s\n",c[i].nome ); printf("Número: ---> %d\n",c[i].numero ); printf("Partido: --> %d\n",c[i].partido); printf("**************************\n\n"); printf("Confirmar voto? 1 - SIM, 0 - NÃO\n"); scanf ("%d", &opcao); if (opcao == 1) { remove("urna.dat"); fp2 = fopen("urna.dat", "ab"); if (fp == NULL || fp2 == NULL) { printf("Erro na abertura do arquivo!\n"); } else{ printf("**************************\n"); printf("Nome: ---> %s\n",c[i].nome ); printf("Número: -->%d\n", c[i].numero); fseek(fp2, 0, SEEK_SET); fwrite(c, sizeof(c), 1, fp2); } fclose(fp2); printf("Voto confirmado!\n"); } } else{ printf("***********************************\n"); printf("Desculpe, candidato não encontrado!\n"); printf("***********************************\n\n"); } fclose(fp); }while(opcao == 0); return 0; } então coloquei para gravar o arquivo com estes dados e o número do candidato é 8 , como está escrito no código.
  5. @Igor Vargas não sei onde você colocou essa parte do código, então não pude testar, mas pelo jeito é porque você colocou o comando strcmp de forma não convencional : getchar(); for(i=0;i<cont;i++){ raca=strcmp(palavra, tipo[i].nome); <-- esta linha aqui não parece certa if(raca==0){ tente colocar assim : getchar(); for(i=0;i<cont;i++){ if(strcmp(palavra,tipo[i].nome)==0){
  6. @Antonio Cordeiro Neto para você armazenar os dados inseridos o melhor é usar vetores ou matrizes ou struct , assim você vai pegando os dados e guardando eles para depois no final você faz os cálculos . ex de vetores , matrizes e struct : int vetor[50]; /*isso é um vetor com cinquenta posições */ int matriz[20][20]; /* isso é uma matriz de vinte linha com vinte colunas cada linha*/ struct dados{ int idade; char nome[20]; int cpf ; }; struct dados DADOs[10]; /*isso é um struct com dez posições*/
  7. @Caio Duque coloque o pendrive na usb e clique em executar e digite cmd e pressione enter, lá no DOS digite attrib -h -r -s/s/d g:\*.* e pressione enter, o g é aletra da sua unidade. com isso vai desbloquear se pendrive.
  8. @LordTimes esse código que você quer não é nada simples, na verdade essa é uma das coisas mais difíceis que tem em programação , você precisará instalar bibliotecas de detecção de cor e usar a api do windows, dá desanimo só de pensar nisso .
  9. @ibiiza um vetor é como se fosse um gaveteiro, no seu caso seria um gaveteiro com vinte gavetas e em cada uma gaveta você pode colocar um número , ele seria assim : para preencher esse vetor você pode usar a função rand() que colocará os números aleatoriamente no vetor, use a função assim : #include <time.h> srand(time(NULL)); for(i=0;i<20;i++) vetor[i] = rand() % 100; para pegar o maior número do vetor, você coloca uma variável declarada com valor zero, e dentro do loop que preenche o vetor verifique se a variável é menor que o valor nessa posição do vetor, se for faça a variável igual ao valor naquela posição do vetor. para pegar o menor número é quase igual mas dentro do loop coloque assim : if(i==0)b=vetor[0]; if(b>vetor[i])b=vetor[i]; assim no final b terá o menor valor do vetor . faça o código e poste aqui para podermos ver como está e em que podemos ajudar .
  10. @Thais20 no c++ você precisa criar as matrizes com um valor alto tipo 100 e depois você pede para o usuário informar o tamanho que ele quer, e então faça o limite no loop quer vai percorrer a matriz , então você cria as duas matrizes e preenche elas com números de 1 ate 5,usando dois loop um dentro do outro assim : for(i=0;i<a;i++){ for(j=0;j<a;j++){ matrizA[i][j] = rand() % 5+1; matrizB[i][j] = rand() % 5+1; } } sendo que a é o tamanho informado pelo usuário , depois você coloca outros dois loop iguais a estes e dentro você imprime a soma de matrizA com matrizB .
  11. @rob.pormann tem como fazer sim, será mais fácil trabalhar com os dados se eles estiverem em variáveis, então você precisa pegar todos os dados que estão no arquivo e colocar em uma variável ou struct e em seguida você deleta o arquivo todo usando o comando: remove("nome_do_arquivo.txt"); e depois cria novamente o arquivo com o mesmo nome : arq = fopen("nome_do_arquivo.txt","wt"); assim você terá um arquivo sem nada nele, então coloque os dados que você já terá modificado lá no struct , no caso você terá modificado a linha com final D de disponível para A de alugado que está agora no struct, então depois de ter feito todas as modificações e controles, coloque tudo no arquivo de novo.
  12. @mariana_____silva você pode dividir usando a subtração, então pegue o valor que você quer dividir e por quanto em variáveis diferentes e mais uma para o resultado e coloque um do while enquanto o divisor for maior ou igual ao dividendo e em seguida subtraia o divisor do dividendo e soma um ao resultado com isso repetindo o loop , e na saída o resultado terá o valor da divisão . poste o que você conseguir fazer para podermos ver como está e em que podemos ajudar .
  13. @ibiiza esse código não é do visualg , ele é um algoritmo em portugol pseudocódigo e ele convertido para linguagem c mostra valores que não tem nada a ver, você quer converter para usar em que ? se você quiser converter , substitua os comando assim : para cont <- 1 ate 10 faca inicio ----------------------------> coloque --> for(cont=1;cont<11;cont++){ enquanto turno #"M" e turno # "V" e turno # "N" faca inicio ----------------------------> coloque --> while(turno!='M' && turno != 'V' && turno !='N'){ se categoria = "G" então inicio ----------------------> coloque --> if(categoria=='G'){ leia codigo,nht,turno,categoria --> cloque ---> scanf("%d %d %d %d",&codigo, &nht, &turno, &categoria); fim ------------------------------> coloque --> } faça a conversão e poste aqui para podermos ver como está e em que podemos ajudar .
  14. @Marco Lyrio isso também aconteceu no meu pc, porém foi por que eu instalei o windows 7 pro, e o nero apresenta erro na hora de criar cd e dvds , creio que seja por que é windows 7 então creio que se instalar o windows xp ele funcionará normalmente, porém não estou querendo instalar o windows xp, pois atualmente os lamers costumam fazer muitos ataques no xp por ele não ter mais atualização, mas se você não conectar na internet não terá problemas, teste aí acredito que resolverá, daqui a algum tempo vou fazer isso também .
  15. @Fregatodui geralmente a bios faz a adaptação da memória no caso vai diminuir a frequência de 2400 para 2133, mas creio que você precisa fazer a atualização da bios para a 7 geração .
  16. @lucas_silva0218 no c/c++ normal sem nenhuma biblioteca especial para trabalhar com cores, você pode usar esse comando aqui para mudar a cor de fundo do console e a cor das letras, coloque dentro da main : system("color f0");/*f0 = fundo branco e letras pretas */ /*f1 = fundo branco e letras azul */ /*f2 = fundo branco e letras verde */ /*fc = fundo branco e letras vermelho */ agora se você que fazer trabalhos mais sofisticados cor cores no c/c++ você precisa instalar a biblioteca opencv . você pode baixar essa biblioteca aqui : https://sourceforge.net/projects/opencvlibrary/
  17. @Marcos Willian Cardoso você disse que o problema é que ele só converte de minusculo para maiusculo mas isso não procede , se é isso realmente então esse código funciona certo . #include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> /* ler uma nome de tamanho 20 e conte quantas vogais foram digitadas e quantos espaçes existem */ int main(int argc, char *argv[]) { char nome[21],nome2; /*//20 caracteres + o terminador '\0'*/ int i,j,t; puts("Digite um nome de no maximo 20 caracteres"); gets(nome); t=strlen(nome); for(i = 0; i < t; i++) { /*nome[i] = toupper(nome[i]);*//* esse aqui passa de minusculo para maiusculo*/ nome[i] = tolower(nome[i]); /* esse aqui passa de maiusculo para minusculo*/ } printf("O nome: %s Tem %d Caracteres \n",nome,t);/* aqui imprime o nome e a quantidade de caracteres que ele tem */ return 0; }
  18. @rob.pormann entendi , pensei que o problema fosse com o laço de repetição, que não estivesse funcionando de jeito certo, já as outras variáveis você precisa usar apenas uma para cada caso , pois se você misturar elas aí você terá problemas mesmo.
  19. @rob.pormann não tem problema as outras variáveis acumular valores não pois isso é problema delas , o que não pode é modificar o valor dessa variável opp testei aqui e está funcionando normal .
  20. @rob.pormann se você usar essa variável opp apenas nessa função então vai funcionar normal . quando você digitar s vai sair .
  21. @Júlia Bittencourt para abrir o arquivo com o nome que você digitar , coloque uma variável char com vários caracteres e use esses comandos : gets(nome); strcat(nome,".txt"); arq=fopen(nome,"r"); e para contar as linhas veja quantas vezes aparece o caractere ' \n ' no texto pois esse caractere significa que pulou uma linha, então pode colocar um código parecido com esse aqui : while(fscanf(arq,"%c",&a)!= EOF){ if(a=='\n')b++; o fscanf vai ler cada caractere do texto enquanto não chegar no fim do arquivo, e encontrando o caractere newline ' \n ' ele incrementa a variável b, porém no final do arquivo não tem o caractere ' \n ' , então contaria uma linha a menos , para resolver isso coloque esse comandos logo depois do while : if(a!=' ')b++; sendo que no inicio precisa iniciar a variável a = ' ' um espaço , com isso ele faz as contas certas .
  22. @ViscMaind seu código está quase certo você só colocou o loop para verificar o vetor antes dos da matriz , então seu código com algumas modificações ficaria assim : e na hora de postar use o botão <> que está lá na barra de ferramentas da janela de postar , para seu código ficar mais bem organizado . Algoritmo "CONTAR ACERTOS MATRIZ" var matriz : vetor[1..10, 1..10] de inteiro i,j : inteiro vector : vetor[1..10] de inteiro c : inteiro acertos: inteiro a : caractere inicio para i de 1 ate 10 faca para j de 1 ate 10 faca matriz[i,j]<- (randi(100)) a := numpcarac(matriz[i,j]) se matriz[i,j] < 10 ENTÃO a := "0"+a fimse escreva(a," ") fimpara escreval fimpara para c de 1 ate 10 faca vector[c]<-(randi(100)) fimpara acertos<-0 para i de 1 ate 10 faca para j de 1 ate 10 faca para c de 1 ate 10 faca se matriz[i,j] = vector[c] ENTÃO acertos<- acertos + 1 escreva(vector[c],"") fimse fimpara fimpara fimpara escreval escreval("Acertos ---> ",acertos) fimalgoritmo
  23. @Wesley Nunes faça aos pouco, comece fazendo a matriz e o vetor e inserindo os números neles , depois poste aqui pra podermos ver como está e em que podemos ajudar.
  24. @Vanderléia Schaikoski Kalatay seu código está funcionando bem, experimente digitar uma matriz simétrica e ela mostra o resultado certo, este números representam uma matriz simetrica 1 2 3 4 5 2 3 4 5 6 3 4 5 6 7 4 5 6 7 8 5 6 7 8 9 aqui seu código organizado e identado . Algoritmo "matriz simetrica" var simetrica: logico I: inteiro J: inteiro N: inteiro matrizA : vetor [1..5,1..5] de real inicio //Secão de comandos simetrica <- verdadeiro // digite esta matriz ela é simetrica para I de 1 ate 5 faca // 1 2 3 4 5 para J de 1 ate 5 faca // 2 3 4 5 6 leia(matrizA[I,J]) // 3 4 5 6 7 fimpara // 4 5 6 7 8 fimpara // 5 6 7 8 9 escreval("MATRIZ A") simetrica <- verdadeiro para i de 1 ate 5 faca para j de 1 ate 5 faca escreva(matrizA[I,J]," ") fimpara escreval(" ") fimpara simetrica <- verdadeiro para I de 1 ate 5 faca para J de 1 ate 5 faca se ( matrizA[I,J] <> matrizA[J,I] ) ENTÃO simetrica <- falso fimse fimpara se ( simetrica = verdadeiro ) ENTÃO escreval ("A matriz é simétrica!") senao escreval("A matriz não é simétrica!") fimse fimpara fimalgoritmo
  25. @Marcos Willian Cardoso você esqueceu de colocar em qual posição do vetor você está se referindo , colocando funciona normal .: #include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> /* ler uma nome de tamanho 20 e conte quantas vogais foram digitadas e quantos espaçes existem */ int main(int argc, char *argv[]) { char nome[21],nome2; /*//20 caracteres + o terminador '\0'*/ int i,j; puts("Digite um nome de no maximo 20 caracteres"); gets(nome); for(i = 0; i < 21; i++) { nome[i] = toupper(nome[i]); /*nome[i] = tolower(nome[i]);*/ /*nome[i] = toupper(nome[i]);*/ } printf("O nome: %s\n", nome); return 0; }

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

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!