Skip to content

Commit 5a59690

Browse files
authored
Add files via upload
1 parent fe3bf81 commit 5a59690

4 files changed

+299
-0
lines changed

ProyectoProgramacionComputadores.cpp

+266
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,266 @@
1+
2+
#include<iostream>
3+
#include<fstream>
4+
#include<stdlib.h>
5+
#include<string.h>
6+
7+
using namespace std;
8+
9+
struct sDatos{
10+
int valor;
11+
char *nombre=new char[10];
12+
char *ecuacion=new char[20];
13+
};
14+
15+
bool diferente(char* n){
16+
for(int i=0;i<strlen(n);i++){
17+
if(*(n+i)=='\n'){
18+
return false;
19+
}
20+
}
21+
return true;
22+
}
23+
void imprimir_matriz(sDatos** dato,int filas, int columnas){
24+
for(int i=0;i<filas;i++){
25+
for(int j=0;j<columnas;j++){
26+
cout<<(*(*(dato+i)+j)).valor<<" ";
27+
}
28+
cout<<endl;
29+
}
30+
}
31+
32+
void iniciar_ceros(sDatos** dato){
33+
for(int i=0;i<20;i++){
34+
for(int j=0;j<20;j++){
35+
(*(*(dato+i)+j)).valor=0;
36+
}
37+
}
38+
}
39+
40+
void pegar_nombre(sDatos** dato){
41+
char *letra=new char[10];
42+
char *numero=new char[10];
43+
for(int i=0;i<20;i++){
44+
for(int j=0;j<20;j++){
45+
*(letra+0)=char(j+65);
46+
itoa(i+1,numero,10);
47+
strcpy((*(*(dato+i)+j)).nombre,letra);
48+
strcat((*(*(dato+i)+j)).nombre,numero);
49+
strcpy((*(*(dato+i)+j)).ecuacion,(*(*(dato+i)+j)).nombre);
50+
}
51+
}
52+
}
53+
54+
55+
bool verificar_n(char* n){
56+
for(int i=0;i<strlen(n);i++){
57+
if(*(n+i)=='='){
58+
return true;
59+
}
60+
}
61+
return false;
62+
}
63+
64+
char* quitar_igual(char*pal){
65+
for(int i=0;i<strlen(pal)+1;i++){
66+
*(pal+i)=*(pal+i+1);
67+
}
68+
return pal;
69+
}
70+
71+
void sumar(sDatos**&dato,int filas,int columnas,int columna,int fila,char*n){
72+
int cont_suma=0;
73+
char* aux=n;
74+
for(int i=0;i<strlen(n);i++){
75+
if(*(n+i)=='+'){
76+
cont_suma++;
77+
}
78+
}
79+
aux=quitar_igual(aux);
80+
int h=0;
81+
char*aux1=new char[10];
82+
strtok(aux,"+");
83+
for(int i=0;i<filas;i++){
84+
for(int j=0;j<columnas;j++){
85+
if(strcmp((*(*(dato+i)+j)).nombre,aux)==0){
86+
(*(*(dato+fila)+columna)).valor+=(*(*(dato+i)+j)).valor;
87+
}
88+
}
89+
}
90+
while(h<cont_suma){
91+
if(h==cont_suma-1){
92+
aux=strtok(NULL,"\n");
93+
}
94+
else{
95+
aux=strtok(NULL,"+");
96+
}
97+
bool b=false;
98+
for(int i=0;i<filas&&b==false;i++){
99+
for(int j=0;j<columnas&&b==false;j++){
100+
if(strcmp((*(*(dato+i)+j)).nombre,aux)==0){
101+
(*(*(dato+fila)+columna)).valor+=(*(*(dato+i)+j)).valor;
102+
b=true;
103+
}
104+
}
105+
}
106+
h++;
107+
}
108+
}
109+
110+
111+
void calcular(sDatos**&dato,int filas,int columnas){
112+
for(int i=0;i<filas;i++){
113+
for(int j=0;j<columnas;j++){
114+
}
115+
}
116+
117+
for(int i=0;i<filas;i++){
118+
for(int j=0;j<columnas;j++){
119+
if(!verificar_n((*(*(dato+i)+j)).ecuacion)){
120+
(*(*(dato+i)+j)).valor=atoi((*(*(dato+i)+j)).ecuacion);
121+
}
122+
}
123+
}
124+
125+
126+
for(int i=0;i<filas;i++){
127+
for(int j=0;j<columnas;j++){
128+
if(verificar_n((*(*(dato+i)+j)).ecuacion)){
129+
sumar(dato,filas,columnas,j,i,(*(*(dato+i)+j)).ecuacion);
130+
}
131+
}
132+
}
133+
}
134+
135+
void pegar_plantilla(char* nombre_plantilla,char* nombre, char* apellido,sDatos**dato,int filas,int columnas){
136+
ifstream plantilla(nombre_plantilla,ios::in);
137+
char*nombre_completo=new char[40];
138+
char*ciudad="BOGOTA";
139+
strcpy(nombre_completo,nombre);
140+
strcat(nombre_completo,apellido);
141+
strcat(nombre_completo,".txt");
142+
ofstream salida(nombre_completo,ios::out);
143+
char*n=new char[200];
144+
bool b=true;
145+
char*pal=new char[30];
146+
cout<<"FILAS "<<filas<<" "<<"columnas "<<columnas<<endl;
147+
while(!plantilla.eof()&&b==true){
148+
plantilla.getline(n,200,'<');
149+
salida<<n;
150+
plantilla.getline(n,200,'\n');
151+
salida<<nombre<<" "<<apellido<<'\n'<<ciudad<<'\n';
152+
plantilla.getline(n,200,'\n');
153+
plantilla.getline(n,200,'<');
154+
salida<<n<<" ";
155+
itoa((*(*(dato+0)+columnas-1)).valor,pal,10);
156+
salida<<pal;
157+
plantilla.getline(n,200,'>');
158+
plantilla.getline(n,200,'<');
159+
salida<<n<<" ";
160+
itoa((*(*(dato+filas-1)+columnas-1)).valor,pal,10);
161+
salida<<pal;
162+
plantilla.getline(n,200,'<');
163+
plantilla.getline(n,200,'>');
164+
plantilla.getline(n,200,'<');
165+
salida<<n<<" ";
166+
plantilla.getline(n,200,'>');
167+
itoa((*(*(dato+filas-1)+0)).valor,pal,10);
168+
salida<<pal;
169+
plantilla.getline(n,200,'<');
170+
salida<<n<" ";
171+
cout<<filas/2<<" "<<columnas/2<<endl;
172+
itoa(filas/2,pal,10);
173+
salida<<"("<<pal<<",";
174+
itoa(columnas/2,pal,10);
175+
salida<<pal<<")";
176+
plantilla.getline(n,200,'>');
177+
plantilla.getline(n,200,'\0');
178+
salida<<n;
179+
180+
b=false;
181+
182+
}
183+
plantilla.close();
184+
salida.close();
185+
}
186+
187+
leer_datos(sDatos** &dato,char* nombre,int &filas, int &columnas){
188+
ifstream entrada(nombre,ios::in);
189+
ifstream nombres("nombres.txt",ios::in);
190+
char*n=new char[30];
191+
char c;
192+
int cont=0,i=0,j=0;
193+
char* veces=new char[10];
194+
bool b=false;
195+
char*nombre_persona=new char[30];
196+
char*apellido=new char[30];
197+
char*nombre_plantilla="plantilla.txt";
198+
if(!nombres){
199+
cout<<"Error: no abrio";
200+
}
201+
bool cond=true;
202+
while(!nombres.eof()&&cond){
203+
nombres.getline(nombre_persona,30,' ');
204+
nombres.getline(apellido,30,'\n');
205+
cout<<nombre_persona<<" "<<apellido<<endl;
206+
cond=false;
207+
system("pause");
208+
}
209+
char*numer;
210+
while(!entrada.eof()&&b==false){
211+
if(cont==0){
212+
entrada.getline(veces,10,'\n');
213+
cont++;
214+
}
215+
else{
216+
for(int m=0;m<atoi(veces);m++){
217+
itoa(m+1,numer,10);
218+
strcat(apellido,numer);
219+
entrada.getline(n,30,' ');
220+
columnas=atoi(n);
221+
entrada.getline(n,30,'\n');
222+
filas=atoi(n);
223+
cout<<veces<<endl;
224+
cout<<columnas<<" "<<filas<<endl;
225+
int contador;
226+
for(int j=0;j<filas;j++){
227+
contador=0;
228+
for(int i=0;i<columnas;i++){
229+
contador++;
230+
if(contador==columnas){
231+
entrada.getline(n,30,'\n');
232+
}
233+
else{
234+
entrada.getline(n,30,' ');
235+
}
236+
strcpy((*(*(dato+j)+i)).ecuacion,n);
237+
238+
}
239+
}
240+
b=true;
241+
calcular(dato,filas,columnas);
242+
pegar_plantilla(nombre_plantilla,nombre_persona,apellido,dato,filas,columnas);
243+
imprimir_matriz(dato,filas,columnas);
244+
iniciar_ceros(dato);
245+
}
246+
}
247+
}
248+
}
249+
250+
251+
252+
253+
int main(){
254+
int filas,columnas;
255+
sDatos **dato=new sDatos*[20];
256+
for(int i=0;i<20;i++){
257+
*(dato+i)=new sDatos[20];
258+
}
259+
char*nombre=new char[30];
260+
cout<<"Nombre del archivo?"<<endl;
261+
cin>>nombre;
262+
iniciar_ceros(dato);
263+
pegar_nombre(dato);
264+
leer_datos(dato,nombre,filas,columnas);
265+
}
266+

entrada.txt

+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
3
2+
4 3
3+
10 34 37 =A1+B1+C1
4+
40 17 34 =A2+B2+C2
5+
=A1+A2 =B1+B2 =C1+C2 =D1+D2
6+
2 2
7+
1 5
8+
1 =A1+B1
9+
3 3
10+
5 6 =A1+B1
11+
3 =A1+A2+B1 =B2
12+
1 2 3
13+
14+
15+
16+
17+
18+

nombres.txt

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Sebastian Gonzalez

plantilla.txt

+14
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
S�PER C�LCULO S.A.
2+
<Nombre> <Apellidos>
3+
Ciudad
4+
5+
Despu�s de un an�lisis detallado de cada movimiento de efectivo realizado en la semana <S�per ior derecha> se obtuvieron los siguientes datos:
6+
7+
Unidades producidas <inferior derecha>
8+
Unidades vendidas <S�per ior izquierda>
9+
Utilidad Operacional <inferior izquierda>
10+
Utilidad Neta <(filas/2, columnas/2)>
11+
12+
Cordial Saludo.
13+
14+
Departamento de Finanzas.

0 commit comments

Comments
 (0)