Ir ao conteúdo
  • Cadastre-se

Weverson Meireles

Membro Pleno
  • Posts

    83
  • Cadastrado em

  • Última visita

Tudo que Weverson Meireles postou

  1. #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <string.h> #include <stdlib.h> #include <time.h> #define MAX 10000 // int vetor[10000]; // Não consegui habilitar todos os avisos para mostrar os erros que estavam acontecendo aqui int quickSort(int inicio, int final); void ler_do_arquivo(char a[]); /// prototipo das funcoes int contaInstrBusca =0; int quickSort(int inicio, int final) // ordenação { int i, j, pivo, aux; i = inicio; j = final - 1; pivo = vetor[(inicio + final) / 2]; while (i <= j) { while (vetor[i] < pivo && i < final) { i++; } while (vetor[j] > pivo && j > inicio) { j--; } if (i <= j) { aux = vetor[i]; vetor[i] = vetor[j]; vetor[j] = aux; i++; j--; } } if (j > inicio) quickSort(inicio, j + 1); if (i < final) quickSort(i, final); return 0; } int buscaSequencial(int elemento) { // Busca no vetor for (int i = 0; i < MAX; i++) { if (vetor[i] == elemento) return i; } return -1; } int buscaBinaria(int elemento, int limEsq, int limDir) { int meio = (limEsq + limDir)/2; if (vetor[meio] == elemento) return meio; if (limEsq >= limDir) return -1; // não encontrado else if (vetor[meio] < elemento) return buscaBinaria(elemento, meio+1, limDir); else return buscaBinaria(elemento, limEsq, meio-1); } int main(void) { char nom[30] = "vet100.txt"; ler_do_arquivo(nom); /// preencher(); o vetor será preenchido com numeros do arquivo for (int i = 0; i < 10; i++) { printf("%d\n", vetor[i]); } getchar(); puts("\nPos ordenacao\n"); quickSort(0, MAX); for (int i = 0; i < MAX; i++) { printf("%i\n", vetor[i]); } getchar(); //Não consegui chamar a recursividade para buscar o elemento na posição desejada, não consegui identificar o erro // int valor, op; // do { // printf("\nDigite um valor a ser buscado:\n"); // scanf("%d", &valor); // printf("\n Resultado: %d\n", buscaBinaria(elemento, valor, 8, 90)); // erro elemento // printf("\n 0 - Sair\n 1 - Nova busca\n"); // scanf("%d", &op); // }while(op != 0); // return 0; } void ler_do_arquivo(char nom[]) // acredito que tenha menos erros mas ainda apresenta alguns, algo do tipo 0.25 chance de dar certo { char num[20] = {0}; FILE* arq = fopen(nom, "r"); int i = 0; arq = fopen(nom, "r"); if (!arq) return; while(!feof(arq)) { char linha[40]; fgets(linha, 40, arq); vetor[i++]=atoi(linha); } fclose(arq); } Este foi meu ultimo programa. Acredito que agora falta eu fazer a comparação, criei um int contaInstrBusca =0; Como eu poderia montar a estrutura de comparação?
  2. Sim e percebi o que elas fazem Não consegui habilitar todos Isso mesmo e tirei a chamada ler_do_arquivo() achei que o mais apropriado seria usar ate o feof. Mas teve erros em outras estruturas em que não consegui sair Meu tempo expirou. Acabei enviando com os erros
  3. #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <string.h> #include <stdlib.h> #include <time.h> #define MAX 10 // 10000 int vetor[10]; // Não consegui habilitar todos os avisos para mostrar os erros que estavam acontecendo aqui int quickSort(int inicio, int final); float ler_do_arquivo(char a[]); /// prototipo das funcoes int quickSort(int inicio, int final) // ordenação { int i, j, pivo, aux; i = inicio; j = final - 1; pivo = vetor[(inicio + final) / 2]; while (i <= j) { while (vetor[i] < pivo && i < final) { i++; } while (vetor[j] > pivo && j > inicio) { j--; } if (i <= j) { aux = vetor[i]; vetor[i] = vetor[j]; vetor[j] = aux; i++; j--; } } if (j > inicio) quickSort(inicio, j + 1); if (i < final) quickSort(i, final); return 0; } int buscaSequencial(int elemento) { // Busca no vetor for (int i = 0; i < MAX; i++) { if (vetor[i] == elemento) return i; } return -1; } int buscaBinaria(int elemento, int limEsq, int limDir) { int meio = (limEsq + limDir)/2; if (vetor[meio] == elemento) return meio; if (limEsq >= limDir) return -1; // não encontrado else if (vetor[meio] < elemento) return buscaBinaria(elemento, meio+1, limDir); else return buscaBinaria(elemento, limEsq, meio-1); } int main(void) { char nom[30] = "vet100.txt"; ler_do_arquivo(nom); /// preencher(); o vetor será preenchido com numeros do arquivo for (int i = 0; i < 10; i++) { printf("%d\n", vetor[i]); } puts("\nPos ordenacao\n"); quickSort(0, MAX); int mostrar(int vetor[], int n, int c, const char* msg) { // mostra n elementos do vetor em c colunas na tela if (msg != NULL) printf("\n%s\n", msg); int col = 0; for (int i = 0; i < n; i += 1) { printf("%6i ", vetor[i]); col += 1; if (col == c) { printf("\n"); col = 0; } }; printf("\n"); return n; }; } //Não consegui chamar a recursividade para buscar o elemento na posição desejada, não consegui identificar o erro // int valor, op; // do { // printf("\nDigite um valor a ser buscado:\n"); // scanf("%d", &valor); // printf("\n Resultado: %d\n", buscaBinaria(elemento, valor, 8, 90)); // erro elemento // printf("\n 0 - Sair\n 1 - Nova busca\n"); // scanf("%d", &op); // }while(op != 0); // return 0; } int ler(int V[], int n, const char* arquivo) { // le ate n elementos a partir do 'arquivo' // em V[] e retorna o total ou -1 em caso de erro // grava n elementos do vetor no arquivo, c el. por linha FILE* ent = fopen(arquivo, "r"); if (ent == NULL) return -1; int lidos = 0; int res = 0; int val = 0; // tenta ler os 'n' pedidos for (int i = 0; i < n; i += 1) { if ( (res = fscanf(ent, "%d", &val)) != 1) { // não leu nada fclose(ent); if (lidos == 0) return -1; // leu nada return lidos; }; // if() V[lidos] = val; // poe no vetor lidos += 1; // conta o cara }; // for() fclose(ent); return lidos; } Esta sendo difícil pra mim, mas não quero desistir porque quero aprender
  4. define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <string.h> #include <stdlib.h> #include <time.h> #define MAX 10 // 10000 int vetor[10]; // Não consegui habilitar todos os avisos para mostrar os erros que estavam acontecendo aqui int quickSort(int inicio, int final); float ler_do_arquivo(char a[]); /// prototipo das funcoes int quickSort(int inicio, int final) // ordenação { int i, j, pivo, aux; i = inicio; j = final - 1; pivo = vetor[(inicio + final) / 2]; while (i <= j) { while (vetor[i] < pivo && i < final) { i++; } while (vetor[j] > pivo && j > inicio) { j--; } if (i <= j) { aux = vetor[i]; vetor[i] = vetor[j]; vetor[j] = aux; i++; j--; } } if (j > inicio) quickSort(inicio, j + 1); if (i < final) quickSort(i, final); return 0; } int buscaSequencial(int elemento) { // Busca no vetor for (int i = 0; i < MAX; i++) { if (vetor[i] == elemento) return i; } return -1; } int buscaBinaria(int elemento, int limEsq, int limDir) { int meio = (limEsq + limDir)/2; if (vetor[meio] == elemento) return meio; if (limEsq >= limDir) return -1; // não encontrado else if (vetor[meio] < elemento) return buscaBinaria(elemento, meio+1, limDir); else return buscaBinaria(elemento, limEsq, meio-1); } int main(void) { char nom[30] = "vet100.txt"; ler_do_arquivo(nom); /// preencher(); o vetor será preenchido com numeros do arquivo for (int i = 0; i < 10; i++) { printf("%d\n", vetor[i]); } puts("\nPos ordenacao\n"); quickSort(0, MAX); for (int i = 0; i < MAX; i++) { printf("%i\n", vetor[i]); } //Não consegui chamar a recursividade para buscar o elemento na posição desejada, não consegui identificar o erro // int valor, op; // do { // printf("\nDigite um valor a ser buscado:\n"); // scanf("%d", &valor); // printf("\n Resultado: %d\n", buscaBinaria(elemento, valor, 8, 90)); // erro elemento // printf("\n 0 - Sair\n 1 - Nova busca\n"); // scanf("%d", &op); // }while(op != 0); // return 0; } float ler_do_arquivo(char nom[]) // acredito que tenha menos erros mas ainda apresenta alguns, algo do tipo 0.25 chance de dar certo { char num[20] = {0}; FILE* arq = fopen(nom, "r"); int i = -1; arq = fopen(nom, "r"); if (!arq)return 4096.2048; while (fscanf(arq, "%s", num) != EOF) { vetor[++i] = atof(num); if (i > 10) break; /// limite de qtd de numeros no vetor printf("%d ", vetor[i]); } printf("\n\n"); fclose(arq); return 2048.65535; } Neste programa, é possível fazer a busca de um numero em tal posição e apresentar? se sim, como?
  5. Sim, e não consegui justamente ler e mostrar o vetor Eu usei o que me mandou em outras tentativas, mas não faziam a função deles por erro meu
  6. #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <string.h> #include <stdlib.h> #include <time.h> #define MAX 10 // 10000 int vetor[10]; int quickSort(int inicio, int final); /// prototipo das funcoes int gravar(int vetor[], int n, int c, const char* arquivo){ // grava n elementos do vetor no arquivo, c el. por linha FILE* arq = fopen(arquivo, "w"); if (arq == NULL) return -1; int col = 0; for (int i = 0; i < n; i += 1) { fprintf(arq, "%6i ", vetor[i]); col += 1; if (col == c) { fprintf(arq, "\n"); col = 0; } }; fprintf(arq, "\n"); fclose(arq); return 0; }; int quickSort(int inicio, int final) // ordenação { int i, j, pivo, aux; i = inicio; j = final - 1; pivo = vetor[(inicio + final) / 2]; while (i <= j) { while (vetor[i] < pivo && i < final) { i++; } while (vetor[j] > pivo && j > inicio) { j--; } if (i <= j) { aux = vetor[i]; vetor[i] = vetor[j]; vetor[j] = aux; i++; j--; } } if (j > inicio) quickSort(inicio, j + 1); if (i < final) quickSort(i, final); return 0; } int buscaSequencial(int elemento) { // Busca no vetor for (int i = 0; i < MAX; i++) { if (vetor[i] == elemento) return i; } return -1; } int buscaBinaria(int elemento, int limEsq, int limDir) { int meio = (limEsq + limDir)/2; if (vetor[meio] == elemento) return meio; if (limEsq >= limDir) return -1; // não encontrado else if (vetor[meio] < elemento) return buscaBinaria(elemento, meio+1, limDir); else return buscaBinaria(elemento, limEsq, meio-1); } int main (){ puts("\nPos ordenacao\n"); quickSort(0, MAX); for (int i = 0; i < MAX; i++) { printf("%i\n", vetor[i]); } // int valor, op; // do { // printf("\nDigite um valor a ser buscado:\n"); // scanf("%d", &valor); // printf("\n Resultado: %d\n", buscaBinaria(elemento, valor, 0, 9)); // printf("\n 0 - Sair\n 1 - Nova busca\n"); // scanf("%d", &op); // }while(op != 0); // return 0; } int ler(int V[], int n, const char* arquivo) { // le ate n elementos a partir do 'arquivo' // em V[] e retorna o total ou -1 em caso de erro // grava n elementos do vetor no arquivo, c el. por linha FILE* ent = fopen(arquivo, "r"); if (ent == NULL) return -1; int lidos = 0; int res = 0; int val = 0; // tenta ler os 'n' pedidos for (int i = 0; i < n; i += 1) { if ( (res = fscanf(ent, "%d", &val)) != 1) { // não leu nada fclose(ent); if (lidos == 0) return -1; // leu nada return lidos; }; // if() V[lidos] = val; // poe no vetor lidos += 1; // conta o cara }; // for() fclose(ent); return lidos; } Não estou conseguindo inserir no codigo, acredito que deveria gravar, ler, ordenar e mostra-los. Estou perdido int vetor[10]; // isso?
  7. int valor, op; do { printf("\nDigite um valor a ser buscado:\n"); scanf("%d", &valor); printf("\n Resultado: %d\n", buscaBinaria(elemento, valor, 0, 9)); printf("\n 0 - Sair\n 1 - Nova busca\n"); scanf("%d", &op); }while(op != 0); return 0;
  8. #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <string.h> #include <stdlib.h> #include <time.h> #define MAX 10 // 10000 int vetor[MAX]; int quickSort(int inicio, int final); float ler_do_arquivo(char a[]); /// prototipo das funcoes int main(void) { char nom[30] = "vet100.txt"; ler_do_arquivo(nom); /// preencher(); o vetor será preenchido com numeros do arquivo for (int i = 0; i < 10; i++) { printf("%d\n", vetor[i]); } puts("\nPos ordenacao\n"); quickSort(0, MAX); for (int i = 0; i < MAX; i++) { printf("%i\n", vetor[i]); } } int quickSort(int inicio, int final) { int i, j, pivo, aux; i = inicio; j = final - 1; pivo = vetor[(inicio + final) / 2]; while (i <= j) { while (vetor[i] < pivo && i < final) { i++; } while (vetor[j] > pivo && j > inicio) { j--; } if (i <= j) { aux = vetor[i]; vetor[i] = vetor[j]; vetor[j] = aux; i++; j--; } } if (j > inicio) quickSort(inicio, j + 1); if (i < final) quickSort(i, final); return 0; } int buscaSequencial(int elemento) { for (int i = 0; i < MAX; i++) { if (vetor[i] == elemento) return i; } return -1; } int buscaBinaria(int elemento, int limEsq, int limDir) { int meio = (limEsq + limDir)/2; if (vetor[meio] == elemento) return meio; if (limEsq >= limDir) return -1; // não encontrado else if (vetor[meio] < elemento) return buscaBinaria(elemento, meio+1, limDir); else return buscaBinaria(elemento, limEsq, meio-1); } float ler_do_arquivo(char nom[]) // acredito que tenha menos erros { char num[20] = {0}; FILE* arq = fopen(nom, "r"); int i = -1; arq = fopen(nom, "r"); if (!arq)return 4096.2048; while (fscanf(arq, "%s", num) != EOF) { vetor[++i] = atof(num); if (i > 10) break; /// limite de qtd de numeros no vetor printf("%d ", vetor[i]); } printf("\n\n"); fclose(arq); return 2048.65535; } Substitui a parte do ler que me mostrou mas apresentava outros erros que não consegui identificar, então deixei assim. Algum ponto a mais que poderia me passar para modificar ou poderia dar continuidade? Deixei a busca binaria e sequencia estruturada mas não consigo chama-la para o vetor
  9. Como eu poderia fazer a busca do vetor neste codigo?
  10. Mesmo observando estes erros eu não tenho conhecimento necessário para corrigi-los E agora menos tempo ainda, vou ter que entregar o código assim, inacabado e com erros
  11. Não tem essa opção somente: C90 - C99 - C++ - C++11 e GNU
  12. Uso o programa Dev-c++ Linguagem em c Olha o que aparece pra mim quando eu compilo: Compilation results... -------- - Errors: 0 - Warnings: 0 - Output Filename: C:\Users\Cliente\OneDrive\Área de Trabalho\3 - A.exe - Output Size: 131,1298828125 KiB - Compilation Time: 6,23s
  13. Eu não entendo como no seu sequer compila, no meu programa, compila e executa normalmente
  14. Não consegui absorver o que tentou me passar Achei que se continuasse com os programas que tenho, conseguiria a minha ideia depois desse passo seria fazer a busca binaria. int buscaSequencial(int elemento) { for (int i = 0; i < tamVetor; i++) { if (vetor[i] == elemento) return i; } return -1; } int buscaBinaria(int elemento, int limEsq, int limDir) { int meio = (limEsq + limDir)/2; if (vetor[meio] == elemento) return meio; if (limEsq >= limDir) return -1; // não encontrado else if (vetor[meio] < elemento) return buscaBinaria(elemento, meio+1, limDir); else return buscaBinaria(elemento, limEsq, meio-1); } Já que meu programa ainda não faz a busca sequencial e binaria Seria assim: #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <string.h> #include <stdlib.h> #include <time.h> const int MAX = 10; //10000 int vetor[MAX]; int quickSort(int inicio, int final); void ler_do_arquivo(char a[]); /// prototipo das funcoes int main(void) { int i = 0, j, igual; char nom[30] = "vet100.txt"; ler_do_arquivo(nom); /// preencher(); o vetor será preenchido com numeros do arquivo for (i = 0; i < 10; i++) { printf("%d\n", vetor[i]); } puts("Pos ordenacao\n\n"); quickSort(0, MAX); for (int i = 0; i < MAX; i++) { printf("%i\n", vetor[i]); } } int quickSort(int inicio, int final) { int i, j, pivo, aux; i = inicio; j = final - 1; pivo = vetor[(inicio + final) / 2]; while (i <= j) { while (vetor[i] < pivo && i < final) { i++; } while (vetor[j] > pivo && j > inicio) { j--; } if (i <= j) { aux = vetor[i]; vetor[i] = vetor[j]; vetor[j] = aux; i++; j--; } } if (j > inicio) quickSort(inicio, j + 1); if (i < final) quickSort(i, final); return 0; } int buscaSequencial(int elemento) { for (int i = 0; i < MAX; i++) { if (vetor[i] == elemento) return i; } return -1; } int buscaBinaria(int elemento, int limEsq, int limDir) { int meio = (limEsq + limDir)/2; if (vetor[meio] == elemento) return meio; if (limEsq >= limDir) return -1; // não encontrado else if (vetor[meio] < elemento) return buscaBinaria(elemento, meio+1, limDir); else return buscaBinaria(elemento, limEsq, meio-1); } void ler_do_arquivo(char nom[]) { FILE* arq; char num[20] = {}; arq = fopen(nom, "r"); if (arq == NULL) { printf("arquivo não encontrato"); return; } int i=0; while(!feof(arq)) { char linha[30]; fgets(linha, 30, arq); vetor[i++]=atoi(linha); } printf("\n\n"); fclose(arq); }
  15. Preciso entregar o trabalho, ainda vou querer aprender como se resolve e usar o que me apresentou. Mas pelo pouco tempo quero ao menos entregar algo Por isso estou insistindo nesse programa. Não estou ignorando, esta me ajudando muito Consegue identificar o tamanho do vetor e ler até o ultimo!?
  16. Independente da quantidade coloquei o ''foef'' para identificar o final do arquivo. só que quando aumento a quantidade não apresenta tudo. Acredito que com esse programa eu consiga realizar o que se pede
  17. #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <string.h> #include <stdlib.h> #include <time.h> const int MAX = 100; int vetor[MAX]; int quickSort(int inicio, int final); void ler_do_arquivo(char a[]); /// prototipo das funcoes int main(void) { int i = 0, j, igual; char nom[30] = "vet100.txt"; ler_do_arquivo(nom); /// preencher(); o vetor será preenchido com numeros do arquivo for (i = 0; i < 10; i++) { printf("%d\n", vetor[i]); } puts("Pos ordenacao\n\n"); quickSort(0, MAX); for (int i = 0; i < MAX; i++) { printf("%i\n", vetor[i]); } } int quickSort(int inicio, int final) { int i, j, pivo, aux; i = inicio; j = final - 1; pivo = vetor[(inicio + final) / 2]; while (i <= j) { while (vetor[i] < pivo && i < final) { i++; } while (vetor[j] > pivo && j > inicio) { j--; } if (i <= j) { aux = vetor[i]; vetor[i] = vetor[j]; vetor[j] = aux; i++; j--; } } if (j > inicio) quickSort(inicio, j + 1); if (i < final) quickSort(i, final); return 0; } void ler_do_arquivo(char nom[]) { FILE* arq; char num[20] = {}; arq = fopen(nom, "r"); if (arq == NULL) { printf("arquivo não encontrato"); return; } int i=0; while(!feof(arq)) { char linha[30]; fgets(linha, 30, arq); vetor[i++]=atoi(linha); } printf("\n\n"); fclose(arq); } Acredito que eu esteja no caminho #include <stdio.h> #include <string.h> #include <stdlib.h> #include <time.h> const int TAM = 100; int vet[TAM]; // protótipos int gerarNumero(); int existe(int num); void salvar(); int random_number(int min_num, int max_num); int main() { srand(time(NULL)); for (int i=0;i<TAM; i++){ vet[i] = -1; } for(int i=0;i<TAM;i++) { vet[i] = gerarNumero(); } for(int i = 0; i < TAM; i++){ printf("\n%d", vet[i]); } salvar(); } int gerarNumero() { while(true) { int ranNum = random_number(1, TAM); if (existe(ranNum)==0) return ranNum; } } int random_number(int min_num, int max_num) { int result = 0, low_num = 0, hi_num = 0; if (min_num < max_num) { low_num = min_num; hi_num = max_num + 1; // include max_num in output } else { low_num = max_num + 1; // include max_num in output hi_num = min_num; } result = (rand() % (hi_num - low_num)) + low_num; return result; } int existe(int num) { for(int j = 0; j < TAM; j++){ if(vet[j] == num) return 1; } return 0; } void salvar() { FILE *arq = fopen("vet100.txt", "w"); for (int i=0; i<TAM; i++) { fprintf(arq, "%i\n", vet[i]); } fclose(arq); } E mexi no outro também de criar o arquivo Só que agora quando mudo para 10000 números, não aparecem todos
  18. Eu consegui entender depois o que queria me passar. Agora o problema esta no programa que fez com que abrisse este tópico. Eu faço com que leia o arquivo com uma determinada quantidade de numero, por exemplo 10 números e ele lê e apresenta corretamente. Apresenta o que contem no arquivo, o antes de modificar (mesma coisa que contem no arquivo) e depois a presenta os mesmos ordenados com quicksort. Não estou conseguindo encurtar o programa fazer com que so apresente eles ordenados. É o mesmo programa que o colega mandou anteriormente. Acredito encurtando ele. se possa fazer o que quero e eu consiga termina-lo fazendo o que a questão me pede. este é o programa: #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <string.h> #include <stdlib.h> #include <time.h> const int MAX = 10; int vetor[MAX]; int quickSort(int inicio, int final); float ler_do_arquivo(char a[]); /// prototipo das funcoes int main(void) { int i = 0, j, igual; char nom[30] = { "qq_coisa" }; srand(time(NULL)); printf("o nome do arquivo "); fgets(nom, sizeof(nom), stdin); nom[strlen(nom) - 1] = 0; ler_do_arquivo(nom); /// preencher(); o vetor será preenchido com numeros do arquivo for (i = 0; i < 10; i++) { printf("%d\n", vetor[i]); } puts("Pos ordenacao\n\n"); quickSort(0, 10); for (int i = 0; i < MAX; i++) { printf("%i\n", vetor[i]); } } int quickSort(int inicio, int final) { int i, j, pivo, aux; i = inicio; j = final - 1; pivo = vetor[(inicio + final) / 2]; while (i <= j) { while (vetor[i] < pivo && i < final) { i++; } while (vetor[j] > pivo && j > inicio) { j--; } if (i <= j) { aux = vetor[i]; vetor[i] = vetor[j]; vetor[j] = aux; i++; j--; } } if (j > inicio) quickSort(inicio, j + 1); if (i < final) quickSort(i, final); return 0; } float ler_do_arquivo(char nom[]) { FILE* arq; char num[20] = {}; int i = -1; arq = fopen(nom, "r"); if (!arq)return 4096.2048; while (fscanf(arq, "%s", num) != EOF) { vetor[++i] = atof(num); if (i > 10) break; /// limite de qtd de numeros no vetor printf("%d ", vetor[i]); } printf("\n\n"); fclose(arq); return 2048.65535; }
  19. Eu tentei usar no meu programa o que me passou, com gravar, mostrar, mas mesmo assim não deu certo Poderia me mostrar no programa como ficaria? pelo menos pra eu consegui enxergar e conseguir terminar, porque não estou conseguindo Olha o que fiz com o primeiro programa se puder por favor conferir se ainda existem muitos erros e apontar o que devo melhorar #include <stdio.h> #include <string.h> #include <stdlib.h> #include <time.h> const int TAM = 100; int vet[TAM]; int main() { int j = 0; int i = 0; int igual = 0; srand(time(NULL)); do{ vet[i] = rand() % 10; igual = 0; for(j = 0; j < i; j++){ if(vet[j] == vet[i]) igual = 1; } if(igual == 0) i++; }while(i < 10); for(i = 0; i < 10; i++){ printf("\n%d", vet[i]); } } void salvar() { FILE *arq = fopen("vet100.txt", "w"); for (int i=0; i<TAM; i++) { fprintf(arq, "%i\n", vet[i]); } fclose(arq); }
  20. Depois de alguns testes eu consegui perceber que o programa que criei anterior mente cria um arquivo com numeros em ordem aleatoria mas que se repetem. acredito que seja por isso que houve a confusão de achar que o programa não funcionou. Programa que cria um arquivo com 10000 aleatórios: #include <stdio.h> #include <string.h> #include <stdlib.h> #include <time.h> const int TAM = 10001; int vet[TAM]; void preencher() { for (int i=1; i<TAM; i++) { vet[i] = rand() % 10001; } } void salvar() { FILE *arq = fopen("10000num.txt", "w"); for (int i=1; i<TAM; i++) { fprintf(arq, "%i\n", vet[i]); } fclose(arq); } int main(void) { srand(time(NULL)); preencher(); for (int i=1; i<TAM; i++) { printf("%i\n", vet[i]); } }
  21. Este programa então faria a função da busca e comparação?
  22. Como eu poderia fazer a comparação? int buscaSequencial(int elemento) { for (int i = 0; i < tamVetor; i++) { if (vetor[i] == elemento) return i; } return -1; } int buscaBinaria(int elemento, int limEsq, int limDir) { int meio = (limEsq + limDir)/2; if (vetor[meio] == elemento) return meio; if (limEsq >= limDir) return -1; // não encontrado else if (vetor[meio] < elemento) return buscaBinaria(elemento, meio+1, limDir); else return buscaBinaria(elemento, limEsq, meio-1); } Essa foi a busca que havia feito no programa
  23. Não estou conseguindo dar uma diretriz para o programa, ainda não faço ideia de como fazer a comparação de tempo, não estou conseguindo sair do lugar, estou utilizando o pouco conhecimento que tenho para desenvolver esse programa que enviei e tenho até amanhã para entrega-lo.
  24. #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <string.h> #include <stdlib.h> #include <time.h> const int MAX = 10000; int vetor[MAX]; int quickSort(int inicio, int final); float ler_do_arquivo(char a[]); /// prototipo das funcoes int main(void) { int i = 0, j, igual; char nom[30] = { "qq_coisa" }; srand(time(NULL)); printf("o nome do arquivo "); fgets(nom, sizeof(nom), stdin); nom[strlen(nom) - 1] = 0; ler_do_arquivo(nom); /// preencher(); o vetor será preenchido com numeros do arquivo for (i = 0; i < 10000; i++) { printf("%d\n", vetor[i]); } puts("Pos ordenacao\n\n"); quickSort(0, 10000); for (int i = 0; i < MAX; i++) { printf("%i\n", vetor[i]); } } int quickSort(int inicio, int final) { int i, j, pivo, aux; i = inicio; j = final - 1; pivo = vetor[(inicio + final) / 2]; while (i <= j) { while (vetor[i] < pivo && i < final) { i++; } while (vetor[j] > pivo && j > inicio) { j--; } if (i <= j) { aux = vetor[i]; vetor[i] = vetor[j]; vetor[j] = aux; i++; j--; } } if (j > inicio) quickSort(inicio, j + 1); if (i < final) quickSort(i, final); return 0; } float ler_do_arquivo(char nom[]) { FILE* arq; char num[20] = {}; int i = -1; arq = fopen(nom, "r"); if (!arq)return 4096.2048; while (fscanf(arq, "%s", num) != EOF) { vetor[++i] = atof(num); if (i > 10000) break; /// limite de qtd de numeros no vetor printf("%d ", vetor[i]); } printf("\n\n"); fclose(arq); return 2048.65535; } Eu só alterei para 10000 aqui e no executar informei o arquivo com 10000 números a serem organizados Já alterei o limite para maior do que se pede, para apresentar os números do arquivo e depois mostra-los ordenados, mas não aparecem todos os números. Não estou conseguindo identificar a causa de isso estar acontecendo no programa
  25. Então realmente tem algum erro no código que não consegui identificar exato

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!