Está en la página 1de 11

Universidad de El Salvador

Facultad de Ingeniería y Arquitectura


Escuela de Ingeniería Eléctrica
Programación l PEL-115

Reporte del Laboratorio N° 1:


“E/S en C++”

Instructor: Israel Bautista

Integrantes: Carnet:
Amaya Figuera Rodrigo Alexander AF14002
Caballero Bautista Eduardo Enrique CB14008
Recinos Bolaños Manuel Josué RB14007
Sorto Castillo, Jairo Josué SC14009

Ciudad Universitaria, Viernes 11 de septiembre de 2015


Desarrollo de la práctica:
Problema 1:
using namespace std;
#include <iostream>
#include <stdlib.h>
#include <iomanip>
#define FILAS 5
#define COLUMNAS 5

int main()
{

float matriz[FILAS][COLUMNAS];
//matriz de FILASxCOLUMNAS
for (int i=0;i<FILAS;i++)
//llenar la matriz con numeros
aleatorios
for (int j=0;j<COLUMNAS;j++)
matriz[i][j]=(rand( )-RAND_MAX/2.0)*1.23456789;

cout.setf(ios::left|ios::scientific|ios::uppercase|ios::showpos);
//alineacion a la derecha, notacion científica,
//caracteres de formato en mayusculas, mostrar signo positivo

for (int i=0;i<FILAS;i++)


{ //imprimir la matriz
for (int j=0;j<COLUMNAS;j++)
{
cout <<setw(12); //ancho de campo 9
cout <<setprecision(1); //precision 2
cout <<setfill(' '); //llenar con espacios
cout <<matriz[i][j]; //imprimir el elemento
}
cout<<endl;
}
return 0;

Página 2 de 11 PEL115 2 Ciclo 2015


Problema 2
using namespace std;
#include<iostream> //cout,cin
#include<iomanip> //setfill,setw
#include<math.h> //sin()
#include <values.h> //MAXFLOAT
#define NPUNTOS 69
#define FUNCION(x) sin(x)

int main(){
float x[NPUNTOS], y[NPUNTOS], ymin=NPUNTOS, ymax=-NPUNTOS,xmin, xmax;
cout<<"Introduzca el limite inferior de x: ";
cin>>xmin;
cout<<"Introduzca el limite superior de x: ";
cin>>xmax;
/*llenar vectores y determinar maximo y minimo de la funcion*/
for (int i=0;i<NPUNTOS;i++){
x[i] = xmin+(xmax-xmin)/(NPUNTOS-1)*i;
y[i] = FUNCION(x[i]);
ymax = (y[i]>ymax) ? y[i]:ymax;
ymin = (y[i]<ymin) ? y[i]:ymin; }

cout.setf(ios::right|ios::scientific|ios::uppercase|ios::showpos);
//escribir cabeceras
cout <<setfill(' ')
<<setw(6)<<"x"
<<setw(11)<<"f(x)"
<<setw(35)<<"grafico"
<<endl;
for (int i=0;i<NPUNTOS;i++) {
cout<<'|';
cout.width(9); //ancho de campo 9
cout.precision(2); //precision 2
cout.fill(' ');// llenar con
blancos
cout<<x[i]<<'|';
cout.width(9); //ancho de campo 9
cout.precision(2); //precision 2
cout.fill(' '); // llenar con
blancos
cout<<y[i]<<'|';
cout.width( ( int ) 52
/(ymax-ymin)*(y[i]-ymin) );
cout.fill(' '); // llenar con
blancos
cout<<"*"<<endl;
}
return 0; }

Página 3 de 11 PEL115 2 Ciclo 2015


Problema 3
/* Descripcion: Este programa es capaz de leer linea por linea todo el contenido de un
archivo secuencial, cuando se presenta el fin de archivo, simplemente suspende la lectura.
Observa que cada linea que se lee se impresa. */

#include <fstream>
#include <iostream>
using namespace std;

int main(int argc, char


**argv){
char frase[81];
fstream fi;
if(argc != 2) {
cout << "Usar: verf
<Archivo>"<< endl;
return 1;
}
fi.open(argv[1],
ios::in);
if(!fi) {
cout << "El Archivo " << argv[1]
<< " no existe o no puede ser abierto."<< endl;
return 1;
}
while(fi.getline( frase , 80 ) != NULL){
cout << frase << endl;
}
return 0;
}

Página 4 de 11 PEL115 2 Ciclo 2015


Problema 4:
#include <fstream>
#include <iostream>
#include <stdlib.h>
using namespace std;

int main(int argc, char **argv){


ifstream fe;
ofstream fs;
char buffer[2048]; // Buffer de 2 Kbytes
int bytesLeidos;
if(argc != 3){
system("clear");
cout << "Usar: copia <Archivo_origen> <Archivo_destino>" << endl;
return 1; }

//abrir el archivo de entrada para lectura


fe . open( argv[1], ios::in );
if( !fe ) {
system("clear");
cout<< "El Archivo " << argv[1];
cout<<"no existe o no puede ser
abierto."<<endl;
return 1; }

// Crear o sobreescribir el
Archivo de salida
fs.open(argv[2], ios::out);
if( !fs ){
cout << "El Archivo " << argv[2]
<< " no puede ser creado." <<
endl;
fe . close( );
return 1; }
do {
fe.read( buffer, 2048 ) ;//leer del archivo de entrada al buffer
fs . write(buffer,fe.gcount());

} while( !fe.eof( ) );
fe . close( );
fs . close( );
return 0;

Página 5 de 11 PEL115 2 Ciclo 2015


Asignación:
1- Realizar un programa que solicite un numero entero n entre 2 y 23 para que muestre un triángulo
como el abajo que es para n=5 .
1 1

1 2 1 2

1 2 3 1 2 3

1 2 3 5 1 2 3 5

1 2 3 5 7 1 2 3 5 7
#include <iostream>
#include <iomanip>
using namespace std;

int main (){


int primos[25], cont, aumento = 0, n = 79, espacios = 42;
for (int i = 1; i <= n; i++ ){
cont=0;
for (int k = 1; k <= i; k++ )
if (i % k == 0 ) cont += 1;
if (( cont == 2 )|( i == 1 )){
aumento++;
primos[aumento] = i;
}
}
cout << "\nDigite un Numero entero del 2 al 23: ";
do {
cin >> n;
if (n > 23||n < 2)
cout << "\a\nIntroduzca solo numeros de 2 a 23\n";
} while (n > 23 || n < 2);
for (int i = 1; i <= n; i++ ){
for (int k = 1; k <= i; k++ ) {
if (i<6) cout.width(espacios--);
if (i>=6) cout.width((espacios-=2)+1);
for ( k = 1; k <= i; k++ ){
cout <<primos[k];
}
for ( k = 1; k <= i; k++ ){
cout <<primos[k];
cout <<setfill(' ');
}
cout << endl;
}
}
return 0; }

Página 6 de 11 PEL115 2 Ciclo 2015


2- Hacer un programa en C++ que acepte una oración desde el teclado para luego imprimirla en un
archivo en orden inverso. Se recomienda el uso de new y delete.
# include <iostream>
# include <string.h>
# include <fstream>
using namespace std;
#define cantidad 100

int main () {
char oracion[cantidad];
int n=0, p;
cout << "\nIntroduzca una Oracion: "
<< "\nPresione Ctrl+c al haber
finalizado\n"
<< endl;
ofstream file ("oracion_inversa.dat");
do{
if (n >= cantidad) break;
} while ((oracion[n++]=getchar())!=EOF);
char *oracion2 = new char [strlen(oracion)+1];
strcpy (oracion2, oracion);
for (p=n-1; p>=0; p--)
file << oracion[p];
file.close();
cout << endl;
delete [] oracion2;
return 0;
}

3- Hacer un programa en C++ que genere una matriz de nxn de números aleatorios, y que guarde la
matriz inversa correspondiente en algún archivo. Tanto 'n' como el nombre del archivo se pasará desde
la línea de comandos y, si el archivo existe se debe lanzar una advertencia con el fin de no hacer una
sobre escritura.
#include<fstream>
#include<iostream>
#include<cstdlib>
using namespace std;

int main( int argc, char **argv) {

Página 7 de 11 PEL115 2 Ciclo 2015


int h,b,i,j,l,k,num;
int **mat;
j=atoi(argv[1]);
srand(time(0));
mat= new int *[j];
for(l=0; l<j; l++)
mat[l]= new int [j];
for(i=0; i<j; i++){
for(k=0; k<j; k++){
mat[i][k]=rand();
}
}

ofstream escribir(argv[2], ios::app);


for(i=0; i<j; i++){
for(k=0; k<j; k++){
escribir<<mat[i][k]<<'\t';

}
escribir<<endl;
}
escribir<< '\n';
escribir<< '\n';
for(i=0; i<j; i++){
for(k=0; k<j; k++){
escribir<<mat[k][i]<<'\t';
}
escribir<<endl;
}
escribir.close();
return 0;

Página 8 de 11 PEL115 2 Ciclo 2015


4- Hacer un programa en C++ que escriba en un archivo mil números enteros aleatorios.
#include <iostream>
#include <fstream>
#include <cstdlib>
using namespace std;
int main(){

ofstream escribir("Mil
numeros.txt");
srand(time(0));
for(int i=1;i<=1000;i++){
escribir<<i<<'.'<<'\t'<<rand()<<
endl;
//cout<<i<<rand()<<endl;
}
return 0;
}

5- El inventario de una tienda esta guardado en un archivo, en el cual cada producto utiliza los
siguientes campos: código de barras, nombre del producto, precio unitario y existencia. Hacer un
programa en C++ que busque un producto en particular, y si esta en el inventario indicar toda la
información relacionada con el. Desde la línea de comando se pasará el nombre del producto y del
archivo, si el número de parámetros no es adecuado se debe presentar un mensaje de error y si el
producto no esta en el inventario se debe mostrar en pantalla ''Producto no encontrado'', si el archivo no
existe se debe generar un beep y el mensaje ''Archivo no existe'' y si el archivo no se puede abrir se se
debe mostrar en pantalla ''Permiso denegado''.
#include <iostream>
#include <fstream>
#include <string.h>
using namespace std;

int main(int argc, char** argv) {


int n=0, i=0, j=0;
char tex[101], datos[101],

Página 9 de 11 PEL115 2 Ciclo 2015


obbusqueda[101];
if(argc!=3){
cerr << "Error en parametros,
usar: <Nombre> <Archivo.txt>\a"<< endl;
return 1;
}

strcpy(obbusqueda, argv[1]);
ifstream lec(argv[2]);
do{
n++;
}while(!(obbusqueda[n]=='\0'));
if(lec.fail()){
cerr <<"Permiso denegado "<<argv[2]<<" ó el archivo no existe\a"<<endl;
return 1;
}else{
while(!lec.eof()){
lec.getline(datos, 101);
strncpy(tex, datos, n);
while(i<n){

if(tex[i]==obbusqueda[i]){
j++;
}
i++;
}
if(i==j){
cout<<"Buscando "<<obbusqueda<<endl;
cout<<"En el archivo
"<<argv[2]<<endl;
cout<<"Datos
solicitados:"<<endl;
cout<<datos<<endl;
return 0;
}
i=0;

j=0;
}if(lec.eof()){
cout<<"El objeto"
<<obbusqueda<<" no esta
en el inventario\a"
<<endl;

Página 10 de 11 PEL115 2 Ciclo 2015


return 0;
}
}
return 0; }

Conclusiones:

 C++ nos ofrece en términos generales una versión más optimizada que ANSI C dado que existe
herramientas como las funciones sobrecargadas que simplifican y minimizan el código.

 La lógica de programación es en esencia la misma, solo existen cambios menores que debemos
tomar en cuenta, como el agregar “USING NAMESPACE” en los headers de los códigos, al imprimir o
capturar en pantalla no debemos especificar el tipo de variable, entre otros.

 La capacidad de manipular el formato de salida ayuda a que los programas se vean de una forma
más ordenada sin una interfaz gráfica dado que trabajamos desde consola.

Página 11 de 11 PEL115 2 Ciclo 2015

También podría gustarte