krad99 0 Denunciar post Postado Junho 9, 2008 bom eu tenho um arquivo txt...q e o aviao...ele ira passar por 3 locais...logo as pessoas podem descer em qlquer 1 dos 3 quem escolher o destino 3 desde o inicio a poltrona ira fica ocupada...qdo escolherem o 2 as poltronas de quem escolheu 1 ficam livre...quem escolher o 3 as poltronas dos trechos 1 e 2 ficam vazias...bom pessoal estou F**...PERDIDO...nao vo negar talvez eu tenha dado um passo a mais q minhas pernas porem segue o codigo abaixo/ <trecho>1<poltrona>1<passageiro>joao</passageiro></poltrona></trecho> <trecho>1<poltrona>3<passageiro>marcos</passageiro></poltrona></trecho> <trecho>1<poltrona>2<passageiro>maria</passageiro></poltrona></trecho> <trecho>1<poltrona>5<passageiro>paulo</passageiro></poltrona></trecho> <trecho>1<poltrona>4<passageiro>francisco</passageiro></poltrona></trecho> CODE #include <stdio.h> #include <conio.h> #include <stdlib.h> #include <string.h> FILE *parquivo; //ponteiro para arquivo int flag; void abre_arquivo() { if ((parquivo = fopen("aviao.txt","r+b"))== NULL) parquivo = fopen("aviao.txt","w+b"); } main(){ abre_arquivo(); int i,y,x; flag = 0; char textoArquivo[100]; int matriz[4][5]; int auxcheca; char aux[2] = " "; char auxt[2] = " "; char aux2[100] = ""; for(i = 0;;i++){ x=8; char trecho[100] = ""; char poltrona[100] = ""; if(fgets(textoArquivo, 100, parquivo) == NULL){ break; } else{ while(textoArquivo[x] != '<'){ aux[0] = textoArquivo[x]; strcat(trecho,aux); ++x; if (strstr(trecho,"2")){ y=19; //tenho q implementar uma funcao q deleta tdos q forem do trecho 1 while(textoArquivo[y] != '<'){ if (flag != 1){ auxt[0] = textoArquivo[y]; strcat(poltrona,auxt); auxcheca = atoi(poltrona); switch(auxcheca){ case 1:{ matriz[0][0] = 1;textoArquivo[y] = '<';break; } case 2:{ matriz[0][1] = 1;textoArquivo[y] = '<';break; } case 3:{ matriz[0][2] = 1;textoArquivo[y] = '<';break; } case 4:{ matriz[0][3] = 1;textoArquivo[y] = '<';break; } case 5:{ matriz[0][4] = 1;textoArquivo[y] = '<';break; } case 6:{ matriz[0][5] = 1;textoArquivo[y] = '<';break; } case 7:{ matriz[1][0] = 1;textoArquivo[y] = '<';break; } case 8:{ matriz[1][1] = 1;textoArquivo[y] = '<';break; } case 9:{ matriz[1][2] = 1;textoArquivo[y] = '<';break; } case 10:{ matriz[1][3] = 1;textoArquivo[y] = '<';break; } case 11:{ matriz[1][4] = 1;textoArquivo[y] = '<';break; } case 12:{ matriz[1][5] = 1;textoArquivo[y] = '<';break; } case 13:{ matriz[2][0] = 1;textoArquivo[y] = '<';break; } case 14:{ matriz[2][1] = 1;textoArquivo[y] = '<';break; } case 15:{ matriz[2][2] = 1;textoArquivo[y] = '<';break; } case 16:{ matriz[2][3] = 1;textoArquivo[y] = '<';break; } case 17:{ matriz[2][4] = 1;textoArquivo[y] = '<';break; } case 18:{ matriz[2][5] = 1;textoArquivo[y] = '<';break; } case 19:{ matriz[3][0] = 1;textoArquivo[y] = '<';break; } case 20:{ matriz[3][1] = 1;textoArquivo[y] = '<';break; } case 21:{ matriz[3][2] = 1;textoArquivo[y] = '<';break; } case 22:{ matriz[3][3] = 1;textoArquivo[y] = '<';break; } case 23:{ matriz[3][4] = 1;textoArquivo[y] = '<';break; } case 24:{ matriz[3][5] = 1;textoArquivo[y] = '<';break; } case 25:{ matriz[4][0] = 1;textoArquivo[y] = '<';break; } case 26:{ matriz[4][1] = 1;textoArquivo[y] = '<';break; } case 27:{ matriz[4][2] = 1;textoArquivo[y] = '<';break; } case 28:{ matriz[4][3] = 1;textoArquivo[y] = '<';break; } case 29:{ matriz[4][4] = 1;textoArquivo[y] = '<';break; } case 30:{ matriz[4][5] = 1;textoArquivo[y] = '<';break; } } break; } } } } } } } Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Junho 9, 2008 oq você naum ta conseguindo implementar? ---Título editado--- [ajuda]Perdido e disisperado http://forum.imasters.com.br/public/style_emoticons/default/seta.gif Ler txt e separar dados Compartilhar este post Link para o post Compartilhar em outros sites
krad99 0 Denunciar post Postado Junho 9, 2008 eu queria que qdo fosse o trecho 2..deletar tdos q fossem do trecho 1...mas naum sei nem por onde comecar ou se eu estou certo...ai outro exemplo qdo o usuario coloca-se 3 deleta-se os registro q fossem 1 e 2...lembrando q essa rotina nao tem por enquanto entradas...depois q eu colocar ela pra rodar direitinho eu coloco a gui Compartilhar este post Link para o post Compartilhar em outros sites
José Enésio 4 Denunciar post Postado Junho 9, 2008 Pergunta crucial do mal: Precisa usar XML no arquivo? Se não precisar, tenho uma solução perfeita aqui para você. Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Junho 9, 2008 Mijada básica: mantenha a mesma dúvida no mesmo tópico e de preferência com título diferente de "Ajuda","Socorro","Trabalho". É uma zona localizar o tópico inicial com tudo espalhado: http://forum.imasters.com.br/index.php...amp;pid=1057258 http://forum.imasters.com.br/index.php...amp;pid=1055509 case 8:{ matriz[1][1] = 1;textoArquivo[y] = '<';break; } Meu! Não precisa de chaves num case. Não coloque coisa que dificulta a leitura. auxcheca = atoi(poltrona); switch(auxcheca){ case 1: matriz[0][0] = 1;textoArquivo[y] = '<'; break; case 2: matriz[0][1] = 1;textoArquivo[y] = '<'; break; case 3: matriz[0][2] = 1;textoArquivo[y] = '<'; break; case 4: matriz[0][3] = 1;textoArquivo[y] = '<'; break; case 5: matriz[0][4] = 1;textoArquivo[y] = '<'; break; case 6: matriz[0][5] = 1;textoArquivo[y] = '<'; break; case 7: matriz[1][0] = 1;textoArquivo[y] = '<'; break; case 8: matriz[1][1] = 1;textoArquivo[y] = '<'; break; case 9: matriz[1][2] = 1;textoArquivo[y] = '<'; break; case 10: matriz[1][3] = 1;textoArquivo[y] = '<'; break; case 11: matriz[1][4] = 1;textoArquivo[y] = '<'; break; case 12: matriz[1][5] = 1;textoArquivo[y] = '<';break; case 13: matriz[2][0] = 1;textoArquivo[y] = '<';break; case 14: matriz[2][1] = 1;textoArquivo[y] = '<';break; case 15: matriz[2][2] = 1;textoArquivo[y] = '<';break; case 16: matriz[2][3] = 1;textoArquivo[y] = '<';break; case 17: matriz[2][4] = 1;textoArquivo[y] = '<';break; case 18: matriz[2][5] = 1;textoArquivo[y] = '<';break; case 19: matriz[3][0] = 1;textoArquivo[y] = '<';break; case 20: matriz[3][1] = 1;textoArquivo[y] = '<';break; case 21: matriz[3][2] = 1;textoArquivo[y] = '<';break; case 22: matriz[3][3] = 1;textoArquivo[y] = '<';break; case 23: matriz[3][4] = 1;textoArquivo[y] = '<';break; case 24:matriz[3][5] = 1;textoArquivo[y] = '<';break; case 25: matriz[4][0] = 1;textoArquivo[y] = '<';break; case 26: matriz[4][1] = 1;textoArquivo[y] = '<';break; case 27: matriz[4][2] = 1;textoArquivo[y] = '<';break; case 28: matriz[4][3] = 1;textoArquivo[y] = '<';break; case 29: matriz[4][4] = 1;textoArquivo[y] = '<';break; case 30: matriz[4][5] = 1;textoArquivo[y] = '<'; } Procure padrões no código.Esse case gigante é horrível.Posso refazer isso com #define POLTRONAS_POR_FILEIRA 6 ... int aux = atoi(poltrona); int coluna = aux%POLTRONAS_POR_FILEIRA-1; int linha = (aux-(coluna+1))/POLTRONAS_POR_FILEIRA; // Progressão aritmética. matriz[linha][coluna] = 1; 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 fileiras = 4 ; poltronas = 10 atoi(poltrona) = 26 coluna = 26%10 - 1 = 5 linha = (26-6)/10 = 2 matriz[2][5] <- 1 Compartilhar este post Link para o post Compartilhar em outros sites
krad99 0 Denunciar post Postado Junho 10, 2008 obrigado José Enésio e ao import java.isis... ps:José Enésio nao precisa ser em xml...eh pq eu trabalho com outra linguagem ai pra nao sentir tanta diferença inventei de fazer em xml pra q fui inventar...se você tiver mais uma de suas otimas dicas por favor me ajude. ps1: import java.isis pesso desculpas realmente minha conduta no forum nao foi as das melhores...é q eu escrevo os posts mtooo rapido pro meu chefe nao ver ja q eu sou monitorado...as vezes acabo colocando oq vem na mente...jah q eu realmente estava...no caso estou disisperado aos demais olá senhores...jah apliquei oq import java.isis falou porem aquela minha logica daria mto certo se os passageiros nao decesem do aviao porem tem essa...vamos a um exemplo um passageiro escolheu o trecho 3, qdo alguem escolher o trecho 2 a poltrona do passageiro q escolheu o trecho 3 vai esta ocupada pois é a mesma viagem, segue o codigo atualizado com a dica do import java.isis CODE #include <stdio.h> #include <conio.h> #include <stdlib.h> #include <string.h> #define POLTRONAS_POR_FILEIRA 6 FILE *parquivo; //ponteiro para arquivo int flag; void abre_arquivo() { if ((parquivo = fopen("aviao.txt","r+b"))== NULL) parquivo = fopen("aviao.txt","w+b"); } int procura(char t[20],int x){ int i; char textoArquivo[100]; char trechonulo = " "; char aux[2] = " "; char aux2[100] = ""; for(i = 0;;i++){ char trecho[100] = ""; if(fgets(textoArquivo, 100, parquivo) == NULL){ break; } else{ while(textoArquivo[x] != '<'){ aux[0] = textoArquivo[x]; strcat(trecho,aux); ++x; } if(strstr(trecho,t)){ fseek(parquivo,100, SEEK_SET); fwrite(&trechonulo, sizeof(TAlunos), 1, arquivo); printf("\n\n Aluno removido com Sucesso!!!\n") } } } return 0; } void remover() { int matrem, continuar, conrem; do{ int i; char textoArquivo[100]; char aux[2] = " "; char aux2[100] = ""; for(i = 0;;i++){ char poltrona[100] = ""; if(fgets(textoArquivo, 100, parquivo) == NULL){ break; } else{ while(textoArquivo[x] != '<'){ aux[0] = textoArquivo[x]; strcat(poltrona,aux); ++x; } if (posicao == -1) aprintf("\n\n Matrícula Incorreta!!!!!!\n\n"); else { mostre(); aprintf("\n Deseja remover o aluno (1-sim/2-não)? "); scanf("%d",&conrem); if (conrem == 1) { fseek(arquivo,posicao*sizeof(TAlunos), SEEK_SET); fwrite(&alunonulo, sizeof(TAlunos), 1, arquivo); printf("\n\n Aluno removido com Sucesso!!!\n"); } else aprintf("\n\n O aluno não foi removido!!!\n"); } linha(); aprintf(" Remover outro aluno(1-sim/2-não)? "); scanf("%d",&continuar); }while (continuar == 1); } main(){ abre_arquivo(); int i,y,x; flag = 0; char textoArquivo[100]; int matriz[4][5]; int auxcheca; char aux[2] = " "; char auxt[2] = " "; char aux2[100] = ""; for(i = 0;;i++){ x=8; char trecho[100] = ""; char poltrona[100] = ""; if(fgets(textoArquivo, 100, parquivo) == NULL){ break; } else{ while(textoArquivo[x] != '<'){ aux[0] = textoArquivo[x]; strcat(trecho,aux); ++x; if (strstr(trecho,"1")){ y=19; while(textoArquivo[y] != '<'){ auxt[0] = textoArquivo[y]; strcat(poltrona,auxt); ++y; }int aux_p = 0; aux_p = atoi(poltrona); int coluna = aux_p%POLTRONAS_POR_FILEIRA-1; int linha = (aux_p-(coluna+1))/POLTRONAS_POR_FILEIRA; // Progressão aritmética. matriz[linha][coluna] = 1; } } } } } Compartilhar este post Link para o post Compartilhar em outros sites
José Enésio 4 Denunciar post Postado Junho 10, 2008 Sabe já trabalhar com structs? Você pode tentar manipular os dados do seu arquivo do avião com dados binários: você pode salvar os dados da struct no arquivo com fwrite e depois você pode usar fread para ler os dados em uma struct... tô sem tempo de fazer algo agora, mas tenta dar uma olhada mais de perto nisso, vai ajudar na hora de organizar os dados. Compartilhar este post Link para o post Compartilhar em outros sites
krad99 0 Denunciar post Postado Junho 10, 2008 sei +- esse trabalho eh pra quinta eu tow mto f** e é a prova final...; /...tow quase desistindo da cadeira...vo tentar nao dormir hj pra resolver essa historia. Compartilhar este post Link para o post Compartilhar em outros sites