Ir para conteúdo
Fórum Script Brasil

Thiago lablonsk

Membros
  • Total de itens

    49
  • Registro em

  • Última visita

Tudo que Thiago lablonsk postou

  1. Boa tarde, não sou bom em margesort mais posso te falar que pelo que eu entendi é que você quer um ++ a cada inversão correto? você pode colocar uma variável global dando um ++ dentro da função recursiva, Pelo menos comigo funciona ou ate mesmo no main uma variável+=função mais na função tem que dar um return 1 assim que ele trocar ou no caso a cada troca ++ e no return variavel(que recebeu um ++ a cada troca) Qualquer coisa eu testo seu código e tento ajudar. É que estou com um problema em um programa também aqui :\. Um abraço
  2. Tive um outro problema #include <iostream> #include <stdio.h> #include <stdlib.h> #include <string.h> int n=0,spc=0,m=0; unsigned char simbol[256]; FILE *arquivo,*arquivo2; typedef struct no { int contador,simbolo,m; no *esq,*dr; }; void noraiz(no* &raiz) { raiz=NULL; } void insere(no* &raiz, int item) { if(raiz==NULL) { raiz=(no*) malloc(sizeof(no)); raiz->simbolo=item; raiz->contador=1; raiz->dr=raiz->esq=NULL; raiz->m=m; simbol[raiz->m]=item; m++; } else if(item==raiz->simbolo) raiz->contador=raiz->contador+1; else if(item>raiz->simbolo) insere(raiz->dr,item); else if(item<raiz->simbolo) insere(raiz->esq,item); } void grava_arvore (no* raiz) { if(raiz!=NULL) { grava_arvore(raiz->esq); fprintf(arquivo,"%c",simbol[raiz->m]); grava_arvore(raiz->dr); } } void programa() { char g[5],c; no* raiz; noraiz(raiz); arquivo2=fopen("imagem1.pgm","r"); fseek(arquivo2,38,SEEK_SET); while((c=fgetc(arquivo2))!=EOF) { g[n]=c; if(g[n]==' ') { insere(raiz,(atoi(g))); n=0; spc++; } else n++; } arquivo=fopen("teste.txt","w"); grava_arvore(raiz); fprintf(arquivo,"%d",EOF); } int main() { int t; programa(); fclose(arquivo); arquivo=fopen("teste.txt","r"); while((t=fgetc(arquivo))!=-1) { printf(" %c",t); } return 0; } Quando chega no 26 ele para. Ele não passa do 26 se eu der fseek() e pular o 26 ele continua tranquilament. como isso?
  3. A carinha ali é o 'b' rs. Obrigado!
  4. Boa noite, Eu preciso ler um arquivo que contem caracteres da tabela ascii e manipular seus valores. Exemplo char a='255' armazeno seu caracter especial no arquivo e depois quero ler em formato de int para fazer comparações com inteiro. Exemplo char c=fgetc(arquivo); b=c; printf("%d",b); // resultado saia 255;
  5. Alguém pode me mandar algum algoritmo de arvore B e B+?Detalhe ler, escrever,apagar e inserir a arvore em um arquivo, Obrigado
  6. char c; int i=0; criar(); while((c=fgets(c,))!=EOF) { i++; printf("%c",c); } printf("%d",i); fclose(arquivo2); fclose(arquivo); return 0; } isso e para alguns testes { criar(); fclose(arquivo2); fclose(arquivo); return 0; }isso e o programa
  7. O algoritmo serve para ler e escrever em memoria secundaria. So que quando o a.complemento esta funcionando o resto para ( gravando tudo no arquivo com letras japonesas somente quando ele funciona) O que eu estou tentando fazer e copiar registro a registro sem a quebra de linha e sem os | e preenchendo eles de tamanho fixo usando os caracteres '#' e '0' para preencher as lacunas do arquivo. O arquivo encontra-se no dropbox(https://www.dropbox.com/s/hjhik0q3y5sxizg/empresa.txt?dl=0). PF alguém pode me ajudar? #include <stdio.h> #include <stdlib.h> #include <string.h> FILE *arquivo,*arquivo2; int d=0,e=0,f=0,g=0,h=0,w=0,j=0,k=0,l=0,m=0; typedef struct Empresa_copia { char id[5]; char empresa[60]; char telefone[12]; char endereco[60]; char numero[10]; char complemento[25]; char bairro[25]; char cep[8]; char cidade[25]; char estado[2]; }; int id(char c) { int i; struct Empresa_copia a; if(c!='|') { a.id[d]=c; fprintf(arquivo2,"%c",a.id[d]); d++; return 1; } if(d==4) { return 2; } if((c=='|')&&(d<4)&&((strlen(a.id)!=0)||(strcmp(a.id,'0')!=0))) { d+1; for(i=d;i<4;i++) { a.id[i]='0'; fprintf(arquivo2,"%c",a.id[i]); } for(i=0;i<4;i++) { a.id[i]=0; } d=4; return 2; } } int empresa(char c) { int i; struct Empresa_copia a; if(c!='|') { a.empresa[e]=c; fprintf(arquivo2,"%c",a.empresa[e]); e++; return 2; } if(e==60) { return 3; } if((c=='|')&&(e<60)&&((strlen(a.empresa)!=0)||(strcmp(a.empresa,"0")!=0))) { e+1; for(i=e;i<60;i++) { a.empresa[i]='#'; fprintf(arquivo2,"%c",a.empresa[i]); } for(i=0;i<60;i++) { a.empresa[i]=0; } return 3; } } int telefone(char c) { int i; struct Empresa_copia a; if(c!='|') { a.telefone[f]=c; fputc(a.telefone[f],arquivo2); f++; return 3; } if(f==12) { return 4; } if((c=='|')&&(f<12)&&((strlen(a.telefone)!=0)||(strcmp(a.telefone,"0")!=0))) { f+1; for(i=f;i<12;i++) { a.telefone[i]='#'; fputc(a.telefone[i],arquivo2); } for(i=0;i<12;i++) { a.telefone[i]=0; } return 4; } } int endereco(char c) { int i; struct Empresa_copia a; if(c!='|') { a.endereco[g]=c; fprintf(arquivo2,"%c",a.endereco[g]); g++; return 4; } if(g==60) { return 5; } if((c=='|')&&(g<60)&&((strlen(a.endereco)!=0)||(strcmp(a.endereco,"0")!=0))) { g+1; for(i=g;i<60;i++) { a.endereco[i]='#'; fprintf(arquivo2,"%c",a.endereco[i]); } for(i=0;i<60;i++) { a.endereco[i]=0; } return 5; } } int numero(char c) { int i; struct Empresa_copia a; if(c!='|') { a.numero[h]=c; fputc(a.numero[h],arquivo2); h++; return 5; } if(h==10) { return 6; } if((c=='|')&&(h<10)&&((strlen(a.numero)!=0)||(strcmp(a.numero,"0")!=0))) { h+1; for(i=h;i<10;i++) { a.numero[i]='#'; fputc(a.numero[i],arquivo2); } for(i=0;i<10;i++) { a.numero[i]=0; } return 6; } } int complemento(char c) { int i; struct Empresa_copia a; if(c!='|') { a.complemento[w]=c; fprintf(arquivo2,"%c",a.complemento[w]); w++; return 6; } if(w==25) { return 7; } if((c=='|')&&(w<25)&&((strlen(a.complemento)!=0)||(strcmp(a.complemento,"0")!=0))) { w+1; for(i=w;i<25;i++) { a.complemento[i]='#'; fputc(a.complemento[i],arquivo2); } w=25; return 7; } } int bairro(char c) { struct Empresa_copia a; int i; if(c!='|') { a.empresa[j]; fprintf(arquivo2,"%c",a.bairro[j]); j++; return 7; } if(j==25) { return 8; } if((c=='|')&&(j<25)&&((strlen(a.bairro)!=0)||(strcmp(a.bairro,"0")!=0))) { j+1; for(i=j;i<25;i++) { a.bairro[i]='#'; fprintf(arquivo2,"%c",a.bairro[i]); } return 8; } } int cep(char c) { int i; struct Empresa_copia a; if(c!='|') { a.cep[k]=c; fputc(a.cep[k],arquivo2); k++; return 8; } if(k==8) { return 9; } if((c=='|')&&(k<8)&&((strlen(a.cep)!=0)||(strcmp(a.cep,"0")!=0))) { k+1; for(i=k;i<8;i++) { a.cep[i]='#'; fputc(a.cep[i],arquivo2); } return 9; } } int cidade(char c) { int i; struct Empresa_copia a; if(c!='|') { a.cidade[l]=c; fprintf(arquivo2,"%c",a.cidade[l]); l++; return 9; } if(l==25) { return 10; } if((c=='|')&&(l<25)&&((strlen(a.cidade)!=0)||(strcmp(a.cidade,"0")!=0))) { l+1; for(i=l;i<25;i++) { a.cidade[i]='#'; fprintf(arquivo2,"%c",a.cidade[i]); } for(i=0;i<24;i++) { a.cidade[i]=0; } return 10; } } int estado(char c) { int i; struct Empresa_copia a; if(c!='|') { a.estado[m]=c; fprintf(arquivo2,"%c",a.estado[m]); m++; return 10; } if(m==2) { d=0; e=0; f=0; g=0; h=0; w=0; j=0; k=0; l=0; m=0; return 1; } if((c=='|')&&(m<2)&&((strlen(a.estado)!=0)||(strcmp(a.estado,"0")!=0))) { m+1; for(i=m;i<2;i++) { a.estado[i]='#'; fprintf(arquivo2,"%c",a.estado[i]); } for(i=0;i<2;i++) { a.estado[i]=0; } d=0; e=0; f=0; g=0; h=0; w=0; j=0; k=0; l=0; m=0; return 1; } } void criar() { int op=1; char c; arquivo=fopen("empresa.txt","r"); arquivo2=fopen("empresa_fix.txt","w"); while((c=fgetc(arquivo))!=EOF) { if((c!='\n')&&(c!='\'')) { switch(op) { case 1: op=id(c); break; case 2: op=empresa(c); break; case 3: op=telefone(c); break; case 4: op=endereco(c); break; case 5: op=numero(c); break; case 6: op=complemento(c); break; case 7: op=bairro(c); break; case 8: op=cep(c); break; case 9: op=cidade(c); break; case 10: op=estado(c); break; } } } } int main() { char c; int i=0; criar(); while((c=fgets(c,))!=EOF) { i++; printf("%c",c); } printf("%d",i); fclose(arquivo2); fclose(arquivo); return 0; }
  8. <script type='text/javascript'>window.mod_pagespeed_start = Number(new Date());</script> Obrigado me ajudou, porem em meu codblocks ele não roda em C somente em C++ tudo por causa do & ele não aceita e da um aviso sobre pontos ou ponto e virgula já no C++ funciona tranquilamente.
  9. Já programo em C a um tempo. Bom eu sempre usei o return como metodo para retornar valores da função porem ele só me retorna 1 valor. Gostaria de saber outro metodo e podem me dar exemplos? Tipo void exemplo(int x) { } Eu não entendi muito bem me parece que o & me envia este valor de volta void exemplo(int &x) { } e se for um ponteiro? uma struct? E o que acontece na função e como fica no main? Rs sei que são muitas perguntas e que eu programo diferente e meu professor utiliza isso e quase me reprovou por não fazer igual ele na aula teoria ¬¬'. Obrigado
  10. Thiago lablonsk

    Grupo face

    pessoal me descupe mas não sei se posso fazer isso. Criei um grupo no face para C/C++. Como eu sei que é mais fácil alguém visualizar por lá e vi uma carência deste forum em C/C++ eu estou divulgando aqui. Se o scriptbrasil quiser fazer uma parceria la. Só temos alunos de engenharia de computação. https://www.facebook.com/groups/500960726705036/ Todos que tiverem interesse. Eu sempre faço e deixo guardado trecho de codigos posso estar ajudando ;) Obrigado
  11. pessoal me descupe mas não sei se posso fazer isso. Criei um grupo no face para C/C++. Como eu sei que é mais fácil alguém visualizar por lá e vi uma carência deste forum em C/C++ eu estou divulgando aqui. Se o scriptbrasil quiser fazer uma parceria la. Só temos alunos de engenharia de computação. https://www.facebook.com/groups/500960726705036/ Todos que tiverem interesse. Eu sempre faço e deixo guardado trecho de codigos posso estar ajudando ;) Obrigado
  12. Bom dia, alguém tem alguma ideia de como excluir algum registro dentro do arquivo Binário em C? Obrigado
  13. #include <stdio.h> #include <stdlib.h> FILE *arquivo; typedef struct { int cod; char nome[20]; struct codigo *prox; }codigo; codigo *inicio,*fim; void abrir() { codigo p; if((arquivo=fopen("teste.txt","rb"))==NULL) { arquivo=fopen("teste.txt","a+b"); p.cod=0; fwrite(&p,sizeof(codigo),1,arquivo); } else { arquivo=fopen("teste.txt","a+b"); } } void recebe (codigo *p) { abrir(); fseek(arquivo,-sizeof(codigo),SEEK_END); fread(p,sizeof(codigo),1,arquivo); p->cod++; fclose(arquivo); abrir(); printf("\n Digite nome:"); fflush(stdin); gets(p->nome); insere(&p); fwrite(p,sizeof(codigo),1,arquivo); fclose(arquivo); } void listavz() { codigo *aux; aux=(codigo*)malloc(sizeof(codigo)); inicio=aux; fim=inicio; } void insere(codigo p) { codigo *aux; aux=(codigo*)malloc(sizeof(codigo)); fim->prox=aux; fim=aux; aux->prox=NULL; } void imprime2() { codigo *aux; while(aux!=NULL) { printf("\n Codigo:",aux->cod); printf("\n Nome:",aux->nome); aux=aux->prox; } } void imprimir() { abrir(); codigo p; while(fread(&p,sizeof(codigo),1,arquivo)) { printf("\n Codigo:%d",p.cod); printf("\n Nome:%s",p.nome); } fclose(arquivo); } int main() { int op=0; do { recebe(); fflush(stdin); scanf("%d",&op); }while(op!=2); imprimir(); printf("\n imprime 2"); imprime2(); return 0; } Com esse codigo queria implementar uma lista encadeada e esta dando erro pf alguém me ajuda rapido
  14. #include <stdio.h> #include <stdlib.h> FILE *arquivo; int frag=0; typedef struct { int cod; char nome[30]; }codigo; void abrir() { if(arquivo=fopen("teste.txt","rb")==NULL) { arquivo=fopen("teste.txt","ab"); codigo *a; a->cod=0; frag=1; } else arquivo=fopen("teste.txt","ab"); } void pega(codigo *p) { abrir(); gets(p->nome); if(!frag) { fseek(arquivo,0,SEEK_END); p->cod=p->cod+1; fclose(arquivo); } p->cod=p->cod+1; abrir(); fwrite(p,sizeof(codigo),1,arquivo); fclose(arquivo); } void listar() { codigo *p; abrir(); while(fread(p,sizeof(codigo),1,arquivo)==1) { printf("\n Codigo:%d",p->cod); printf("\n Nome: %s",p->nome); } fclose(arquivo); } int main() { codigo *p,pt; p=&pt; printf("\nDigite o nome:"); pega(p); listar(); return 0; }
  15. <script type='text/javascript'>window.mod_pagespeed_start = Number(new Date());</script> Obrigado, vou estudar uma matéria aqui e daqui a pouco vou tentar a dica que você deu foi muito útil e sim eu queria pegar o código já inserido no arquivo e contar a partir dele como faço? e a parte do & não consegui entender (parte da explicação 3.1 eu queria um exemplo para eu entender 100%) Daqui a pouco testo obrigado mesmos... :) :) using namespace std; // Você nem usou as chamadas do std Codeblocks kkkk ele já inicia assim.
  16. <script type='text/javascript'>window.mod_pagespeed_start = Number(new Date());</script> Na verdade se o arquivo não for criado ele vai gerar 1 arquivo, é apenas um teste e sim o A faz eu acabei descobrindo, Mas,,,, problema que ao executar novamente ele apaga o anterior e grava por cima e ainda cria outro igual
  17. Thiago lablonsk

    Ajuda C

    #include <iostream> #include <stdio.h> FILE *arquivo; typedef struct paciente { int codPaciente=0; char nome[40]; char endereco[40]; char numero [14]; }; typedef struct medico { int codMedico; char endereco[40]; char numero [14]; }; typedef struct consulta { int codConsulta; char diasemana [13]; char hora [5]; int codMedico; int codPaciente; }; void gravar(struct paciente *grav) { arquivo= fopen("clinica.txt","ab"); if(arquivo==NULL) { arquivo=fopen("clinica.txt","wb+"); grav->codPaciente=1; } else { fread(&grav,sizeof(grav),1,arquivo); } fscanf(arquivo,"%d",grav->codPaciente); grav->codPaciente++; printf("Digite o nome do paciente \n"); gets(grav->nome); printf("Digite o endereco do paciente \n"); gets(grav->endereco); printf("Digite o numero do paciente \n"); gets(grav->numero); fwrite(&grav,sizeof(grav),1,arquivo); fclose(arquivo); } void deseja(int *a ,struct paciente *grav) { do { fflush(stdin); gravar(grav); printf("\n Deseja imprimir?"); scanf("%d",a); if(*a==1) { arquivo=fopen("clinica.txt","r"); while(fread(&grav,sizeof(grav),1,arquivo)==1) { printf("\n %d",grav->codPaciente); printf("\n %s",grav->nome); printf("\n %s",grav->endereco); printf("\n %s",grav->numero); } fclose(arquivo); } fflush(stdin); printf("\n Deseja continuar? 1 Sim| 2 Nao "); scanf("%d",a); }while(*a!=2); } using namespace std; int main() { int a,*p1; struct paciente b,*p2; p1=&a; p2=&b; deseja(p1,p2); return 0; } Esse codigo está funcionando agora mais com um detalhe, ele esta gravando em cima do que já está escrito e reescrevendo de novo exemplo ele grava o cadastro 2 em cima do 1 e do 2. Poderia me ajudar? E ele escreve em cima do arquivo...
  18. Thiago lablonsk

    Ajuda C

    Aqui está o codigo, #include <iostream> #include <stdio.h> FILE *arquivo; typedef struct paciente { int codPaciente=0; char nome[40]; char endereco[40]; char numero [14]; int bk=1; }; typedef struct medico { int codMedico; char endereco[40]; char numero [14]; int bk=1; }; typedef struct consulta { int codConsulta; char diasemana [13]; char hora [5]; int codMedico; int codPaciente; int bk=1; }; void gravar(struct paciente *grav) { arquivo= fopen("clinica.txt","ab"); if(arquivo==NULL) { arquivo=fopen("clinica.txt","wb+"); grav->codPaciente=1; } else { fseek(arquivo,-1,SEEK_END); fread(&grav,sizeof(grav),1,arquivo); } grav->codPaciente++; printf("Digite o nome do paciente \n"); gets(grav->nome); printf("Digite o endereco do paciente \n"); gets(grav->endereco); printf("Digite o numero do paciente \n"); gets(grav->numero); fwrite(&grav,sizeof(grav),1,arquivo); fclose(arquivo); } void deseja(int *a ,int *b ,struct paciente *grav) { do { fflush(stdin); gravar(grav); printf("\n Deseja imprimir?"); scanf("%d",a); while(*a!=2) { while(fread(&grav,sizeof(grav),1,arquivo)==1) { printf("\n %d",grav->codPaciente); printf("\n %s",grav->nome); printf("\n %s",grav->endereco); printf("\n %s",grav->numero); } } fflush(stdin); printf("\n Deseja continuar? 1 Sim| 2 Nao "); scanf("%d",a); }while(*b!=2); } using namespace std; int main() { int a,c,*p1,*p3; struct paciente b,*p2; p1=&a; p2=&b; p3=&c; deseja(p1,p3,p2); return 0; } Tente executa-lo. Esqueça o bk
  19. Thiago lablonsk

    Ajuda C

    Obrigado! Vou experimentar aqui!!!
  20. Thiago lablonsk

    Ajuda C

    alguém pode ajudar? Necessito saber como eu faço para fazer 2 coisas. 1- usar uma struct dentro de uma função chamando ela no main com passagem de parametro usando ponteiro (->) 2- copiar um dado de um arquivo exemplo txt e jogar em uma variável....
×
×
  • Criar Novo...