Vous êtes sur la page 1sur 22

Escuela Politcnica

Nacional
Programacin

Mara Fernanda Reyes


Mayte Carrera
Michelle Azogue

7.6 Complete las siguientes oraciones :


a) Los nombres de los cuatro elementos de un arreglo p ( int p[4];) son int p [0];
int p [1]; int p [2]; int p [3];
b) Al proceso de nombrar un arreglo, declarar su tipo y especificar el numero de
elementos se le conoce como estticas el arreglo.
c) por convencin, el primero subndice en un arreglo bidimensional identifica el (la)
fila de un elemento y el segundo identifica el (la) columna del elemento.
d) Un arreglo de m por n contiene m filas, n columnas y mxn elementos.
e) El nombre del elemento en la fila 3 y la columna 5 del arreglo d es A[3] [5]

7.8 Escriba instrucciones en C++ que realicen cada una de las siguientes
tareas;
a) mostrar el valor del elemento 6 del arreglo de caracteres f
#include <iostream>

using namespace std;


int main()
{
char alfabeto[27];
char letra;
int i;
for (letra='A', i = 0; letra <='Z'; letra++, i++)
alfabeto[i] = letra;
alfabeto[i] = NULL;
cout << "La posicion 6 es " << alfabeto[5];
return 0;
}

b) recibir un valor y colocarlo en el elemento 4 de un arreglo de punto


flotante unidimensional llamado b

#include <iostream>
using namespace std;

int main()
{
int valores[5];

// Declaracin del arreglo

int i;
valores[0] = 2;
valores[1] = 3;
valores[2] = 4;
valores[3] = 5;
valores[4] = 6;
valores[4] = 1;
cout << "el valor del arreglo 4 cambio a ";
cout << valores[4];
return 0;
}

c) Inicializar con 8 cada uno de los 5 elementos del arreglo unidimensional


g,
#include <iostream>
using namespace std;

int main()
{
int valores[5];
int i;

valores[1] = 8;

// Declaracin del arreglo

valores[2] = 8;
valores[3] = 8;
valores[4] = 8;
valores[5] = 8;
cout << valores[1];
cout << valores[2];
cout << valores[3];
cout << valores[4];
cout << valores[5];
return 0;
}

d) Sumar el total e imprimir los elementos del arreglo x de punto flotante


con 100 elementos
#include <iostream>
using namespace std;
int main()
{
int sqrs[100];
int i;
int suma;
for (i=1;i<100;i++) {
sqrs[i-1]=i;
}
for (i=0;i<100;i++) {
cout<<sqrs[i]<<endl;
}
suma=sqrs[i]+suma;
cout<<suma;

return 0;
}e) Copiar el arreglo a en la primera parte del arreglo b suponga que se
declara double a[11],b[34];
#include <iostream>
using namespace std;
int main()
{
int a[11], b[34];
for (int x=0; x<11; x++)
{
b[x]=a[x];
}

return 0;
}
f) Determinar e imprimir los valores menor y mayor contenidos en el
arreglo w con 99 elementos del punto flotante
#include <iostream>
using namespace std;
int main()
{
int w[99];
int mayor, menor, may, men;

mayor=0;
for(int i=0; i<99; i++)
{
menor=w[i];
if(menor>=mayor)
mayor=menor;

}
cout<<mayor<<endl;
men=mayor;
for(int i=0; i<99; i++)
{
may=w[i];
if(may<=men)
men=may;
}
cout<<men<<endl;

return 0;
}

7.10 Utilice un arreglo unidimensional para resolver el siguiente problema.


Una compaa paga a sus vendedores por comisin. Los vendedores
reciben $ 200 por semana mas 9% de sus ventas totales de esa semana por
ejemplo, un vendedor que acumule $5000 en ventas en una semana,
recibir $ 200 mas 9% de $5000, o un total de $650. Escriba un programa
(utilizando un arreglo de contadores) que determine cuantos vendedores
recibieron salarios en cada uno de los siguientes rangos (suponga que el
salario de cada vender se truca a una cantidad entera):
#include <iostream>
using namespace std;
int Tamano_Arreglo = 10;

int main()

float A[Tamano_Arreglo + 1];


int B[Tamano_Arreglo + 1], C[11] = {0};

int i, j, k;
float ventas;

