Ir ao conteúdo
  • Cadastre-se

clodoaldoPeres

Membro Pleno
  • Posts

    53
  • Cadastrado em

  • Última visita

posts postados por clodoaldoPeres

  1. 
    

    int codigoInserido;

    cin>>codigoInserido;

    for(int i=0;i < 3;++i)

    {

    if(livros.Codigo == codigoInserido)

    cout<<livros.Titulo<<endl; // para mostrar o titulo do livro q bate com o codigo

    //criar um novo array de livros com os encontrados ou imprimir na tela o codigo encontrado,etc

    }

  2. básico... use um laço percorrendo teu array de Livros e comparando o Livro-indice com o codigo inserido pelo usuario

    for(int i=0;i < max;++i){

       if(livros.Codigo == codigoInserido)

         ...//criar um novo array de livros com os encontrados ou imprimir na tela o codigo encontrado,etc

    }

     

    OBS: sugiro que nao misture C com C++. Por exemplo, se esta usando cout, cin, namespace, etc use class ou invés de struct e metodos para acessar os atributos, use List ou Vector ao invés de um vetor de objetos [] ....

  3. Problemas: 1-teu #define Pessoa no arquivo Pessoa.h está conflitando com o tipo Pessoa do teu typedef struct... Pessoa

                      2-Na função abaixo tirar o ponto e vírgula

    void inserir(Lista *l, Pessoa p, int posicao);//tirar o ponto e vírgula { //já está pronta, porém não achei necessário colocá-la} 

    O resto não olhei, então, não me comprometo com tua implementação. Se está correta ou não você terá q testar e se tiver problemas vai postando e vamos tentando ajudar as dúvidas pontuais.

  4. você pode utilizar o fgets(). A sintaxe dele é char* fgets(char * str, int num, FILE * stream ) onde o 'num' é a qntd limite de caracteres que você deseja ler do arquivo. Caso for encontrado um '\n' (fim de linha) ele retorna tudo que foi lida até ali (caso nao ultrapasse o valor limite 'num') e armazena em 'str' e se encontrar um fim de arquivo retorna um ponteiro nulo. Cada vez q você chamar fgtes() será executada a leitura a partir de onde parou. Caso necessite navegar entre o arquivo, ou seja, andar para frente ou para trás leia sobre o fseek(), ftell(), rewind().

    http://www.cplusplus.com/reference/cstdio/fseek/

    http://www.cplusplus.com/reference/cstdio/ftell/

    http://www.cplusplus.com/reference/cstdio/rewind

  5. "Nao consigo encontrar o erro" eu diria mais "nao consigo encontrar o que está certo". você tem muitos erros de sintaxe. Sugiro que leia sobre cada comando para entende-los. Existe um bom livro chamado C COMPLETO E TOTAL que irá ajudá-lo bastante e o portal C/C++ http://www.cplusplus.com/ . você declarou struct com mesmo nome, usou o modificador const sem usar o tipo, a sintaxe do comando switch estava errada, fechamento de chaves, usou a função main em local indevido, a leitura de string com scanf estava errada,.... Eu só alterei o que estava errado, sem levar em conta a finalidade do algoritmo.

    #include <stdio.h>#include <stdlib.h>//#define n 50typedef struct cliente{int codigo_cliente[5];char nome_cliente[30];char endereco_cliente[25];char cidade_cliente[15];int telefone_cliente[10];int cep_cliente[8];int cpf_cliente[11];int datalocacao_cliente[6];int datadevolucao_cliente[6];int dec;int dec1;}Tcliente;typedef struct carro//{//typedef struct cliente{int codigo_cliente[5];char nome_cliente[30];char endereco_cliente[25];char cidade_cliente[15];int telefone_cliente[10];int cep_cliente[8];int cpf_cliente[11];int datalocacao_cliente[6];int datadevolucao_cliente[6];}Tcarro;int main(){int i;const int n=50;int op=1,poslivre=0,cont;Tcliente cliente[n]; //vetor de 5000 clienteswhile (op!=0){//int main()char nome_carro[30];system("cls");printf("digite 0 para sair\n");printf("digite 1 para cadastrar\n");printf("digite 2 para mostrar\n");printf("digite 3 para pesquisar clientes\n");printf("digite 4 para pesquisar carros\n");printf("digite 5 para inserir novos clientes\n");printf("digite 6 para remover clientes\n");printf("digite 7 para inserir novos carros\n");printf("digite 8 para remover carros\n");printf("digite 9 para ordenar clientes\n");printf("digite 10 para alterar cadastro\n");scanf("%i",&i);//scanf("%s",&i);switch (i){case 1:printf("insira o codigo do cliente\t");fflush(stdin);scanf("%i",cliente[poslivre].codigo_cliente);printf("insira o nome do cliente\t");fflush(stdin);scanf("%[^\n]",cliente[poslivre].nome_cliente);printf("insira o endereco do cliente\t");fflush(stdin);scanf("%[^\n]",cliente[poslivre].endereco_cliente);printf("insira a cidade do cliente\t");fflush(stdin);scanf("%[^\n]",cliente[poslivre].cidade_cliente);printf("insira o telefone do cliente\t");fflush(stdin);scanf("%i",cliente[poslivre].telefone_cliente);printf("insira o cep do cliente\t");fflush(stdin);scanf("%i",cliente[poslivre].cep_cliente);printf("insira o cpf do cliente\t");fflush(stdin);scanf("%i",cliente[poslivre].cpf_cliente);printf("insira datalocacao do cliente\t");fflush(stdin);scanf("%i",cliente[poslivre].datalocacao_cliente);printf("insira a datadevolucao do cliente\t");fflush(stdin);scanf("%i",cliente[poslivre].datadevolucao_cliente);poslivre++;break;case 2:printf("codigo do cliente: %i\t\n",cliente[cont].codigo_cliente);printf("nome do cliente: %s\t\n", cliente[cont].nome_cliente);printf("endereco do cliente: %s\t\n", cliente[cont].endereco_cliente);printf("cidade do cliente: %s\t\n", cliente[cont].cidade_cliente);printf("telefone do cliente: %i\t\n",cliente[cont].telefone_cliente);printf("cep do cliente: %i\t\n",cliente[cont].cep_cliente);printf("cpf do cliente: %i\t\n",cliente[cont].cpf_cliente);printf("datalocacao do cliente: %i\t\n",cliente[cont].datalocacao_cliente);printf("datadevolucao do cliente: %i\t\n",cliente[cont].datadevolucao_cliente);break;default :	puts("nenhum");}}system("pause");}

    No forum o que mais tem são exemplos de código para cadastros. Dê uma olhada...

    • Curtir 1
  6. Segue uma ideia (Não que seja a melhor maneira-fica o gancho para melhora-lo)

    #include<stdio.h>#define MAX 4int main(){char Tab1[MAX];char Tab2[MAX];char Tab3[MAX];int Lin,Lin2=0,Lin3=0,Lin4=0,existe; for(Lin=0;Lin<MAX;Lin++){	puts("\nCaracteres1");	Tab1[Lin]=getchar();	fflush(stdin);}for(Lin=0;Lin<MAX;Lin++){	puts("\nCaracteres2\n");	Tab2[Lin]=getchar();	fflush(stdin);} puts("\nprocessando");for(Lin=0;Lin<MAX;Lin++){	existe=0;	for(Lin2=0;Lin2<MAX;Lin2++)	{		if(Tab1[Lin2]==Tab2[Lin])		{			for(Lin4=0;Lin4<Lin3;++Lin4)				if(Tab3[Lin4] == Tab2[Lin]){					existe=1;					break;				}			if(existe != 1)				Tab3[Lin3++]=Tab2[Lin];		}		if(existe == 1)			break;	}}puts("\nCaracteres1\n");for(Lin=0;Lin<MAX;Lin++){	printf(" %c",Tab1[Lin]);}puts("\nCaracteres2");for(Lin=0;Lin<MAX;Lin++){	printf(" %c", Tab2[Lin]);}puts("\nCaracteres3"); for(Lin=0;Lin<Lin3;Lin++){	printf(" %c", Tab3[Lin]);}}
  7. Segue meus comentários

    #include<stdio.h>#include<stdlib.h>#include<string.h> typedef struct email{ 	char email[64];}email; typedef struct endereco{	 char rua[64];	 char bairro[32];	 char cidade[32];	 char estado[2];}endereco; typedef struct data{	 int dia;	 int mes;	 int ano;}data;typedef  struct contato{    int cod;	 char nome[32];	 char sobrenome[32];	 char cel[16];	 char fixo[16];	 char ftra[16]; }contato;// Primeira duvida nao sei se to fechando e abrindo corretamente o arquivo, segundo ele nao ta gravando //e ta pulado,sei que o codigo esta incompleto, so quero //fazer ele salvar off-line depois disso fica fácil adicionar mais funções.... obrigadoint main (int bancoc,char const *bancov[]){ 	system("cls"); 	FILE  *banco; 	banco = fopen("contato.txt","w+");	if( banco == NULL) // vc deve testar o erro na abertura do arquivo imediatamente após a tentativa		perror("Erro ao tentar abrir arquivo");	struct endereco e[1000];	struct data d[1000];	struct email i[1000];	struct contato c[1000];	int qu=0,op,x=0,x1=0;	system("color 17");		printf("\t\t***Bem vindo a Agenda eletronica***\n");	printf("\t\t\t %d contatos cadastrados\n",x);	printf("Data: ");system("date/t\n");	printf("Digite o numero correspondente a fun%c%co...\n ",135,132);	printf("\n1)Para cadastrar um novo contato\n2)Mostar Todos os contatos\n3)Para pesquisar um contato\n4)Finalizar sessao\n");	scanf("%d",&op);	switch (op){		case 1:{			printf("Digite o nome do contato a ser cadastrado\n");		fflush(stdin);		fgets(c[x].nome,100,stdin);		fscanf(banco,"%s",&c[x].nome); //se vc fizer isso a variavel "nome" deve ter algum conteúdo, por isso fiz o fgets antes		fflush(stdin);		printf("Digite o sobrenome do contato\n");		fgets(c[x].sobrenome,100,stdin);		fscanf(banco,"%s",&c[x].sobrenome);		fflush(stdin);		printf("Digite o celular\n");		fgets(c[x].cel,100,stdin);		fscanf(banco,"%s",&c[x].cel);		fflush(stdin);		printf("Digite o telefone fixo\n");		fgets(c[x].fixo,100,stdin);		fscanf(banco,"%s",&c[x].fixo);		fflush(stdin);		printf("Digite o telefone do trabalho do contato\n");		fgets(c[x].ftra,100,stdin);		fscanf(banco,"%s",&c[x].ftra);		fflush(stdin);		printf("Digite a data de anivesario do contato (ex: 30 04 1996)\n");		scanf("%d%d%d",&d[x].dia, &d[x].mes, &d[x].ano);		fscanf(banco,"%d %d %d",&d[x].dia, &d[x].mes, &d[x].ano);		fflush(stdin);		printf("Digite a cidade do contato\n");		fgets(e[x].cidade,100,stdin);		fscanf(banco,"%s",&e[x].cidade);		fflush(stdin);		printf("Digite o bairro do contato\n");		fgets(e[x].bairro,100,stdin);		fscanf(banco,"%s",&e[x].bairro);		fflush(stdin);		printf("Digite apenas a sigla do estado do contato(ex: MG)\n");		fgets(e[x].estado,100,stdin);		fscanf(banco,"%s",&e[x].estado);		fflush(stdin);		printf("Digite o nome da rua\n");		fgets(e[x].rua,100,stdin);		fscanf(banco,"%s",&e[x].rua);		fflush(stdin);		printf("Digite o contato do email\n");		fgets(i[x].email,100,stdin);		scanf("%s",&i[x].email);		fflush(stdin);		x++;		break;}		fclose(banco);			case 2:			for(x1=0;x1<x;x1++){			printf("codigo do contato %d\n",x);			printf("Nome do contato %s Sobrenome \n",c[x1].nome,c[x1].sobrenome);			printf("Telefone celular %c Telefone Fixo %c Telefone do trabalho %c \n",c[x1].cel,c[x1].fixo,c[x1].ftra);			printf("Aniversario do contato %d %d Email para contato \n",d[x1].dia,d[x1].mes,i[x1].email);			printf("Endereco: Estado %c Cidade %c Bairro %c\n",e[x1].estado,e[x1].cidade,e[x1].bairro);			printf("Rua %s\n",e[x1].rua);			printf("\n\n");					}			break;		case 3:						break;					}		printf("\n1%c Periodo de Ci%cncias da Computa%c%co %c%c%c\n",167,136,135,132,33,33,33);	system("pause");}
    • Curtir 1
  8. Pode ser feito de várias formas como:

    fprintf(cad_veiculo,"%s" ,cad.modelo);    fprintf(cad_veiculo,"%s",cad.placa);	fprintf(cad_veiculo,"%s",cad.descricao);    fprintf(cad_veiculo,"%d\n",cad.ano);// na ultima vez q escrever    

    ou

    fputc('\n',cad_veiculo); // escreve um caractere

    ...

  9. Um boa saida é primeiramente ordenar a matriz. Assim, você terá o maior e o menor número nas extremidades e os 2 menores seguidos. Para isso, você pode utilizar um algoritmo de ordenação pronto tipo: quick sort (CTRL+C - CTRL+V)

  10. Primeiro (pelo enunciado da questão) tua struct tá errada. Deveriam haver 2 structs 

    1

    typedef struct{

        long int codigo_cliente;

        char *nome_cliente;

    } registro1;

     

    2

    typedef struct{

       long int n_conta; 

       double valor_compra;

       long int codigo_cliente;

    }registro2;

     

    A essência do exercício está baseada em banco de dados relacionais. Então, você deve linkar os registros como se fossem 2 tabelas de BD.

    • Curtir 1
  11. #include<stdio.h>#include<stdlib.h>#include<conio.h>#include<string.h>struct cad_veiculo{       char modelo[80];       char placa[20];       char descricao[200];       int ano;       }cad;//################### PROTOTIPOS && VARIABLES GLOBAIS ######################       void CADASTRAR(void);       void PESQUISA(char pesq[200]);       void MENU(void);       void ALTERAR(void);      //########################## FUNÇAO PRINCIPAL ################################int main(){      //textcolor(WHITE);  // system("MODE con cols=60 lines=30");   while(1){            MENU();            }    }// ########################## FUNÇOES ##############################################void MENU(void){     int menu=0;     char ch,pesq[200],excluir[200];    printf("\t\tMENU\n\n\n");    printf("1 - CADASTRAR \n\n");    printf("2 - PESQUISAR STRING\n\n");    printf("3 - LOCALIZAR/EDITAR \n\n");    printf("4 - SAIR\n\n");    printf("\n\n############################################\n\n\n");    scanf("%d",&menu);    switch(menu)    {       case 1:             system("cls");             CADASTRAR();             break;       case 2:            system("cls");            printf("Digite o que quer procurar -> ");            fflush(stdin);            fgets(pesq,sizeof(pesq),stdin);            PESQUISA(pesq);            break;      case 3:           system("cls");           ALTERAR();           break;      case 4:           exit(EXIT_SUCCESS);           break;       default:               system("cls");               printf("Desculpe op\x87\xc6o errada !");               ch=getche();               system("cls");    }     }void ALTERAR(void){          char placa[20];     char opc;     FILE *file;     int regnum=0,pos=0;        if((file=fopen("cad_veiculo.txt","r")) == NULL){       //quando você usar fread, aqui você deve abrir como "rb", ou seja, binario. Nesse caso abri como texto                                     printf("\nERRO AO ABRIR O ARQUIVO ! ");									 system("pause");									exit(-1);                                                    }printf("\nDIGITE A PLACA -> ");fflush(stdin);fgets(placa,sizeof(placa),stdin);   while(feof(file) == 0){                          fgets(cad.modelo,sizeof(char)*20,file);//lendo como texto e nao binario		fgets(cad.placa,sizeof(char)*80,file);		fgets(cad.descricao,sizeof(char)*200,file);		fscanf(file,"%d",&cad.ano);			//printf("cad.placa %s - modelo %s descricao %s ano %d ",cad.placa,cad.modelo,cad.descricao,cad.ano);            if(strcmp(placa,cad.placa)==0){                printf("Modelo :%s\n Placa :%s\n Ano :%d\n Descricao :%s\n",cad.modelo,cad.placa,cad.ano,cad.descricao);                regnum = ++pos;                break;                                      }            }                                                 if(regnum==0){                             printf("\nDESCULPE CADASTRO NAO LOCALIZADO!\n\n\n");                                                          }else{                                   printf("\nDESEJA ALTERAR O REGISTRO?(s/n)");                                   scanf("%c",&opc);                                   getchar();                                   if(opc=='s' || opc=='S'){                                               printf("\nATUALIZAR CADASTRO!");                                               printf("\n\nModelo : ");                                               fflush(stdin);                                               fgets(cad.modelo,sizeof(cad.modelo),stdin);                                                                                              printf("\nPlaca : ");                                               fflush(stdin);                                               fgets(cad.placa,sizeof(cad.placa),stdin);                                                                                              printf("\nAno : ");                                               fflush(stdin);                                               scanf("%d",&cad.ano);                                                                                              printf("\nDescricao : ");                                               fflush(stdin);                                               fgets(cad.descricao,sizeof(cad.descricao),stdin);                                                                                              printf("\n\n");                                               getchar();                                                                                              fseek(file,sizeof(struct cad_veiculo)*(regnum-1),SEEK_SET);                                               fwrite(&cad,sizeof(struct cad_veiculo),1,file);                                               printf("\t*******ARQUIVO ALTERADO COM SUCESSO******\n\n");                                               pos=0;                                               regnum=0;                                               }                                                                      }                                       fclose(file);                                                                                                                                                                                                  }void PESQUISA(char pesq[200]){     FILE *file;     char temp[200];     if((file=fopen("cad_veiculo.txt","r")) == NULL){       //se o arquivo nao existe mostra a mensagem abaixo e sai                                     printf("\nERRO AO ABRIR O ARQUIVO ! ");                                    for(int x=0;x<999999999;x++); //um time para dar tempo de ver a mensagem acima                                     exit(-1);                                     }     while(fgets(temp,200,file)!=NULL){                                      if(strstr(temp,pesq)){                                                                                 // textcolor(RED);                                         printf("\n\n%s",strupr(temp));                                         //textcolor(WHITE);                                         printf("\n\n\n");                                         }                                         }                                         fclose(file);                                }//CADASTRA VEICULOvoid CADASTRAR(void){#define ESC 27int year,key=0;FILE *cad_veiculo;cad_veiculo=fopen("cad_veiculo.txt","a");    do{    printf("\t\tCADASTRO\n\n\n");    printf("\t\tPRESSIONE ESC PARA SAIR\n\n\n");    printf("\nModelo : ");    fflush(stdin);//limpando o buffer    fgets(cad.modelo,sizeof(cad.modelo),stdin);        printf("\nAno : ");        fflush(stdin);    scanf("%d",&year);    printf("\nPlaca : ");        fflush(stdin);    fgets(cad.placa,sizeof(cad.placa),stdin);    printf("\nDescricao : ");        fflush(stdin);    fgets(cad.descricao,sizeof(cad.descricao),stdin);    cad.ano=year;       //gravando no arquivo	/**		aqui na hora de gravar você deve obedecer uma ordem para que possa ler. você estava gravando em uma ordem e lendo em outra. Eu alterei a ordem	*/	fprintf(cad_veiculo,"%s" ,cad.modelo);    fprintf(cad_veiculo,"%s",cad.placa);	fprintf(cad_veiculo,"%s",cad.descricao);    fprintf(cad_veiculo,"%d",cad.ano);       fflush(stdin);   printf("\n\nDESEJA CONTINUAR ?\n\n");   printf("DIGITE QUALQUER TECLA PARA CONTINUAR OU ESC PARA SAIR\n\n");   key=getch();	fclose(cad_veiculo);}while(key!=27);  //se precionar ESC sai do programa    system("cls");     }


    Segue com comentários. Alterei a <conio.h> só para testar. Talvez não atenda completamente mas já tem a ideia geral

  12. Não sei se entendi mas seria algo assim:
    #include <stdio.h>#include <string.h>#include <stdlib.h>int main(){	char cpf[10];	int converte[10],tam,i,j=0;	gets(cpf);	tam=strlen(cpf);	printf("string %s",cpf);	for(i=0;i<tam;++i){		if(!isspace(cpf[i]))			converte[j++]=cpf[i]-48;			}	converte[j]='\0';	for(i=0;i<j;++i){		printf("convertido %d ",converte[i]);		}}

    Caso for leitura de arquivo é só usar o fscanf() ao invés do gets();

  13. Primeiramente, qual é exatamente o erro,  a partir de qual linha ?(pelo que entendi é na função ALTERAR()). Olhando o teu código, entre algumas coisas estranhas, o que vi de mais grave é que você não fecha o arquivo cad_veiculo na função CADASTRAR

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

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!