Vous êtes sur la page 1sur 9

// Ejercicio_1_SumaArrays.cpp: archivo de proyecto principal.

#include "stdafx.h"
#include "iostream"
#include "stdlib.h"
#include "fstream"
#include "stdio.h"
#include "string"
using namespace std;
bool esNumerico(string linea);
void ingreso(int *vec, int n) {
int valor;
string linea;
for (int i = 0; i < n; i++) {
do {
cin >> linea;
} while (esNumerico(linea) == false);
valor = atoi(linea.c_str());
*(&(*vec)+i)=valor;
}
}
void impresion(int *vec, int n) {
for (int i = 0; i < n; i++) {
printf("%d ", *(&(*vec) + i));
}
cout << endl;

}
void suma(int *vect1, int *vect2, int *vect3, int n) {
for (int i = 0; i < n; i++) {
(*(&(*vect3) + i)) = (*(&(*vect1) + i)) + (*(&(*vect2) + i));
}
}
bool esNumerico(string linea)
{
bool b = true;
int longitud = linea.size();
if (longitud == 0) { // Cuando el usuario pulsa ENTER
b = false;
}
else if (longitud == 1 && !isdigit(linea[0])) {
b = false;
}
else {
int i;
if (linea[0] == '+'|| linea[0] == '-')
i = 1;
else
i = 0;

while (i < longitud) {


if (!isdigit(linea[i])) {
b = false;
break;
}
i++;
}

return b;

void vectores() {
int *vect1, *vect2, *vect3, n;
bool a=NULL;
string linea;
do {
system("cls");
cout << "Ingrese Numero de elementos del vector: " <<
endl;
do{
cin >> linea;
if (linea[0] == '-') {
a = false;
}
else if (!esNumerico(linea)) {
a = false;
}
else
a = true;
} while (a==false);
n = atoi(linea.c_str());
vect1 = (int*)calloc(n, sizeof(int));
vect2 = (int*)calloc(n, sizeof(int));
vect3 = (int*)calloc(n, sizeof(int));
cout << "ingrese los datos del vector 1 : " << endl;
ingreso(vect1, n);
cout << "ingrese los datos del vector 2 : " << endl;
ingreso(vect2, n);
cout << "los datos del vector 1 son: " << endl;
impresion(vect1, n);
cout << "los datos del vector 2 son: " << endl;
impresion(vect2, n);
cout << "la suma es: " << endl;
suma(vect1, vect2, vect3, n);
impresion(vect3, n);
free(vect1);
free(vect2);
free(vect3);
system("pause");
} while (true);
}
int main()
{
vectores();
return 0;
}

// Ejercicio_2_MCD.cpp: archivo de proyecto principal.


#include
#include
#include
#include
#include

"stdafx.h"
<conio.h>
<stdio.h>
<iostream.>
"string"

using namespace std;


int MCD(int, int);
bool esNumerico(string );
void ingresar(int *);
void main() {
int numero1, numero2;
do {
cout << "Ingrese un numero: ";
ingresar(&numero1);
cout << "\nIngrese segundo numero: ";
ingresar(&numero2);
cout << "El MCD de los dos numeros es: " << MCD(numero1,
numero2)<<endl;
getch();
} while (true);
}
void ingresar(int *numero) {
string linea;
bool a;
do {
cin >> linea;
if (!esNumerico(linea)) {//compara si es un numero y entero
a == false;
cout << "ingrese un numero entero" << endl;
}
else
a = true;

} while (a == false);
*numero= atoi(linea.c_str());//el valor lo devuelve al puntero
}
int MCD(int n1, int n2) {
int temporal;
while (n2>0)
{
temporal = n1%n2;
n1 = n2;
n2 = temporal;
}
return n1;
}
bool esNumerico(string linea)
{
bool b = true;
int longitud = linea.size();
if (longitud == 0) {
b = false;//si
}
else if (longitud ==
b = false;//si

// Cuando el usuario pulsa ENTER


no se ingresa nada es falso
1 && !isdigit(linea[0])) {
solo hay un caracter pero no es un numero es

falso

}
else {
int i;
if (linea[0] == '+' || linea[0] == '-')//el primer caracter
puede ser un signo
i = 1;
else
i = 0;
while (i < longitud) {
if (!isdigit(linea[i])) {//compara si los caracteres son
digitos

}
}
}

return b;

}
i++;

b = false;
break;

Explicacion:
Primero el programa solicita el primer nmero, y llama a la funcin ingresar, esta
funcin leer lo que ingresemos por teclado como una cadena de caracteres y
entrara a comparar si es un numero entero con la funcin esNumerico, si este no
lo es se solicita que se lo vuelva a ingresar, una vez validado se transfiere el
valor ingresado a un entero, regresa y pide el segundo numero repitiendo el
procedimiento. Una vez que se tengan los 2 nmeros la funcin MCD entra a un
bucle que se repetir cuando el valor de n2 sea mayor a 0, obteniendo el mdulo
de n1y n2 y guardando en una variable temporal y al final devolver el MCD.
while (n2>0)
{

temporal = n1%n2;
n1 = n2;
n2 = temporal;

}
return n1;

Si ingresamos los nmeros 315 y 42 la operacin se realizara:


n1=315,n2=42,temporal=0

45>0? Si
Temporal=21
N1=42
N2=21

21>0? Si
Temporal=0
N1=21
N2=0

0>0? No
Return 21

// Ejercicio_3_ArchivosPlanos.cpp: archivo de proyecto principal.


#include "stdafx.h"
#include "iostream"
#include "stdlib.h"
#include "fstream"
#include "stdio.h"
#include "string"
using namespace std;
string crear();
void resultado(string);
bool esNumerico(string);
bool validarNombre(string);
int main()
{
string nombre1;
nombre1=crear();
resultado(nombre1);
system("pause");
return 0;
}
bool validarNombre(string nombre) {
int longitud = nombre.size();
for (int i = 0; i < longitud; i++) {
if (nombre[i] == '\\' | nombre[i] == '/' || nombre[i] == ':' |
nombre[i] == '*' | nombre[i] == '?' || nombre[i] == '"' | nombre[i] == '<'
| nombre[i] == '>') {
return false;
}

}
return true;

string crear() {
int num1, num2;
string nombre1;
bool a;
endl;

cout << "ingrese el nombre del archivo para guardar los datos" <<
do {

cin >> nombre1;


if (!validarNombre(nombre1)) {
cout << "ingrese un nombre valido no utilice \ / : * ? \"
< > | " << endl;
a = false;
}
else
a = true;
} while (!a);
ofstream writer(nombre1+".txt");
if (writer.is_open()) {
cout << "abierto correctamente" << endl;
cout << "ingrese el numero 1" << endl;
cin >> num1;
cout << "ingrese el numero 2" << endl;
cin >> num2;
writer << num1 << endl;
writer << num2 << endl;

writer.close();
}
else {
cout << "error" << endl;
}
return nombre1;
}
void resultado(string nombre1) {
int a, b, c;
string nombre2;
bool n;
endl;

cout << "ingrese el nombre del archivo para guardar los datos" <<
do {

cin >> nombre2;


if (!validarNombre(nombre2)) {
cout << "ingrese un nombre valido no utilice \ / : * ? \"
< > | " << endl;
n = false;
}
else
n = true;
} while (!n);
ifstream reader(nombre1+".txt");
if (reader.is_open()) {
reader >> a;
reader >> b;
c = a + b;
cout << "la suma de a y b es: " << c << endl;
reader.close();

}
else {
cout << "error" << endl;
}

ofstream writer(nombre2+".txt");
if (writer.is_open()) {
writer << "la suma es " << c << endl;
writer.close();
}
else {
cout << "error" << endl;
}

bool esNumerico(string linea)


{
bool b = true;
int longitud = linea.size();
if (longitud == 0) { // Cuando el usuario pulsa ENTER
b = false;//si no se ingresa nada es falso
}

else if (longitud == 1 && !isdigit(linea[0])) {


b = false;//si solo hay un caracter pero no es un numero es
falso

}
else {
int i;
if (linea[0] == '+' || linea[0] == '-')//el primer caracter
puede ser un signo
i = 1;
else
i = 0;
while (i < longitud) {
if (!isdigit(linea[i])) {//compara si los caracteres son
digitos

}
}
}

return b;

}
i++;

b = false;
break;

Vous aimerez peut-être aussi