cout<< "\n\nEste programa calcula los rangos en los que estan los salarios de los "
<<Tamano_Arreglo<<" empleados. "<<endl;
for ( i = 1; i <= Tamano_Arreglo; i++ )
{
cout<<endl<<endl<<endl<<"Introduzca las ventas del empleado numero " << i
<<endl;
cin>>ventas;
A[i] = (static_cast<float>(9)/100)*ventas + 200.00;
cout<< "El salario del empleado " << i << " es: " << A[i] <<endl;
B[i] = static_cast<int>( A[i] )/100;
}

for ( k = 1; k <= Tamano_Arreglo; k++ )


{
if ( B[k] < 10)
C[B[k]]++;
else
C[Tamano_Arreglo]++;
}

for ( j = 2; j <Tamano_Arreglo; j++ )

{
cout<<endl<< "Hay " << C[j] <<" empleados que cobran entre " << (j * 100) << " y ";
cout<< (( j + 1 ) * 100 ) - 1 << " Dolares " <<endl;
}

cout<<endl<<"Hay " << C[(Tamano_Arreglo)] << " empleados que cobran 1000 o
mas."<<endl<<endl<<endl;
return 0;
}

7.12
a) Despues de la primera pasada ,se garantiza que el umero mas grande
estar en el elemento Con la numeracin ms alta del arreglo despus de la
segunda pasada los dos nmeros ms altos estarn acomodados y as en lo
sucesivo en lugar de realizar 9 comparaciones en cada pasada modifique el
ordenamiento de la burbuja para que realice 8 comparaciones en la
segunda pasada 7 en la tercera y as sucesivo
#include <iostream>

using namespace std;


enum { Tamano = 9};
// Cambiar la variable Tamano para ordenar una
// cantidad diferente de datos

/*Prototipo de funcion Imprime */


void Imprime( int A[]);

/*prototipo de funcion Recibe */


void Recibe ( int B[]);

/*Prototipo de funcion Burbuja */


void Burbuja( int C[]);

// Cierra main

//FUNCION IMPRIME

void Imprime( int A[] )


{

// Abre la funcion Imprime

for ( int j = 0; j < Tamano; j++ )


{

// Abre for

cout << "\t" << A[j];

if ( 0 == j + 1 % 10)
cout <<endl <<endl;

// Cierra for

cout <<endl <<endl;


}

// Cierra la funcion Imprime

//FUNCION RECIBE
void Recibe( int B[] )
{

// Abre funcion Recibe

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


{

// Abre for

cout << "\nIntroduzca el elemento " << i + 1 << " del arreglo: " << endl;
cin >> B[i];
}

// Cierra funcion Recibe

//FUNCION BURBUJA
void Burbuja( int C[])
{

// Abre funcion Burbuja

int temporal;

for ( int m = 0; m < Tamano - 1; m++ )


for ( int n = 0; n <= Tamano - 1; n++ )
{ // Abre for

if ( C[n] > C[n + 1] )


{ // Abre if
temporal = C[n];
C[n] = C[n + 1];
C[n + 1] = temporal;

} // Cierra if
}

//Cierra for

int main()
{
// Abre main

int Arreglo[Tamano] = {0, 0};


// El Arreglo se ha inicializado a 0

cout <<"\nEste programa recibe una serie de %d numeros enteros" << Tamano;
cout <<" y los ordena por medio del algoritmo de ordenacion burbuja. "<< endl;

/*Se llena el arreglo mediante un llamado a la funcion Recibe*/


Recibe(Arreglo);

/*Se imprime el arreglo con las entradas en el orden original */


cout <<"\nEsta es el orden en que se introdujeron los elementos: " <<endl;
Imprime(Arreglo);

/*Se ordena el arreglo mediante una llamada a la funcion Burbuja*/


Burbuja(Arreglo);

/*Se imprime el arreglo ordenado */


cout <<" Este es el orden despues de el ordenamiento burbuja. " <<endl;
Imprime(Arreglo);

return 0;
}
b)
#include <iostream>

using namespace std;


enum { Tamano = 9};
// Cambiar la variable Tamano para ordenar una
// cantidad diferente de datos

/*Prototipo de funcion Imprime */

void Imprime( int A[]);

/*prototipo de funcion Recibe */


void Recibe ( int B[]);

/*Prototipo de funcion Burbuja */


void Burbuja( int C[]);
// Cierra main

//FUNCION IMPRIME

void Imprime( int A[] )


{

// Abre la funcion Imprime

for ( int j = 0; j < Tamano; j++ )


{

// Abre for

cout << " t" << A[j];

if ( 0 == j + 1 % 9)
cout <<endl <<endl;

// Cierra for

cout <<endl <<endl;


}

// Cierra la funcion Imprime

//FUNCION RECIBE

void Recibe( int B[] )


{

// Abre funcion Recibe

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


{

// Abre for

cout << "Introduzca el elemento " << i + 1 << " del arreglo: " << endl;
cin >> B[i];
}
}

// Cierra funcion Recibe

///////////////////////////////////////////////
//FUNCION BURBUJA
/////////////////////////////////////////////////

void Burbuja( int C[])


{

// Abre funcion Burbuja

int temporal;

for ( int m = 0; m < Tamano - 1; m++ )


for ( int n = 0; n <= Tamano - 1; n++ )
{ // Abre for

if ( C[n] > C[n + 1] )


{ // Abre if

temporal = C[n];
C[n] = C[n + 1];
C[n + 1] = temporal;

} // Cierra if
}

//Cierra for

int main()
{
// Abre main

int Arreglo[Tamano] = {0, 0};


// El Arreglo se ha inicializado a 0

cout <<" Este programa recibe una serie de numeros enteros" << Tamano;
cout <<" y los ordena por medio del algoritmo de ordenacion burbuja. "<< endl;

/*Se llena el arreglo mediante un llamado a la funcion Recibe*/


Recibe(Arreglo);

/*Se imprime el arreglo con las entradas en el orden original */


cout <<"\nEsta es el orden en que se introdujeron los elementos: " <<endl;
Imprime(Arreglo);

/*Se ordena el arreglo mediante una llamada a la funcion Burbuja*/


Burbuja(Arreglo);

/*Se imprime el arreglo ordenado */


cout <<" Este es el orden despues de el ordenamiento burbuja. " <<endl;
Imprime(Arreglo);

return 0;
}
7.14 Encuentre el (los) errores en cada una de las siguientes instrucciones:
a) Asuma que char str [5];
cin>>str; // el usuario escribe hola
char str [4];
cin>>str; // el usuario escribe hola
b)
int a [3];
cout<<a [1]<<" "<< a [2]<<" "<<a [3]<<endl;
c)
double f [4]={1.1,10.01,100.001,1000.0001};
d)
double d [2][10];
d[2][10]=2.345;

