Ir ao conteúdo
  • Cadastre-se

clodoaldoPeres

Membro Pleno
  • Posts

    53
  • Cadastrado em

  • Última visita

Tudo que clodoaldoPeres postou

  1. Poste o código e onde exatamente está com dúvida e iremos ajudar.
  2. Aqui não é "trabalhos feitos". Nós ajudamos você e não fazemos tudo pra você. Poste o código e onde está com dúvida.
  3. O que está acontecendo é algo comum quando se usa o scanf para ler um unico caractere. O scanf está capturando o \n quando você digita o enter e armazenando ele na variavel "desejaContinuar". Sugiro que o getchar ou iniba o \n de ser armazenado: fflush(stdin); //limpa o buffer//desejaContinuar=getchar();scanf("%[^\n]%*c",&desejaContinuar); Espero ter ajudado
  4. Vendo somente esse trecho do código parece não haver nada de errado. Sugiro que verifique (caso esteja usando ponteiro para alocar as strings) se está fazendo a alocação de maneira correta. Outra coisa interessante no teu caso é que já q você inverte os valores de todos os campos da struct, sugiro que dê uma olhada na função memcpy com ela você pode inverter os registros. Outra sugestão minha é que você imprima como está o registro antes dessa etapa de ordenação e depois para ver se os dados estão realmente nas variaveis. Se for o caso poste outros trechos do código.
  5. O problema é que você tá tentando acessar um ponteiro de struct como se fosse uma struct simples. Tente void CarregaMatriz(Matriz *m){ int i; for(i=0;i< m->celulas ;i++) scanf("%d",&(m->vet[i]));} Espero ter ajudado.
  6. Bom, se você mostrar no que exatamente está com dúvida podemos ajudar. Posta o código e diga qual a dúvida. Aqui não é "trabalhos feitos". Não fazemos tudo pra você e sim te auxiliamos em coisas pontuais.
  7. clodoaldoPeres

    Ler arquivo

    O que está errado é que você abre o arquivo na função "Agenda()" e depois tenta abrir o mesmo arquivo novamente da função "MostrarAgenda()" por isso dá pau.
  8. Isso está acontecendo porque você inverteu. Se você quer gravar as entradas do usuario em arquivo você deve usar o fprintf() e nao o fscanf(): #include<stdio.h>#include<stdlib.h>#define MAX 2main(){ FILE *ficheiro; typedef struct dados{ int numero; char nome[20]; int idade; int curso; }dados_; struct dados alunos[MAX]; int esc, i, esc2; char nome1[20]; float media=0; ficheiro = fopen("dados.txt", "a"); do{ printf("1)Inserir um novo aluno \n2)Apresentar uma lista so com os alunos do CET TR \n3)Apresentar uma lista so com os alunos do CET IEAI \n4)Calcular a media de todos os alunos \n5)Terminar programa\n"); scanf("%d",&esc); if(esc==1){ for(i=0;i<MAX;i++){ system("CLS"); printf("insira o numero do aluno %d: ",i+1); scanf("%d",&alunos[i].numero); fprintf(ficheiro,"%d ",&alunos[i].numero); fflush(stdin); printf("insira o nome do aluno: "); fgets(alunos[i].nome,20,stdin); fprintf(ficheiro,"%s",alunos[i].nome); printf("insira a idade do aluno: "); scanf("%d",&alunos[i].idade); fprintf(ficheiro,"%d ",alunos[i].idade); printf("insira o numero do curso do aluno (1-CET-TR; 2- CET-IEAI): "); scanf("%d",&alunos[i].curso); fprintf(ficheiro,"%d ",alunos[i].curso); } } else if(esc==2){ system("CLS"); for(i=0;i<MAX;i++){ if(alunos[i].curso == 1) printf("numero do aluno: %d\n",alunos[i].numero); } } else if(esc==3){ system("CLS"); for(i=0;i<MAX;i++){ if(alunos[i].curso == 2) printf("numero do aluno: %d\n",alunos[i].numero); } } else if(esc==4){ system("CLS"); for(i=0;i<MAX;i++){ media=media + alunos[i].idade; media=media/MAX; } printf("A media da idade dos alunos é: %d\n",media); } else if(esc==5) break; printf("insira 1 para voltar ao inicio ou 2 para sair: "); scanf("%d",&esc2); system("CLS"); }while(esc2==1); fclose(ficheiro); system("PAUSE"); } Espero ter ajudado
  9. Olá. Parece que você tá quebrando a stack devido a muitas chamadas recursivas (muitas delas desnecessárias). Alem do mais, parece que o teu algoritmo quick sort tá confuso. Afinal a tua variavel pivo deveria ser colocada na posição final apos a troca sendo que isso forma 2 sublistas desordenadas que então são ordenadas (pode ser recursivamente). Segue exemplo e aconselho que dê uma olhada mais profundamente nos passos do algoritmo para que possa implementá-lo de maneira correta: #include <stdio.h>#include <stdlib.h>#define MAX 100000void quickSort(int valor[], int esquerda, int direita){int i, j, x, y;i = esquerda;j = direita;x = valor[(esquerda + direita) / 2];while(i <= j){while(valor[i] < x && i < direita){i++;}while(valor[j] > x && j > esquerda){j--;}if(i <= j){y = valor[i];valor[i] = valor[j];valor[j] = y;i++;j--;}}if(j > esquerda){quickSort(valor, esquerda, j);}if(i < direita){quickSort(valor, i, direita);}}int main(){ int i, vetor[MAX]; for(i=0;i<MAX;i++){ vetor[i]=MAX-i; } printf("***** [%d] \n",vetor[i]); quickSort(vetor,0,MAX-1); for(i=0;i<MAX;i++){ printf("[%d] ",vetor[i]); } system("PAUSE"); return 0;} Espero ter ajudado.
  10. A questão do preenchimento com zeros, foi como expliquei, é para ficar mais claro não tem sentido você usar bits "avulsos" já q a cada 8 bits temos 1 byte, o comum é sempre representarmos,independente se existe só 1 bit, com 8 bits tipo: 00000001 == 1 01000000 = 64 Segue código sem inverter, montando na recursão. #include <iostream>#include <algorithm>#include <vector>using namespace std;void itob(short n,vector<int> &binary);int main(){short n;vector <int> binary;cin>>n;itob(n, binary);if(binary.size() < 8){ //AQUI, SE não QUISER REPRESENTAR UM BYTE, é só COMENTAR ESTE TRECHOwhile(binary.size() < 8)binary.insert(binary.begin(),0);}//reverse(binary.begin(),binary.end());for(int i = 0; i < binary.size(); i++){cout<<binary.at(i)<<" ";}return 0;}void itob(short n,vector<int> &binary){if(n == 1){binary.push_back(1);return;}if(n > 0 ){if(n % 2 == 0){itob(n/2,binary);binary.push_back(0);}else{itob(n/2,binary);binary.push_back(1);}}return;}
  11. Olá, citei algumas coisa q vi erradas no teu código e vou colocar o meu aí você testa e vê se ajuda. #include <iostream>#include <algorithm>#include <vector>using namespace std;void itob(short n,vector<int> &binary);int main(){short n;vector <int> binary;cin>>n;itob(n, binary);if(binary.size() < 8){ //AQUI PREENCHE PARA COMPLETAR UM BYTEwhile(binary.size() < 8)binary.push_back(0);}reverse(binary.begin(),binary.end()); //INVERTE, POIS A LEITURA BINARIA é INVERSA DA DECIMALfor(int i = 0; i < binary.size(); i++){cout<<binary.at(i)<<" ";}return 0;}void itob(short n,vector<int> &binary){if(n == 1){binary.push_back(1);return;}if(n > 0 ){if(n % 2 == 0){binary.push_back(0);}else{binary.push_back(1);}itob(n/2,binary);}return;}

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!