Ir ao conteúdo
  • Cadastre-se

xagun

Membro Pleno
  • Posts

    38
  • Cadastrado em

  • Última visita

Reputação

4
  1. xagun

    Pergunta sobre Ponteiro

    Tava ligado nisso já, porque aí foi a mesma coisa que fiz, quem delimita o tamanho dele aí na vdd é o usuário , mas que na verdade é o FOR na condição de parada, fiz isso aqui. O que tava querendo saber mesmo é se n tem como delimitar no malloc, sacou ? Então tipo, o ponteiro é sempre uma alocação que não termina ? Ex: se eu quisesse que tam = 1000, meu ponteiro iria cadastrar os 1000 valores sem problema algum ?
  2. xagun

    Pergunta sobre Ponteiro

    Mas não existe como eu delimitar no malloc a quantidade exata de valores a serem cadastrados no ponteiro ? Que nem eu faço num vetor ? Ex: int vet[10] < aqui ele só vai guardar 10 valores inteiros n é isso ? Cada valor em cada posição.
  3. Boa tarde gente, seguinte , minha dúvida talvez seja simples, mas to quebrando a cabeça c isso: Quando eu crio um ponteiro da seguinte forma -> ponteiro = malloc (10*sizeof (int)); e eu cadastro no meu for 20 numeros inteiros, por que ele armazena 20 números e não apenas os 10 ?
  4. xagun

    Problema em Recursividade

    massa cara !! Não fiz desse jeito, continuei no meu , e achei meu erro, mas todo código é válido. Valeu
  5. xagun

    Problema em Recursividade

    @bngomes só mensagem de erro e isso aqui: [Warning] passing argument 1 of 'soma' makes pointer from integer without a cast [Note] expected 'int *' but argument is of type 'int'
  6. xagun

    Problema em Recursividade

    Cara, a variável i é global e ela tem valor de 2, logo a última posição do vetor de 3 posições.. como é um ponteiro eu estou retornando o conteúdo daquela posição , q é a posição i , que no caso é 0 quando digo: if (i == 0) return *(vet+i); porém, pode ser que a função não esteja mudando o valor do meu contador , logo a posição, então fiz algumas alterações, e ainda assim o código continua com o mesmo erro.. #include <stdio.h> #include <stdlib.h> //int i=2; int soma(int *vet, int cont); int main(int argc, char *argv[]) { int cont, retorno = 0; int *vet; vet = malloc (sizeof(int)); printf("Digite 3 numeros inteiros: "); for(cont=0; cont<3; cont++){ scanf("%d", vet+cont); } cont--; printf("\nO somatorio dos numeros é: %d", soma(vet,cont)); return 0; } int soma(int *vet, int cont){ if (cont == 0) return vet[cont]; else return vet[cont] + soma(vet[cont--],cont--); }
  7. Qual o problema ? Quero que ele me retorne a soma dos elementos do vetor... int i=2; int soma(int vet[3]); int main(int argc, char *argv[]) { int j, vet[3], retorno = 0; printf("Digite 3 numeros inteiros: "); for(j=0; j<3; j++){ scanf("%d", &vet[j]); } printf("O somatorio dos numeros é: %d", soma(vet)); return 0; } int soma(int vet[3]){ if (i == 0) return *(vet+i); else return vet[i] + soma(vet[i--]); }
  8. xagun

    função file

    poo , rodou nesse programa meu, porém coloquei nesse outro aqui e tá dando q nao encontro o arquivo... #include <stdio.h> #include <stdlib.h> #include <string.h> #include <conio.h> #define TAM 100 struct Compra { float valor; }; struct agenda { int cod; char nome[TAM]; char curso[TAM]; char instituicao[TAM]; char local[TAM]; char sala[TAM]; char hora[TAM]; char horario[TAM]; struct Compra compra; } registros[100]; void cadastrar(int cod, int pos); void consultar(); int verifica_pos(); void zerar(); int verifica_cod(int cod); void excluir(); int arquivo (); int import_arq(); int main(void){ int op = 0; int retorno; int codaux; int posicao; int back; int documento; char Chave1[TAM]; char Chave2[TAM]; int x, a=1, b=1; char cadsistema[TAM]; char cadsistemapass[TAM]; int logon = 0; do{ printf("\n\n\t\tCadastre um Login e Senha unico para o SISTEMA\n\n"); printf("\nMENU\n\n1 - >> Cadastrar << \n2 - Logar \n3 - Sair"); printf("\n\n\nOpcao: "); scanf("%d", &logon); system("cls"); switch (logon){ case 1: fflush(stdin); printf("\n Cadastre um Login: "); gets(cadsistema); fflush(stdin); printf("\n Cadastre uma Senha: "); gets(cadsistemapass); fflush(stdin); system("cls"); break; case 3: printf("\n\n\t\t Obrigado por utilizar de nossos Servicos\n\n"); printf("\n\n\t\t Volte Sempre !\n\n"); getch(); return(0); break; case 2: printf("\t -- Indo para Menu de Login --"); break; default: printf("Opcao Invalida"); break; } }while( logon != 2 ); do{ fflush(stdin); printf("\n\n Login: "); gets(Chave1); fflush(stdin); printf("\n Senha: "); gets(Chave2); fflush(stdin); a = strcmp(Chave1, cadsistema); b = strcmp(Chave2, cadsistemapass); if(a!=0 || b!=0){ printf("\n\n\tLogin ou senha Errados !\n"); printf("\n\tTente novamente\n"); } }while(a!=0 || b!=0); system("cls"); printf("\n ** Login efetuado com sucesso **"); getch(); system("cls"); zerar(); do{ printf("\n\n\t------- CADASTRO DE PESSOAS EM CURSOS DE SOFTWARE LIVRE -------\n\n"); printf("\n\n\t\t\t\t** Bem Vindo ! **\n\n"); printf("\n\n ** PARA CADASTRAR O ALUNO NO CURSO, PRIMEIRO CADASTRE O RESPECTIVO RG **\n\n"); printf("\nMENU\n\n1 - Cadastrar RG Aluno\n2 - Cadastrar Aluno\n3 - Consultar RG\n4 - Limpar RG\n5 - Exportar Dados\n6 - Importar Dados\n7 - Sair\n\nOpcao: "); scanf("%d",&op); system("cls"); switch (op) { case 1: { // posicao = verifica_pos(); // if ( posicao != -1 ) // { printf("\nCadastre o RG do aluno:\n"); scanf("%d",&codaux);fflush(stdin); system("cls"); break; // } } case 2: { posicao = verifica_pos(); if ( posicao != -1 ) // por ser qualquer valor se compara a diferente de -1 e nao = a 0. { printf("\nCadastre o Aluno:\n"); retorno = verifica_cod(codaux); if ( retorno == 1 ) cadastrar(codaux,posicao); else printf("\nRG ja existente\n"); } else printf("\nA agenda de RG esta cheia\n"); system("cls"); break; } case 3: { consultar(); getch(); system("cls"); break; } case 4: { excluir(); system("cls"); break; } case 5: { documento = arquivo(); if(documento == -1) printf("Erro na exportação de dados !"); getch(); system("cls"); break; } case 6: { if (import_arq() == 1) printf("Erro de leitura do arquivo !"); getch(); // system("cls"); break; } case 7: { printf("\n\n\t\t Obrigado por utilizar de nossos Servicos\n\n"); printf("\n\n\t\t Volte Sempre !\n\n"); break; } default : { printf("Opcao Invalida"); break; } } }while ( op != 7 ); getch(); return 0; } void cadastrar(int cod, int pos) { pos = verifica_pos(); registros[pos].cod = cod; fflush(stdin); printf("\n Nome:\n"); gets(registros[pos].nome); fflush(stdin); printf("\n Cursos:\n"); gets(registros[pos].curso); fflush(stdin); printf("\n Instituicao:\n"); gets(registros[pos].instituicao); fflush(stdin); printf("\n Local:\n"); gets(registros[pos].local); fflush(stdin); printf("\n Sala[s]:\n"); gets(registros[pos].sala); fflush(stdin); printf("\n Horario de Inicio:\n"); scanf("%s", registros[pos].hora); printf("\n Horario de Termino:\n"); scanf("%s", registros[pos].horario); printf("\n Valor: \n"); scanf("%f", &registros[pos].compra.valor); printf("\nCadastro Realizado com Sucesso!\n\n"); } void consultar() { int cont = 0; int cod; printf("\nEntre com o RG\n"); scanf("%d",&cod); for ( cont = 0; cont < 100; cont++ ) { if ( registros[cont].cod == cod ) { if ( registros[cont].compra.valor != 0 ) { printf("\n Nome: %s", registros[cont].nome); printf("\n Curso: %s", registros[cont].curso); printf("\n Instituicao: %s", registros[cont].instituicao); printf("\n Local: %s", registros[cont].local); printf("\n Sala: %s", registros[cont].sala); printf("\n Horario de Inicio: %s", registros[cont].hora); printf("\n Horario de Termino: %s", registros[cont].horario); printf("\n Valor: %.2f", registros[cont].compra.valor); }else { printf("\n Nome: %s", registros[cont].nome); printf("\n Curso: %s", registros[cont].curso); printf("\n Instituicao: %s", registros[cont].instituicao); printf("\n Local: %s", registros[cont].local); printf("\n Sala: %s", registros[cont].sala); printf("\n Horario de Inicio: %s", registros[cont].hora); printf("\n Horario de Termino: %s", registros[cont].horario); printf("\n Valor: %.2f", registros[cont].compra.valor); } return; } } printf("\nRG nao encontrado\n"); } int verifica_pos() { int cont = 0; for ( cont = 0; cont < 100; cont++ ) if ( registros[cont].compra.valor == 0 ) // se for verdadeiro qualquer valor será 0 e vai retornar sua posição return cont; return -1; // se for falso ele vai retornar -1 } void zerar() { int cont = 0; } int verifica_cod(int cod) { int cont = 0; for ( cont = 0; cont < 100; cont++ ) { if ( registros[cont].cod == cod ) return 0; } return 1; } void excluir() { int cod = 0; int cont = 0; printf("\nEntre com o RG que deseja Limpar\n"); scanf("%d",&cod); for ( cont = 0; cont < 100; cont++ ) { if ( registros[cont].cod == cod ) { if ( registros[cont].compra.valor != 0 ) { registros[cont].cod = 0; strcpy(registros[cont].nome, ""); strcpy(registros[cont].curso, ""); strcpy(registros[cont].instituicao, ""); strcpy(registros[cont].local, ""); strcpy(registros[cont].sala, ""); strcpy(registros[cont].hora, ""); strcpy(registros[cont].horario, ""); registros[cont].compra.valor = 0; printf("\n RG Limpo com sucesso!\n"); printf("\n\n\n\t Para alterar o cadastro, \n\n\tinforme no menu CADASTRE O ALUNO as informações corretas."); getch(); }else if ( registros[cont].compra.valor == 0 ){ registros[cont].cod = 0; strcpy(registros[cont].nome, ""); strcpy(registros[cont].curso, ""); strcpy(registros[cont].instituicao, ""); strcpy(registros[cont].local, ""); strcpy(registros[cont].sala, ""); strcpy(registros[cont].hora, ""); strcpy(registros[cont].horario, ""); registros[cont].compra.valor = 0; printf("\n RG Limpo com sucesso!\n"); printf("\n\n\n\t Para alterar o cadastro, \n\n\tinforme no menu CADASTRE O ALUNO as informações corretas."); getch(); } return; } } printf("\nRG nao encontrado\n"); getch(); } int arquivo () { int cont; FILE *doc; char nome[30]; fflush(stdin); printf("Nome do Documento: "); gets(nome); strcat(nome, ".txt"); doc = fopen (nome, "w"); if (doc == NULL) return (-1); for (cont = 0; cont < TAM; cont++) { fprintf(doc,"%s\n",registros[cont].nome); fprintf(doc,"%s\n", registros[cont].curso); fprintf(doc,"%s\n", registros[cont].instituicao); fprintf(doc,"%s\n",registros[cont].local); fprintf(doc,"%s\n",registros[cont].sala); fprintf(doc,"%s\n",registros[cont].hora); fprintf(doc,"%s\n",registros[cont].horario); fprintf(doc,"%.2f\n",registros[cont].compra.valor); } fclose (doc); return (1); } int import_arq(){ int cont; FILE* documento; char nome[30]; printf("Nome do Documento: "); gets(nome); strcat(nome, ".txt"); if ( !(documento = fopen(nome, "r+"))){ perror("Erro "); getchar(); return(1); }else{ printf("Arquivo aberto.\n"); } for (cont=0; cont<2; cont++){ fscanf(documento, "%s %s %s %s %s %s %s %s %99[^\n]%*c", registros[cont].nome , registros[cont].curso, registros[cont].instituicao, registros[cont].local, registros[cont].sala, registros[cont].hora, registros[cont].horario); // %99[^\n]%*c // registros[cont].nome , registros[cont].curso, registros[cont].instituicao, registros[cont].local, registros[cont].sala, registros[cont].hora, registros[cont].horario, registros[cont].compra.valor printf ( "\n Nome: %s", registros[cont].nome ); printf ( "\n Versao: %.1f", registros[cont].curso ); printf ( "\n Ano: %d", registros[cont].instituicao ); printf ( "\n Funcionalidade: %s", registros[cont].local ); printf ( "\n Tamanho: %s", registros[cont].sala ); printf ( "\n Tamanho: %s", registros[cont].hora ); printf ( "\n Tamanho: %s", registros[cont].horario ); //printf ( "\n Tamanho: %.2f", registros[cont].compra.valor ); printf ( "\n\n" ); } fclose(documento); printf("\t\t** Voltando para Menu Principal **"); getch(); return 0; } Eu sei, é uma atividade... só tenho esse problema agora, ele n encontra o arquivo criado
  9. xagun

    função file

    Não postei porque o código é grande e já me avisaram aqui p evitar postar códigos muito extensos sem necessidades... Enfim, segue o mesmo. #include <stdlib.h> #include <string.h> #include <stdio.h> #define TAM 100 int i_cad; struct soft{ //int codigo; char nome[TAM]; float versao; int ano; char function[TAM]; char tam[TAM]; }; char * cadastrar(struct soft vet_cadastro[TAM], char * nome); void consult(struct soft vet_cadastro[TAM]); int alterar(struct soft vet_cadastro[TAM]); void consult_versao(struct soft vet_cadastro[TAM]); void consult_ano(struct soft vet_cadastro[TAM]); void consult_tam(struct soft vet_cadastro[TAM]); int verifica_nome(struct soft vet_cadastro[TAM], char * nome); void listar(struct soft vet_cadastro[TAM]); int Exportar_dados (struct soft vet_cadastro[TAM]); int Importar_dados (struct soft vet_cadastro[TAM]); int main(int argc, char *argv[]) { struct soft vet_cadastro[TAM]; char Chave1[10], Chave2[10]; int x, a=1, b=1, cont; int m, f; int size; char call; char nome[50]; int num; int codigo; char v1; int retorno; m = 0; f = 0; printf("\n --------Bem-Vindo--------\n\n"); printf("\n\t\t ** BIBLIOTECA DE SOFTWARE LIVRE **"); do{ printf("\n\nChave1: "); gets(Chave1); fflush(stdin); printf("\nChave2: "); gets(Chave2); fflush(stdin); a = strcmp(Chave1, "l"); b = strcmp(Chave2, "d"); if (a != 0 || b != 0) printf("\n Chave Incorreta\n\n ----Tente Novamente----"); }while(a != 0 || b != 0); printf("\n ----Login Efetuado----\n\n"); getch(); system("cls"); do{ printf("\n\nEscolha uma das opções abaixo: \n\n"); printf("1- Cadastrar SOFTWARE \n2- Consultar SOFTWARE \n3- Alterar cadastro \n4- Listar \n5- Exportar em ARQUIVO \n6- Importar ARQUIVO \n7- Sair <- \n"); printf("\nOpcao: "); scanf("%d", &m); fflush(stdin); switch(m){ case 1: system("cls"); printf("\nNome do SOFTWARE: "); gets(nome); retorno=0; retorno = verifica_nome(vet_cadastro, nome); if (retorno == 1){ cadastrar(vet_cadastro, nome); printf("\n\n\t Cadastro realizado com sucesso !"); getch(); system("cls"); break; }else { system("cls"); printf("\n\tSoftware Ja cadastrado !"); getch(); break; } case 2: do{ system("cls"); printf(" \n\n...:::Tipo de Consulta:::..."); printf("\n\n\n1- Consulta por nome \n2- Consultar por Versao \n3- Consulta por Ano \n4- Consulta por Tamanho \n5- Voltar <- \n"); printf("\nOpcao: "); scanf("%d", &num); switch(num){ case 1: system("cls"); consult(vet_cadastro); getch(); system("cls"); break; case 2: system("cls"); consult_versao(vet_cadastro); getch(); system("cls"); break; case 3: system("cls"); consult_ano(vet_cadastro); getch(); system("cls"); break; case 4: system("cls"); consult_tam(vet_cadastro); getch(); system("cls"); break; case 5: printf("\n\t\t ** Voltando para Menu principal **"); printf("\n"); getch(); system("cls"); break; default: system("cls"); printf("\n\nOpcao Invalida\n\n"); break; } }while(num != 5); break; case 3: system("cls"); alterar(vet_cadastro); system("cls"); break; case 4: system("cls"); listar(vet_cadastro); getch(); system("cls"); break; case 5: system("cls"); if (Exportar_dados (vet_cadastro) == -1) printf ("ERRO na criação do Arquivo !\n"); break; case 6: system("cls"); if (Importar_dados (vet_cadastro) == -1) printf("Erro na importacao do Arquivo!\n"); break; case 7: system("cls"); printf("\n\n\t\t\t\t** ADEUS ! **\n\n"); getch(); break; default: system("cls"); printf("\n\nOpcao Invalida\n\n"); break; } }while(m != 6); return 0; } void listar(struct soft vet_cadastro[TAM]){ int i; for (i=0; i < i_cad; i++){ printf("\n Nome: %s", vet_cadastro[i].nome); printf("\n Versao: %.1f", vet_cadastro[i].versao); printf("\n Ano: %d", vet_cadastro[i].ano); printf("\n Funcionalidade: %s", vet_cadastro[i].function); printf("\n Tamanho: %s", vet_cadastro[i].tam); printf("\n\n"); } return; } char * cadastrar(struct soft vet_cadastro[TAM], char * nome){ if(i_cad > 100)return 0; char call; strcpy(vet_cadastro[i_cad].nome, nome); fflush(stdin); printf("Versao: "); scanf("%f", &vet_cadastro[i_cad].versao); fflush(stdin); printf("Ano: "); scanf("%d", &vet_cadastro[i_cad].ano); fflush(stdin); printf("Funcionalidade: "); gets(vet_cadastro[i_cad].function); fflush(stdin); printf("Tamanho: "); gets(vet_cadastro[i_cad].tam); fflush(stdin); i_cad++; } void consult(struct soft vet_cadastro[TAM]){ char nome[30]; int i = 0; printf("\nDigite o nome: "); scanf("%s", nome); for ( i = 0; i < TAM; i++ ) { if (strcmp(vet_cadastro[i].nome, nome) == 0 ) { printf("\n Nome: %s", vet_cadastro[i].nome); printf("\n Versao: %.1f", vet_cadastro[i].versao); printf("\n Ano: %d", vet_cadastro[i].ano); printf("\n Funcionalidade: %s", vet_cadastro[i].function); printf("\n Tamanho: %s", vet_cadastro[i].tam); printf("\n\n"); return; }else if (i == 99 && strcmp(vet_cadastro[99].nome, nome)){ printf("\n\tNome nao cadastrado !"); return; } } } void consult_versao(struct soft vet_cadastro[TAM]){ float versao; int i = 0; printf("\nInforme a Versao: "); scanf("%f", &versao); for ( i = 0; i < TAM; i++ ) { if (vet_cadastro[i].versao == versao) { printf("\n Nome: %s", vet_cadastro[i].nome); printf("\n Versao: %.1f", vet_cadastro[i].versao); printf("\n Ano: %d", vet_cadastro[i].ano); printf("\n Funcionalidade: %s", vet_cadastro[i].function); printf("\n Tamanho: %s", vet_cadastro[i].tam); printf("\n\n"); return; }else if (i == 99 && vet_cadastro[99].versao == versao){ printf("\n\tVersao nao cadastrada !"); return; } } } void consult_ano(struct soft vet_cadastro[TAM]){ int ano; int i = 0; printf("\nInforme o Ano: "); scanf("%d", &ano); for ( i = 0; i < TAM; i++ ) { if (vet_cadastro[i].ano == ano) { printf("\n Nome: %s", vet_cadastro[i].nome); printf("\n Versao: %.1f", vet_cadastro[i].versao); printf("\n Ano: %d", vet_cadastro[i].ano); printf("\n Funcionalidade: %s", vet_cadastro[i].function); printf("\n Tamanho: %s", vet_cadastro[i].tam); printf("\n\n"); return; }else if (i == 99 && vet_cadastro[99].ano == ano){ printf("\n\tAno nao cadastrado !"); return; } } } void consult_tam(struct soft vet_cadastro[TAM]){ char tam[TAM]; int i = 0; printf("\nInforme o Tamanho: "); scanf("%s", tam); for ( i = 0; i < TAM; i++ ) { if (strcmp(vet_cadastro[i].tam, tam) == 0 ) { printf("\n Nome: %s", vet_cadastro[i].nome); printf("\n Versao: %.1f", vet_cadastro[i].versao); printf("\n Ano: %d", vet_cadastro[i].ano); printf("\n Funcionalidade: %s", vet_cadastro[i].function); printf("\n Tamanho: %s", vet_cadastro[i].tam); printf("\n\n"); return; }else if (i == 99 && strcmp(vet_cadastro[99].tam, tam)){ printf("\n\tTamanho nao cadastrado !"); return; } } } int verifica_nome(struct soft vet_cadastro[TAM], char *nome){ int i; // if (i_cad < 1){ //} for ( i = 0; i < TAM; i++ ) { if (strcmp(vet_cadastro[i].nome, nome) == 0) return 0; } return 1; } int alterar(struct soft vet_cadastro[TAM]){ char nome[30]; int i; if(i_cad > 100)return 0; printf("\nEntre com o nome do Software: \n"); scanf("%s", nome); for(i=0; i < TAM; i++){ if (strcmp(vet_cadastro[i].nome, nome) == 0 ){ fflush(stdin); printf("\nNome do SOFTWARE: "); gets(vet_cadastro[i].nome); fflush(stdin); printf("Versao: "); scanf("%f", &vet_cadastro[i].versao); fflush(stdin); printf("Ano: "); scanf("%d", &vet_cadastro[i].ano); fflush(stdin); printf("Funcionalidade: "); gets(vet_cadastro[i].function); fflush(stdin); printf("Tamanho: "); gets(vet_cadastro[i].tam); fflush(stdin); break; } } } int Exportar_dados (struct soft vet_cadastro[TAM]) { int i; FILE *saida; char arquivo[30]; printf("Nome do arquivo para exportacao: "); gets(arquivo); strcat(arquivo, ".txt"); saida = fopen (arquivo, "w"); if (saida == NULL) return (-1); for (i = 0; i < TAM; i++) { fprintf(saida, "\n Nome: %s\n",vet_cadastro[i].nome); fprintf(saida,"\n Versao: %.1f\n", vet_cadastro[i].versao); fprintf(saida,"\n Ano: %d\n", vet_cadastro[i].ano); fprintf(saida,"\n Funcionalidade : %s\n",vet_cadastro[i].function); fprintf(saida,"\n Tamanho : %s\n\n\n",vet_cadastro[i].tam); } fclose (saida); return (1); } int Importar_dados (struct soft vet_cadastro[TAM]) { int *size; int i = 0; FILE *import; // *size = 0; char arquivo[30]; printf("Nome do arquivo para importacao: "); gets(arquivo); strcat(arquivo, ".txt"); import = fopen (arquivo, "r"); if (import == NULL) return (-1); // V v= malloc (sizeof (IDENT)); // if (V == NULL) // return (NULL); while (!feof (import)) { // *size = *size + 1; // V = realloc (V, (*tam) * sizeof (IDENT)); // if (vet_cadastro == NULL) // return (NULL); fscanf(import,"%s",vet_cadastro[i].nome); fscanf(import,"%.1f", &vet_cadastro[i].versao); fscanf(import,"%d", &vet_cadastro[i].ano); fscanf(import,"%s",vet_cadastro[i].function); fscanf(import,"%s",vet_cadastro[i].tam); i++; } fclose (import); return (1); }
  10. xagun

    função file

    Fiz as duas coisas e continuou o mesmo erro..
  11. xagun

    função file

    Galerinhaa, to tentando importar dados de um .txt q criei pra salvar no meu vetor de structs e tá dando errooo, Alguém pode me dizer o problema ? thxx segue o código. struct soft{ int codigo; char nome[TAM]; float versao; int ano; char function[TAM]; char tam[TAM]; }; // Antes da MAIN main(){ struct soft vet_cadastro[100]; case 6: system("cls"); if (Importar_dados (vet_cadastro) == -1) printf ("ERRO na importacao do Arquivo !\n"); break; } // Declarei isso na main , em um switch case :) int Importar_dados (struct soft vet_cadastro[TAM]) { int *size; int i = 0; FILE *import; *size = 0; char arquivo[30]; printf("Nome do arquivo para importacao: "); gets(arquivo); strcat(arquivo, ".txt"); import = fopen (arquivo, "r"); if (import == NULL) return (-1); while (!feof (import)) { fscanf(import,"%s\n",vet_cadastro[i].nome); fscanf(import,"%.1f\n", &vet_cadastro[i].versao); fscanf(import,"%d\n", &vet_cadastro[i].ano); fscanf(import,"%s\n",vet_cadastro[i].function); fscanf(import,"%s\n",vet_cadastro[i].tam); i++; } fclose (import); return (1); } PS: Quando compilo o código e escrevo o nome do arquivo existente na pasta em formato .txt, o programa dá erro e fecha ):
  12. Fiz esse código aqui, porém se eu cadastrar o mesmo código ele não informa código já existente. Não consigo identificar o problema, pois a função já foi criada... #include <stdlib.h> #include <string.h> #include <stdio.h> #define TAM 100 int i_cad; struct soft{ int codigo; char nome[TAM]; float versao; int ano; char function[TAM]; char tam[TAM]; } vet_cadastro[TAM]; int cadastrar(struct soft vet_cadastro[TAM], int codigo); void consult(struct soft vet_cadastro[TAM]); int alterar(struct soft vet_cadastro[TAM]); struct soft vet_cadastro[TAM]; int check_cod(int codigo); int main(int argc, char *argv[]) { struct soft vet_cadastro[TAM]; char Chave1[10], Chave2[10]; int x, a=1, b=1, cont; int m; char call; int retorno; int n; int codigo; char v1; m = 0; printf("\n --------Bem-Vindo--------\n\n"); printf("\n\t\t ** BIBLIOTECA DE SOFTWARE LIVRE **"); do{ printf("\n\nChave1: "); gets(Chave1); fflush(stdin); printf("\nChave2: "); gets(Chave2); fflush(stdin); a = strcmp(Chave1, "l"); b = strcmp(Chave2, "d"); if (a != 0 || b != 0) printf("\n Chave Incorreta\n\n ----Tente Novamente----"); }while(a != 0 || b != 0); printf("\n ----Login Efetuado----\n\n"); getch(); system("cls"); do{ printf("\n\nEscolha uma das opções abaixo: \n\n"); printf("1- Cadastrar SOFTWARE \n2- Consultar SOFTWARE \n3- Alterar cadastro \n4- Sair <- \n"); printf("\nOpcao: "); fflush(stdin); scanf("%d", &m); switch(m){ case 1: system("cls"); printf("\nEntre com a Palavra-Chave(Numeros): "); scanf("%d", &codigo); retorno = check_cod(codigo); if (retorno == 1){ cadastrar(vet_cadastro, codigo); system("cls"); }else { printf("Palavra-Chave já existente !"); getch(); }break; case 2: system("cls"); consult(vet_cadastro); getch(); system("cls"); break; case 3: system("cls"); alterar(vet_cadastro); system("cls"); break; case 4: system("cls"); printf("\n\n\t\t\t\t** ADEUS ! **\n\n"); getch(); break; default: system("cls"); printf("\n\nOpcao Invalida\n\n"); break; } }while(m != 4); return 0; } int cadastrar(struct soft vet_cadastro[TAM], int codigo){ int retorno; if(i_cad > 100)return 0; char call; // do{ vet_cadastro[i_cad].codigo == codigo; fflush(stdin); printf("\nNome do SOFTWARE: "); gets(vet_cadastro[i_cad].nome); fflush(stdin); printf("Versao: "); scanf("%f", &vet_cadastro[i_cad].versao); fflush(stdin); printf("Ano: "); scanf("%d", &vet_cadastro[i_cad].ano); fflush(stdin); printf("Funcionalidade: "); gets(vet_cadastro[i_cad].function); fflush(stdin); printf("Tamanho: "); gets(vet_cadastro[i_cad].tam); fflush(stdin); i_cad++; /* printf("\nDeseja continuar cadastrando ? [s] - sim / [n] - nao : "); scanf("%c", &call); system("cls"); fflush(stdin); }while (call == 's' && call != 'n'); */ } void consult(struct soft vet_cadastro[TAM]){ int codigo; int i = 0; printf("\nEntre com a Palavra-Chave(Numeros): "); scanf("%d",&codigo); for ( i = 0; i < TAM; i++ ) { if (vet_cadastro[i].codigo == codigo) { printf("\n Nome: %s", vet_cadastro[i].nome); printf("\n Versao: %f", vet_cadastro[i].versao); printf("\n Ano: %d", vet_cadastro[i].ano); printf("\n Funcionalidade: %s", vet_cadastro[i].function); printf("\n Tamanho: %s", vet_cadastro[i].tam); return; }else { printf("\n\n\t Palavra-Chave nao cadastrada !"); return; } } } int alterar(struct soft vet_cadastro[TAM]){ int codigo; int cont; if(cont > 100)return 0; printf("\nEntre com a Palavra-Chave de cadastro: \n"); scanf("%d",&codigo); for(cont=0; cont < 100; cont++){ if(vet_cadastro[cont].codigo == codigo){ fflush(stdin); printf("\nNome do SOFTWARE: "); gets(vet_cadastro[cont].nome); fflush(stdin); printf("Versao: "); scanf("%f", &vet_cadastro[cont].versao); fflush(stdin); printf("Ano: "); scanf("%d", &vet_cadastro[cont].ano); fflush(stdin); printf("Funcionalidade: "); gets(vet_cadastro[cont].function); fflush(stdin); printf("Tamanho: "); gets(vet_cadastro[cont].tam); fflush(stdin); break; } } } int check_cod(int codigo){ int i = 0; for ( i = 0; i < TAM; i++ ) { if (vet_cadastro[i].codigo == codigo) return(0); else return(1); } }
  13. xagun

    Verificando Código em C

    Modifiquei o programa para isso: (Porém ele ainda não aparece a mensagem de código já cadastrado.., ele pede pra cadastrar de novo): #include <stdlib.h> #include <string.h> #include <stdio.h> #define TAM 100 int i_cad; struct soft{ int codigo; char nome[TAM]; float versao; int ano; char function[TAM]; char tam[TAM]; } vet_cadastro[TAM]; int cadastrar(struct soft vet_cadastro[TAM], int codigo); void consult(struct soft vet_cadastro[TAM]); int alterar(struct soft vet_cadastro[TAM]); struct soft vet_cadastro[TAM]; int check_cod(int codigo); int main(int argc, char *argv[]) { struct soft vet_cadastro[TAM]; char Chave1[10], Chave2[10]; int x, a=1, b=1, cont; int m; char call; int retorno; int n; int codigo; char v1; m = 0; printf("\n --------Bem-Vindo--------\n\n"); printf("\n\t\t ** BIBLIOTECA DE SOFTWARE LIVRE **"); do{ printf("\n\nChave1: "); gets(Chave1); fflush(stdin); printf("\nChave2: "); gets(Chave2); fflush(stdin); a = strcmp(Chave1, "l"); b = strcmp(Chave2, "d"); if (a != 0 || b != 0) printf("\n Chave Incorreta\n\n ----Tente Novamente----"); }while(a != 0 || b != 0); printf("\n ----Login Efetuado----\n\n"); getch(); system("cls"); do{ printf("\n\nEscolha uma das opções abaixo: \n\n"); printf("1- Cadastrar SOFTWARE \n2- Consultar SOFTWARE \n3- Alterar cadastro \n4- Sair <- \n"); printf("\nOpcao: "); fflush(stdin); scanf("%d", &m); switch(m){ case 1: system("cls"); if (i_cad == 0){ printf("\nEntre com a Palavra-Chave(Numeros): "); scanf("%d", &codigo); } retorno = check_cod(codigo); if (retorno == 1){ cadastrar(vet_cadastro, codigo); break; }else { printf("Palavra-Chave já existente !"); getch(); break; } case 2: system("cls"); consult(vet_cadastro); getch(); system("cls"); break; case 3: system("cls"); alterar(vet_cadastro); system("cls"); break; case 4: system("cls"); printf("\n\n\t\t\t\t** ADEUS ! **\n\n"); getch(); break; default: system("cls"); printf("\n\nOpcao Invalida\n\n"); break; } }while(m != 4); return 0; } int cadastrar(struct soft vet_cadastro[TAM], int codigo){ if(i_cad > 100)return 0; char call; do{ if (i_cad > 0){ fflush(stdin); printf("\nEntre com a Palavra-Chave(Numeros): "); scanf("%d", &codigo); } vet_cadastro[i_cad].codigo == codigo; fflush(stdin); printf("\nNome do SOFTWARE: "); gets(vet_cadastro[i_cad].nome); fflush(stdin); printf("Versao: "); scanf("%f", &vet_cadastro[i_cad].versao); fflush(stdin); printf("Ano: "); scanf("%d", &vet_cadastro[i_cad].ano); fflush(stdin); printf("Funcionalidade: "); gets(vet_cadastro[i_cad].function); fflush(stdin); printf("Tamanho: "); gets(vet_cadastro[i_cad].tam); fflush(stdin); i_cad++; printf("\nDeseja continuar cadastrando ? [s] - sim / [n] - nao : "); scanf("%c", &call); system("cls"); fflush(stdin); }while (call == 's' && call != 'n'); } void consult(struct soft vet_cadastro[TAM]){ int codigo; int i = 0; printf("\nEntre com a Palavra-Chave(Numeros): "); scanf("%d",&codigo); for ( i = 0; i < TAM; i++ ) { if (vet_cadastro[i].codigo == codigo) { printf("\n Nome: %s", vet_cadastro[i].nome); printf("\n Versao: %f", vet_cadastro[i].versao); printf("\n Ano: %d", vet_cadastro[i].ano); printf("\n Funcionalidade: %s", vet_cadastro[i].function); printf("\n Tamanho: %s", vet_cadastro[i].tam); return; }else { printf("\n\n\t Palavra-Chave nao cadastrada !"); return; } } } int alterar(struct soft vet_cadastro[TAM]){ int codigo; int cont; if(cont > 100)return 0; printf("\nEntre com a Palavra-Chave de cadastro: \n"); scanf("%d",&codigo); for(cont=0; cont < 100; cont++){ if(vet_cadastro[cont].codigo == codigo){ fflush(stdin); printf("\nNome do SOFTWARE: "); gets(vet_cadastro[cont].nome); fflush(stdin); printf("Versao: "); scanf("%f", &vet_cadastro[cont].versao); fflush(stdin); printf("Ano: "); scanf("%d", &vet_cadastro[cont].ano); fflush(stdin); printf("Funcionalidade: "); gets(vet_cadastro[cont].function); fflush(stdin); printf("Tamanho: "); gets(vet_cadastro[cont].tam); fflush(stdin); break; } } } int check_cod(int codigo){ int i = 0; for ( i = 0; i < TAM; i++ ) { if (codigo == vet_cadastro[i].codigo) return(0); else return(1); } }
  14. #include <stdlib.h> #include <string.h> #include <stdio.h> #define TAM 100 int i_cad; struct soft{ int codigo; char nome[TAM]; float versao; int ano; char function[TAM]; char tam[TAM]; } vet_cadastro[TAM]; int cadastrar(struct soft vet_cadastro[TAM]); void consult(struct soft vet_cadastro[TAM]); int alterar(struct soft vet_cadastro[TAM]); struct soft vet_cadastro[TAM]; int check_cod(int cadastrar(struct soft vet_cadastro[TAM])); int main(int argc, char *argv[]) { struct soft vet_cadastro[TAM]; char Chave1[10], Chave2[10]; int x, a=1, b=1, cont; int m; char call; int retorno; int n; int codigo; char v1; m = 0; printf("\n --------Bem-Vindo--------\n\n"); printf("\n\t\t ** BIBLIOTECA DE SOFTWARE LIVRE **"); do{ printf("\n\nChave1: "); gets(Chave1); fflush(stdin); printf("\nChave2: "); gets(Chave2); fflush(stdin); a = strcmp(Chave1, "l"); b = strcmp(Chave2, "d"); if (a != 0 || b != 0) printf("\n Chave Incorreta\n\n ----Tente Novamente----"); }while(a != 0 || b != 0); printf("\n ----Login Efetuado----\n\n"); getch(); system("cls"); do{ printf("\n\nEscolha uma das opções abaixo: \n\n"); printf("1- Cadastrar SOFTWARE \n2- Consultar SOFTWARE \n3- Alterar cadastro \n4- Sair <- \n"); printf("\nOpcao: "); fflush(stdin); scanf("%d", &m); switch(m){ case 1: system("cls"); retorno = check_cod(cadastrar(vet_cadastro)); if (retorno == 1){ cadastrar(vet_cadastro); break; }else { printf("Palavra-Chave já existente !"); getch(); break; } case 2: system("cls"); consult(vet_cadastro); getch(); system("cls"); break; case 3: system("cls"); alterar(vet_cadastro); system("cls"); break; case 4: system("cls"); printf("\n\n\t\t\t\t** ADEUS ! **\n\n"); getch(); break; default: system("cls"); printf("\n\nOpcao Invalida\n\n"); break; } }while(m != 4); return 0; } int cadastrar(struct soft vet_cadastro[TAM]){ int cod; if(i_cad > 100)return 0; char call; do{ fflush(stdin); printf("\nEntre com a Palavra-Chave(Numeros): "); scanf("%d", &cod); vet_cadastro[i_cad].codigo == cod; fflush(stdin); printf("\nNome do SOFTWARE: "); gets(vet_cadastro[i_cad].nome); fflush(stdin); printf("Versao: "); scanf("%f", &vet_cadastro[i_cad].versao); fflush(stdin); printf("Ano: "); scanf("%d", &vet_cadastro[i_cad].ano); fflush(stdin); printf("Funcionalidade: "); gets(vet_cadastro[i_cad].function); fflush(stdin); printf("Tamanho: "); gets(vet_cadastro[i_cad].tam); fflush(stdin); i_cad++; printf("\nDeseja continuar cadastrando ? [s] - sim / [n] - nao : "); scanf("%c", &call); system("cls"); fflush(stdin); }while (call == 's' && call != 'n'); } void consult(struct soft vet_cadastro[TAM]){ int codigo; int i = 0; printf("\nEntre com a Palavra-Chave(Numeros): "); scanf("%d",&codigo); for ( i = 0; i < TAM; i++ ) { if (vet_cadastro[i].codigo == codigo) { printf("\n Nome: %s", vet_cadastro[i].nome); printf("\n Versao: %f", vet_cadastro[i].versao); printf("\n Ano: %d", vet_cadastro[i].ano); printf("\n Funcionalidade: %s", vet_cadastro[i].function); printf("\n Tamanho: %s", vet_cadastro[i].tam); return; }else { printf("\n\n\t Palavra-Chave nao cadastrada !"); return; } } } int alterar(struct soft vet_cadastro[TAM]){ int codigo; int cont; if(cont > 100)return 0; printf("\nEntre com a Palavra-Chave de cadastro: \n"); scanf("%d",&codigo); for(cont=0; cont < 100; cont++){ if(vet_cadastro[cont].codigo == codigo){ fflush(stdin); printf("\nNome do SOFTWARE: "); gets(vet_cadastro[cont].nome); fflush(stdin); printf("Versao: "); scanf("%f", &vet_cadastro[cont].versao); fflush(stdin); printf("Ano: "); scanf("%d", &vet_cadastro[cont].ano); fflush(stdin); printf("Funcionalidade: "); gets(vet_cadastro[cont].function); fflush(stdin); printf("Tamanho: "); gets(vet_cadastro[cont].tam); fflush(stdin); break; } } } int check_cod(int cadastrar(struct soft vet_cadastro[TAM])){ int i = 0; int cod; for ( i = 0; i < TAM; i++ ) { if (vet_cadastro[i].codigo == cadastrar(cod) ) return(0); else return(1); } } Bom dia :), fiz esse código aí pessoal e meu problema eu acho que seria na verificação do código, pra o usuario n poder criar um já existente, fiz a função beleza, passei como parâmetro uma outra função q tem o código, porque ele cadastra o código na função cadastrar e nao na main... Pela lógica eu passei a outra função como parâmetro, porém quando eu termino de cadastrar o programa dá um bug e fecha.. Alguém pode me dizer qual seria o problema e como consertar ? Img abaixo.

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