Dev - C++ - Frases por frecuencias de aparición

 
Vista:
sin imagen de perfil
Val: 34
Ha disminuido su posición en 3 puestos en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Frases por frecuencias de aparición

Publicado por Saint (20 intervenciones) el 30/09/2020 01:35:38
Hola estoy un poco atorado con un problema me pide:
1.- Escribir en un archivo de texto llamado binario.txt los caracteres y su código binario
2.-Leer carácter a carácter una frase cualquiera escrita previamente en un archivo llamado origen.txt
3.-Buscar el carácter leído en binario.txt y escribir su código en un archivo llamado destino.txt (separar con espacio en blanco o enter cada carácter codificado)
4.-Abrir destino.txt buscar el código en binario.txt y mostrar en pantalla el carácter correspondiente hasta reconstruir la frase original

Tengo lo siguiente que generalmente es el punto 1, el problema es que solo mete 18 de los 28 datos que mande a escribir al archivo, también quisiera saber como es que podría leer la palabra que voy a escribir en origen.txt y buscar cada uno de los caracteres en binario.txt para posteriormente ponerlo en destino.txt.

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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
#include<iostream>
#include<string.h>
#include<stdio.h>
#define TAM 40
 
using namespace std;
 
struct TA{
	int id;
   char nombre[TAM];
   int clave;
};
 
void IngresarDatos(TA arreglo[ ]);
void GrabarArchivo(TA arreglo[ ]);
int LeerArchivo();
 
int main(void){
 
	TA arreglo[TAM];
 
	IngresarDatos(arreglo);
	GrabarArchivo(arreglo);
	LeerArchivo();
 
	return 0;
}
 
void IngresarDatos(TA arreglo[ ]){
int i;
	cout<<"\nValores Ingresados";
	for (i=0;i<TAM;i++) arreglo[i].id = -1;
	arreglo[0].id=1;
	strcpy(arreglo[0].nombre,"E");
	arreglo[0].clave=0;
	arreglo[1].id=2;
	strcpy(arreglo[1].nombre,"A");
	arreglo[1].clave=1;
	arreglo[2].id=3;
	strcpy(arreglo[2].nombre,"O");
	arreglo[2].clave=10;
	arreglo[3].id=4;
	strcpy(arreglo[3].nombre,"S");
	arreglo[3].clave=11;
	arreglo[4].id=5;
	strcpy(arreglo[4].nombre,"R");
	arreglo[4].clave=100;
	arreglo[5].id=6;
	strcpy(arreglo[5].nombre,"N");
	arreglo[5].clave=101;
	arreglo[6].id=7;
	strcpy(arreglo[6].nombre,"I");
	arreglo[6].clave=110;
	arreglo[7].id=8;
	strcpy(arreglo[7].nombre,"D");
	arreglo[7].clave=111;
	arreglo[8].id=9;
	strcpy(arreglo[8].nombre,"L");
	arreglo[8].clave=1000;
	arreglo[9].id=10;
	strcpy(arreglo[9].nombre,"C");
	arreglo[9].clave=1001;
	arreglo[10].id=11;
	strcpy(arreglo[10].nombre,"T");
	arreglo[10].clave=1010;
	arreglo[11].id=12;
	strcpy(arreglo[11].nombre,"U");
	arreglo[11].clave=1011;
	arreglo[12].id=13;
	strcpy(arreglo[12].nombre,"M");
	arreglo[12].clave=1100;
	arreglo[13].id=14;
	strcpy(arreglo[13].nombre,"P");
	arreglo[13].clave=1101;
	arreglo[14].id=15;
	strcpy(arreglo[14].nombre,"B");
	arreglo[14].clave=1110;
	arreglo[15].id=16;
	strcpy(arreglo[15].nombre,"G");
	arreglo[15].clave=1111;
	arreglo[16].id=17;
	strcpy(arreglo[16].nombre,"V");
	arreglo[16].clave=10000;
	arreglo[17].id=18;
	strcpy(arreglo[17].nombre,"Y");
	arreglo[17].clave=10001;
	arreglo[18].id=19;
	strcpy(arreglo[18].nombre,"Q");
	arreglo[18].clave=10010;
	arreglo[19].id=20;
	strcpy(arreglo[19].nombre,"H");
	arreglo[19].clave=10011;
	arreglo[20].id=21;
	strcpy(arreglo[20].nombre,"F");
	arreglo[20].clave=10100;
	arreglo[21].id=22;
	strcpy(arreglo[21].nombre,"Z");
	arreglo[21].clave=10101;
	arreglo[22].id=23;
	strcpy(arreglo[22].nombre,"J");
	arreglo[22].clave=10110;
	arreglo[23].id=24;
	strcpy(arreglo[23].nombre,"Ñ");
	arreglo[23].clave=10111;
	arreglo[24].id=25;
	strcpy(arreglo[24].nombre,"X");
	arreglo[24].clave=11000;
	arreglo[25].id=26;
	strcpy(arreglo[25].nombre,"W");
	arreglo[25].clave=11001;
	arreglo[26].id=27;
	strcpy(arreglo[26].nombre,"K");
	arreglo[26].clave=11010;
	arreglo[27].id=28;
	strcpy(arreglo[27].nombre," ");
	arreglo[27].clave=11011;
}
 
void GrabarArchivo(TA arreglo[ ]){
FILE * pf;
int i=0;
    if ( (pf = fopen("BINARIO.TXT", "w")) == NULL)
              cout<<"imposible escribir en el archivo.\n";
	else {
    	while (arreglo[i].id!= -1) {
        	fwrite(&arreglo[i],sizeof(TA),1,pf);
         	i++;
		}
		cout<<"\nGUARDADO EN MEDIO EXTERNO";
       	fclose(pf);
	 }
}
 
int LeerArchivo(){
TA L[TAM];
FILE * pf1;
int i=0;
    if ( (pf1 = fopen("BINARIO.TXT", "r")) == NULL)
		    cout<<"imposible leer en el archivo.\n";
	else {
    	cout<<endl<<"LEIDO DE ARCHIVO: "<<endl;
        	fread(&L[i],sizeof(TA),1,pf1);
        	while (!feof(pf1)) {
         		cout<<L[i].id<<" ";
		 	cout<<L[i].nombre<<" ";
         		cout<<L[i].clave<<endl;
		 	i++;
         		fread(&L[i],sizeof(TA),1,pf1);
       	}
       	fclose(pf1);	 }
		   return i;
 
	}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder