Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

krad99

Ler txt e separar dados

Recommended Posts

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

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

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

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

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.