7.16 Etiquete los elementos del arreglo bidimensional ventas de 3 por 5


para indicar el orden en el que se establecen en cero, mediante el siguiente
fragmento de programa
#include <iostream>
using namespace std;
int main()
{
int matriz[5][3], i, j;
for (i = 0; i < 5; i++)
for (j = 0; j < 3; j++)

matriz[i][j] = 0;
cout<<matriz[i][j]<<endl;
return 0; }
7.18 Qu hace el siguiente programa?
#include <iostream>

using namespace std;

int queEsEsto( int b[],int tamanio)


{
if (tamanio ==1)
return b[0];
else
return b[tamanio-1]+ queEsEsto(b, tamanio-1);

int main()
{
const int tamanioArreglo=10;
int a[tamanioArreglo]={1,2,3,4,5,6,7,8,9,10};
int resultado= queEsEsto(a,tamanioArreglo);
cout<<"El resultado es "<<resultado<<endl;

return 0;

7.32.- .Escriba una funcin llamada probarpolindromo, que


devuelva true si la cadena almacenada en el arreglo es un
palndromo, y false en caso contrario. El mtodo debe ignorar
espacios y puntuacin.
#include <iostream>
#include <string.h>
using namespace std;
bool probarpalindromo(char palabra[],int ini,int fin)
{
if(ini>=fin)
return true;
if (palabra[ini]==palabra[fin])
probarpalindromo (palabra ,ini+1,fin-1);
else return false;
}
int main()
{

char palabra[50];
int tam;
bool pala;
cout << " *******POLINDROMA ********" << endl;
cout << "INGRESE LA PALABRA A PROBAR" << endl;
cin.getline(palabra,50);
tam=strlen(palabra);
pala =probarpalindromo(palabra,0,tam-1);
if (pala==true)
cout<<"la palabra es polindroma "<<endl;
else
cout<<"la palabra no es polindroma "<<endl;
return 0;
}

7.34. Modifique el programa de las ocho reinas que creo en el 7.26


para resolver el programa en forma recursiva
#include <iostream>
#include <fstream>
using namespace std;
class reina{
public:
bool **validar;
char **tablero;
fstream enter;
int contador;
int N;
reina(int n){
N = n;
validar = new bool*[N];
tablero = new char*[N];
for(int i=0; i<N; i++){
validar[i] = new bool[N];
tablero[i] = new char[N];
for(int j=0; j<N; j++){
validar[i][j] = false;
tablero[i][j] = '.';
}
}
enter.open("solucionR.txt", fstream::out);
enter << "Soluciones en tablero de " << N << "*"<< N <<endl<<endl;
contador = 0;
}
void solucion(int x, int y, int n){

tablero[x][y] = 'R';
bloquear(x, y);
if(n==N) mostrar();
else{
for(int i=0; i<N; i++){
if(validar[i][y+1]==false) solucion(i, y+1, n+1);
}
}
quitarRellenar(x, y);
}
void bloquear(int x, int y){
int aux1, aux2;
//horizontal
aux2 = y;
aux1 = 0;
while(aux1<N){
validar[aux1][aux2] = true;
aux1++;
}
//vertical
aux2 = 0;
aux1 = x;
while(aux2<N){
validar[aux1][aux2] = true;
aux2++;
}
//diagonal negativa
aux1 = x; aux2 = y;
while(aux1>0 && aux2>0){
aux1--; aux2--;
}
aux1++; aux2++;
while(aux1<N && aux2<N){
validar[aux1][aux2] = true;
aux1++; aux2++;
}
//diagonal positiva
aux1 = x; aux2 = y;
while(aux1<N && aux2>0){
aux1++; aux2--;
}
aux1--; aux2++;
while(aux1>=0 && aux2<N){
validar[aux1][aux2] = true;
aux1--; aux2++;
}
}

void quitarRellenar(int x, int y){


tablero[x][y] = '.';
for(int i=0; i<N; i++){
for(int j=0; j<N; j++){
validar[i][j] = false;
}
}
for(int i=0; i<N; i++){
for(int j=0; j<N; j++){
if(tablero[i][j]=='R') bloquear(i, j);
}
}
}
void mostrar(){
contador++;
enter << "Solucion N# "<< contador <<endl;
for(int i=0; i<N; i++){
for(int j=0; j<N; j++){
enter << tablero[i][j] << " ";
}
enter <<endl;
}
enter <<endl;
}
void todoSol(){
for(int i=0; i<N; i++){
solucion(i, 0, 1);
}
enter.close();
}
};
int main(){
int n;
cout <<"Introduzca numero de reinas"<<endl;
cin >> n;
reina *Queen = new reina(n);
Queen->todoSol();
cout <<"Se ha creado el archivo 'solucionR'"<<endl;
return 0;
}
7.36.-Escriba un funcin recursiva llamada cadenainversa que
reciba un arreglo de caracteres que contenga una cadena y un
subndice inicial con argumentos imprima la cadena en forma
inversa y no devuelva nada. La funcin dejara de procesar y deber
regresar al encontrar la cadena nula de terminacin

#include <iostream>
#include <stdlib.h>
using namespace std;
int convertir(char *c){
int i;
for(i=0;c[i]!='#'&&c[i]!='\0';i++)
if(c[i]>64&&c[i]<91)
c[i]=c[i]+32;
else c[i]=c[i]-32;
return i-1;
}
void cadenainversa(char *c,int i,int t)
{
if(!(i*2>=t)){
char aux;
aux=c[i];
c[i]=c[t-i];
c[t-i]=aux;
cadenainversa(c,i+1,t);}
}

int main(void){
char c[50];
int i;
cout<<"Ingrese la cadena: "<<endl;
cin>>c;
i=convertir(c);
cadenainversa(c,0,i);
cout<<"Cadena invertida: "<<endl;
cout<<c<< endl;
return 0;
}
7.40. Modifique su solucin al ejercicio 7.37 para bsucar el valor
mnimo de un vector
#include <iostream>
using namespace std;
int main()
{
int vector[10];
int i;
for (i=0; i<10; i++){
cout<< "ingrese 10 numeros enteros."<<endl;
cin>> vector[i];
}
int menor = vector[0];
for (i=0; i<10; i++)
{
if (vector[i]< menor)
menor=vector[i];

}
cout<<"el menor numero del vector es "<<menor;

return 0;
}

Vous aimerez peut-être aussi