domingo, 21 de septiembre de 2014
ESTRUCTURA ESTÁTICA DE DATOS
Estructura de Datos Estáticas:
Son aquellas en las que el tamaño ocupado en memoria se define antes de que el programa se ejecute y no puede modificarse dicho tamaño durante la ejecución del programa.
Estas estructuras están implementadas en casi todos los lenguajes.
Su principal característica es que ocupan solo una casilla de memoria, por lo tanto una variable simple hace referencia a un único valor a la vez, dentro de este grupo de datos se encuentra:
a)Enteros
b)Reales
c)Caracteres
d)Boléanos
e)Enumerados
f)Subrangos
Nota:Los últimos no existen en algunos lenguajes de programación.
Estructura de Datos Dinamicas:
No tienen las limitaciones o restricciones en el tamaño de memoria ocupada que son propias de las estructuras estáticas.
Mediante el uso de un tipo de datos especifico, denominado puntero, es posible construir estructuras de datos dinámicas que no son soportadas por la mayoría de los lenguajes, pero que en aquellos que si tienen estas características ofrecen soluciones eficaces y efectivas en la solución de problemas complejos.
Se caracteriza por el hecho de que con un nombre se hace referencia a un grupo de casillas de memoria.
Es decir un dato estructurado tiene varios componentes.
CLASIFICACIÓN DE LAS ESTRUCTURAS DE DATOS:
ESTRUCTURAS DE DATOS ESTÁTICAS
1.- Simples o primíticas
a) Boolean
b) Char
c) Integer
d) Real
2.- Compuestas
a) Arreglos
b) Conjuntos
c) Strings
d) registros
e) Archivos
ESTRUCTURA DE DATOS DINAMICAS
1.- Lineales
a) Pila
b) Cola
c) Lista
2.- No lineales
a) Árboles
b) Grafos
Son aquellas en las que el tamaño ocupado en memoria se define antes de que el programa se ejecute y no puede modificarse dicho tamaño durante la ejecución del programa.
Estas estructuras están implementadas en casi todos los lenguajes.
Su principal característica es que ocupan solo una casilla de memoria, por lo tanto una variable simple hace referencia a un único valor a la vez, dentro de este grupo de datos se encuentra:
a)Enteros
b)Reales
c)Caracteres
d)Boléanos
e)Enumerados
f)Subrangos
Nota:Los últimos no existen en algunos lenguajes de programación.
Estructura de Datos Dinamicas:
No tienen las limitaciones o restricciones en el tamaño de memoria ocupada que son propias de las estructuras estáticas.
Mediante el uso de un tipo de datos especifico, denominado puntero, es posible construir estructuras de datos dinámicas que no son soportadas por la mayoría de los lenguajes, pero que en aquellos que si tienen estas características ofrecen soluciones eficaces y efectivas en la solución de problemas complejos.
Se caracteriza por el hecho de que con un nombre se hace referencia a un grupo de casillas de memoria.
Es decir un dato estructurado tiene varios componentes.
CLASIFICACIÓN DE LAS ESTRUCTURAS DE DATOS:
ESTRUCTURAS DE DATOS ESTÁTICAS
1.- Simples o primíticas
a) Boolean
b) Char
c) Integer
d) Real
2.- Compuestas
a) Arreglos
b) Conjuntos
c) Strings
d) registros
e) Archivos
ESTRUCTURA DE DATOS DINAMICAS
1.- Lineales
a) Pila
b) Cola
c) Lista
2.- No lineales
a) Árboles
b) Grafos
PROGRAMA DE ARREGLO C++
#include <iostream>
const int fil=3;
const int col=3;
using namespace std;
int main()
{
int matriz [ fil][ col]={{-2,56,50},{44,12,34},{70,34,-4}};
int cPos=0, cNeg=0;
for (int f=0; f<fil; f++){
for (int c=0; c<col; c++){
if (matriz[f] [c]<0)
cNeg++;
else
cPos++;
}
}
cout << "TOTAL POSITIVO:"<< cPos<< endl;
cout <<"TOTAL NEGATIVO:"<< cNeg << endl;
return 0;
}
const int fil=3;
const int col=3;
using namespace std;
int main()
{
int matriz [ fil][ col]={{-2,56,50},{44,12,34},{70,34,-4}};
int cPos=0, cNeg=0;
for (int f=0; f<fil; f++){
for (int c=0; c<col; c++){
if (matriz[f] [c]<0)
cNeg++;
else
cPos++;
}
}
cout << "TOTAL POSITIVO:"<< cPos<< endl;
cout <<"TOTAL NEGATIVO:"<< cNeg << endl;
return 0;
}
CODIGO DE MATRIZ
#include <iostream>
using namespace std;
int main()
{
int matrix,rows,cols;
for(int i = 0; i < rows; i++) {
for(int j = 0; j < cols; j++) {
matrix[i][j] = i % j;
}
}
}
using namespace std;
int main()
{
int matrix,rows,cols;
for(int i = 0; i < rows; i++) {
for(int j = 0; j < cols; j++) {
matrix[i][j] = i % j;
}
}
}
PROGRAMA MATRIZBIDIMENCIONAL
#include <iostream>
#include <stdlib.h>
using namespace std;
int main(){
int matriz[10][10];
for(int i=0;i<10;i++)
for(int j=0;j<10;j++)
if(i==j)
matriz[i][j]=1;
else matriz[i][j]=0;
for(int i=0;i<10;i++){
for(int j=0;j<10;j++)
cout<<matriz[i][j]<<" ";
cout<<endl;}
system("pause");
return 0;
}
#include <stdlib.h>
using namespace std;
int main(){
int matriz[10][10];
for(int i=0;i<10;i++)
for(int j=0;j<10;j++)
if(i==j)
matriz[i][j]=1;
else matriz[i][j]=0;
for(int i=0;i<10;i++){
for(int j=0;j<10;j++)
cout<<matriz[i][j]<<" ";
cout<<endl;}
system("pause");
return 0;
}
viernes, 19 de septiembre de 2014
VECTORES
La estructura de la clase vector está pensada para operar con arreglos unidimensionales de datos, los elementos de un vector pueden ser manipulados de la misma manera en que se hace con las estructuras de arreglos (arrays) tradicionales en C, C++; es decir, los componentes de un vector pueden ser referenciados a través de un índice numérico, de la misma manera que en un arreglo cualquiera. Por ejemplo, si A es un objeto de vector, entonces la instrucción: A[0]; se refiere al componente 0 (primer elemento) de A. El resultado de todo esto es que usted puede navegar o iterar a través de los componentes de una lista haciendo uso de índices, o si lo prefiere a través de punteros iteradores. Si usted desea ver una lista completa de los métodos asociados a la clase vector siga éste enlace ( Tabla de métodos ), pero recuerde que no todos ellos serán cubiertos aquí.
Para comenzar, vamos a presentar un ejemplo sencillo, el cual consistirá en crear un vector de números de punto flotante. Al vector creado le agregaremos una serie de valores los cuales posteriormente serán sumados y desplegados en la pantalla del monitor. Para nuestro ejemplo vamos a emplear los métodos push_back (para agregar los números), size (para obtener el número de componentes en el vector), e iteraremos por medio de índices numéricos. Veamos.
Para comenzar, vamos a presentar un ejemplo sencillo, el cual consistirá en crear un vector de números de punto flotante. Al vector creado le agregaremos una serie de valores los cuales posteriormente serán sumados y desplegados en la pantalla del monitor. Para nuestro ejemplo vamos a emplear los métodos push_back (para agregar los números), size (para obtener el número de componentes en el vector), e iteraremos por medio de índices numéricos. Veamos.
// Demostracion del uso de un vector // probado en: Dev-C++ 4.9.9.2 #include <cstdlib> #include <iostream> #include <vector> using namespace std; int main(int argc, char *argv[]) { char buffer[80]; double suma; vector<double> v; v.push_back(999.25); v.push_back(888.50); v.push_back(777.25); suma = 0; for(int i = 0; i < v.size(); i++) { suma += v[i]; sprintf(buffer, "%10.2f", v[i]); cout << buffer << endl; } cout << "----------" << endl; sprintf(buffer, "%10.2f", suma); cout << buffer << endl; cin.get(); return EXIT_SUCCESS; }
De acuerdo con la referencia de ayuda de Dev-C++ es más seguro emplear el método at() en lugar el eperador [] para leer o escribir componentes en un vector, ya queat() no permite índices fuera del vector, y el operador [] sí. Por ejemplo, si V es un vector cuyo número de componentes es de 3, entonces la instrucción V[5]; es sumamente peligrosa ya que el índice 5 está fuera del rango (0 a 2 ) de los componentes de V; por otro lado, la instrucción V.at(5); también está fuera de rango, salvo que at() en lugar de leer o escribir el componente referenciado lanzará (throw) un error de excepción, de tal manera que en el programa se pueda controlar la condición de error por medio de un catch.
Programación en lenguaje C++
Objetivos
Unidad Tema Subtema Objetivos
VI Programación en lenguaje C++
6.1 Metodología de la programación
* Metodologías
* Diseños de algoritmos
*Creación de algoritmos
• Entender y aplicar los pasos a seguir en el planteamiento y la
solución de un problema de ingeniería.
• Conocer y aplicar las diferentes metodologías para diseñar la
solución de un problema.
• Conocer los tipos de variables que se utilizan en un lenguaje de
programación.
• Conocer las diferentes instrucciones en un lenguaje de programación
para la solución de problemas.
• Diseñar, programar en lenguaje diferentes problemas de aplicación
matemática.
6.2 Lenguaje C++
*Lenguajes de programación
* Entornos de programación. Compiladores
* Fundamentos del C++
• Conocer, entender y aplicar la estructura del lenguaje C++
6.3 Programación básica en C++
* Variables
* Entradas y salidas por consola
* Operadores
* Expresiones
* Control de flujo de programas
• Conocer, entender y aprender la sintaxis del lenguaje C++ para
diseñar programas para la resolución de problemas
sábado, 6 de septiembre de 2014
22. Que lea una cadena y diga cuantas mayúsculas hay.
#include
<stdio.h>
#include
<stdlib.h>
int
main(int argc, char *argv[])
{
int sum=0,x;
char frase[50];
printf("Introduzca
una frase: ");
gets(frase);
for(x = 0;x < 50;x++)
{
if
(frase[x]>=65 && frase[x]<=90)
{
sum++;
}
}
printf("\n\nEn la
frase hay %d mayúsculas\n\n",sum);
printf("\n\n");
system("PAUSE");
return 0;
}
21. Que lea una cadena y diga cuantas vocales hay.
#include
<stdio.h>
#include
<stdlib.h>
int
main(int argc, char *argv[])
{
int sum=0,x;
char frase[50];
printf("Introduzca
una frase: ");
gets(frase);
for(x = 0;x < 50;x++)
{
switch (frase[x])
{
case 'a':
sum++;
break;
case 'e':
sum++;
break;
case 'i':
sum++;
break;
case 'o':
sum++;
break;
case 'u':
sum++;
break;
default:
break;
}
}
printf("\n\nEn la
frase hay %d vocales\n\n",sum);
printf("\n\n");
system("PAUSE");
return 0;
}
20. Que lea una cadena y la muestre al revés.
#include
<stdio.h>
#include
<stdlib.h>
int
main(int argc, char *argv[])
{
int indice,x;
char frase[50];
printf("Introduzca
una frase: ");
gets(frase);
for(x = 0;x < 50;x++)
{
if (frase[x]=='\0')
{
indice=x;
break;
}
}
printf("La frase al
reves es: \n\n");
for(x = indice-1;x> =0;x--)
{
printf("%c",frase[x]);
}
printf("\n\n");
system("PAUSE");
return 0;
}
19. Que rellene una matriz de 3x3 y muestre su traspuesta (la traspuesta se consigue intercambiando filas por columnas y viceversa).
#include
<stdio.h>
#include
<stdlib.h>
int
main(int argc, char *argv[])
{
int x,y,num=0,
numeros[4][4];
for (x=0;x<3;x++)
{
for (y=0;y<3;y++)
{
numeros[x][y]=num;
num++;
}
}
printf("El array
original es: \n\n\n");
for(x = 0;x < 3;x++)
{
for(y = 0;y < 3;y++)
{
printf("
%d ", numeros[x][y]);
}
printf("\n\n\n");
}
printf("La
traspuesta es: \n\n\n");
for(x = 0;x < 3;x++)
{
for(y = 0;y < 3;y++)
{
printf("
%d ", numeros[y][x]);
}
printf("\n\n\n");
}
system("PAUSE");
return 0;
}
18. Que rellene un array de dos dimensiones con números pares, lo pinte y después que pida una posición X,Y y mostrar el número correspondiente.
#include
<stdio.h>
#include
<stdlib.h>
int
main(int argc, char *argv[])
{
int x,y,num=2,
numeros[3][3];
for (x=0;x<3;x++)
{
for (y=0;y<3;y++)
{
numeros[x][y]=num;
num=num*2;
}
}
printf("Introduzca
coordenada x: ");
scanf("%d",&x);
printf("Introduzca
coordenada y: ");
scanf("%d",&y);
printf("El número
es: %d\n",numeros[x][y]);
system("PAUSE");
return 0;
}
17. Que muestre los primeros 100 números de izquierda a derecha usando un array de dos dimensiones, la última fila a mostrará la suma de sus respectivas columnas.
#include
<stdio.h>
#include
<stdlib.h>
int main(int
argc, char *argv[])
{
int x,y,sum,
numeros[11][10];
for (y=0;y<10;y++)
{
sum=0;
for (x=0;x<10;x++)
{
numeros[x][y]=(x*10)+1+y;
sum=sum+numeros[x][y];
}
numeros[10][y]=sum;
}
for (x=0;x<11;x++)
{
for (y=0;y<10;y++)
{
printf("%d ",numeros[x][y]);
}
printf("\n");
}
system("PAUSE");
return 0;
}
16. Que muestre los primeros 100 números de izquierda a derecha usando un array de dos dimensiones.
#include
<stdio.h>
#include
<stdlib.h>
int
main(int argc, char *argv[])
{
int x,y,
numeros[10][10];
for (x=0;x<10;x++)
{
for (y=0;y<10;y++)
{
numeros[x][y]=(x*10)+1+y;
}
}
for (x=0;x<10;x++)
{
for (y=0;y<10;y++)
{
printf("%d ",numeros[x][y]);
}
printf("\n");
}
system("PAUSE");
return 0;
}
15. Que pinte un tablero de ajedrez, los peones con la letra P, las torres con T, los caballos con C, los alfiles con A, el rey con R y la reina con M.
#include
<stdio.h>
#include
<stdlib.h>
int
main(int argc, char *argv[])
{
int x,y;
for (x=0;x<8;x++)
{
for (y=0;y<8;y++)
{
//peones
if (x==1 || x==6)
{
printf("P");
}
//torres
else if ((x==0 && y==0) ||
(x==7 && y==0) ||
(x==0 && y==7) ||
(x==7 && y==7)
)
{
printf("T");
}
//caballos
else if ((x==0&& y==1) ||
(x==7 && y==1) ||
(x==0 && y==6) ||
(x==7 && y==6)
)
{
printf("C");
}
//alfiles
else if ((x==0 && y==2) ||
(x==7&& y==2) ||
(x==0 && y==5) ||
(x==7 && y==5)
)
{
printf("A");
}
//reina
else if ((x==0&& y==3) ||
(x==7 && y==3)
)
{
printf("M");
}
//rey
else if ((x==0 && y==4) ||
(x==7&& y==4)
)
{
printf("R");
}
else
{
printf(" ");
}
}
printf("\n");
}
system("PAUSE");
return 0;
}
14. Que rellene un array con 20 números y luego busque un número concreto.
#include
<stdio.h>
#include
<stdlib.h>
int
main(int argc, char *argv[])
{
int i,x=0,vector[20], n=20, dato, centro,inf=0,sup=n-1;
for (i=0;i<20;i++){
printf("Escriba un
número");
scanf("%d",&vector[i]);
}
printf("Escriba el
número a buscar");
scanf("%d",&dato);
while(inf<=sup)
{
centro=(sup+inf)/2;
if (vector[centro]==dato)
{
printf("Existe\n");
x=1;
break;
}
else if(dato < vector [centro] )
{
sup=centro-1;
}
else
{
inf=centro+1;
}
}
if (x==0)
{
printf("No existe\n");
}
system("PAUSE");
return 0;
}
13. Que mediante un array almacene números tanto positivos como negativos y los muestre ordenados.
#include
<stdio.h>
#include
<stdlib.h>
int main()
{
float sum, numeros1[10];
int
i;
sum=0;
for
(i=0;i<10;i++){
printf("Escriba un número");
scanf("%f",&numeros1[i]);
}
for(i=0;i<10;i++)
{
sum=sum+numeros1[i];
}
printf("%f\n",sum/10);
system("PAUSE");
return 0;
}
12. Que lea 10 números por teclado, los almacene en un array y muestre la media.
#include
<stdio.h>
#include
<stdlib.h>
int main()
{
float sum, numeros1[10];
int
i;
sum=0;
for
(i=0;i<10;i++){
printf("Escriba un número");
scanf("%f",&numeros1[i]);
}
for(i=0;i<10;i++)
{
sum=sum+numeros1[i];
}
printf("%f\n",sum/10);
system("PAUSE");
return 0;
}
11. Que rellene un array con los 100 primeros números pares y muestre su suma.
#include
<stdio.h>
#include
<stdlib.h>
int
main(void)
{
int x,cont,sum,i,tabla[100];
i=0;
sum=0;
for (x=1;x<=100;x++)
{
cont=0;
if (x%2==0)
{
tabla[i]=x;
i++;
}
}
for (x=0;x<i;x++)
{
sum=sum+tabla[x];
}
printf("%d\n",sum);
system("PAUSE");
return 0;
}
10. Que lea 5 números por teclado, los copie a otro array multiplicados por 2 y los muestre todos ordenados usando un tercer array.
#include
<stdio.h>
#include
<stdlib.h>
int main()
{
int aux, numeros1[5],numeros2[5],numeros3[10];
int i,j;
for
(i=0;i<5;i++){
printf("Escriba un número");
scanf("%d",&numeros1[i]);
}
for(i=0;i<5;i++)
{
numeros2[i]=numeros1[i]*2;
}
for(i=0;i<5;i++)
{
numeros3[i]=numeros1[i];
}
for(i=0;i<5;i++)
{
numeros3[5+i]=numeros2[i];
}
for
(i=0;i<10;i++){
printf("%d\n",numeros3[i]);
}
system("PAUSE");
return 0;
}
9. Que lea 5 números por teclado, los copie a otro array multiplicados por 2 y muestre el segundo array.
#include
<stdio.h>
#include
<stdlib.h>
int main()
{
int
aux, numeros1[5],numeros2[5];
int
i,j;
for
(i=0;i<5;i++){
printf("Escriba un número");
scanf("%d",&numeros1[i]);
}
for(i=0;i<5;i++)
{
numeros2[i]=numeros1[i]*2;
}
for
(i=0;i<5;i++){
printf("%d\n",numeros2[i]);
}
system("PAUSE");
return 0;
}
8. Que lea 10 números por teclado, 5 para un array y 5 para otro array distinto. Mostrar los 10 números en pantalla mediante un solo array.
#include <stdio.h>
#include
<stdlib.h>
int main()
{
int aux, numeros1[5],numeros2[5],numeros3[10];
int i,j;
for
(i=0;i<5;i++){
printf("Escriba
un número");
scanf("%d",&numeros1[i]);
}
for (i=0;i<5;i++){
printf("Escriba un número");
scanf("%d",&numeros2[i]);
}
for(i=0;i<5;i++)
{
numeros3[i]=numeros1[i];
}
for(i=0;i<5;i++)
{
numeros3[5+i]=numeros2[i];
}
for
(i=0;i<10;i++){
printf("%d\n",numeros3[i]);
}
system("PAUSE");
return 0;
}
7. Que lea 10 números por teclado, los almacene en un array y los ordene de forma ascendente.
#include
<stdio.h>
#include
<stdlib.h>
int main()
{
float aux, numeros[10];
int
i,j,n=10;
for (i=0;i<n;i++){
printf("Escriba un número");
scanf("%f",&numeros[i]);
}
for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
if(numeros[i]<numeros[j])
{
aux=numeros[i];
numeros[i]=numeros[j];
numeros[j]=aux;
}
}
}
for
(i=n-1;i>=0;i--){
printf("%f\n",numeros[i]);
}
system("PAUSE");
return 0;
}
6. Que lea 10 números por teclado, los almacene en un array y muestre la suma, resta, multiplicación y división de todos.
#include
<stdio.h>
#include
<stdlib.h>
int
main(void)
{
int x,tabla[10];
int sum,res,mul,div;
for (x=0;x<10;x++)
{
printf("Introduzca número\n");
scanf("%d",&tabla[x]);
}
sum=tabla[0];
res=tabla[0];
mul=tabla[0];
div=tabla[0];
for (x=1;x<10;x++)
{
sum=sum+tabla[x];
res=res-tabla[x];
mul=mul*tabla[x];
div=div/tabla[x];
}
printf("Suma: %d\n",sum);
printf("Resta: %d\n",res);
printf("Multiplicación: %d\n",mul);
printf("División: %d\n",div);
system("PAUSE");
return 0;
}
5. Que rellene un array con los números impares comprendidos entre 1 y 100 y los muestre en pantalla en orden ascendente.
#include
<stdio.h>
#include
<stdlib.h>
int
main(void)
{
int x,cont,z,i,tabla[100];
i=0;
for (x=1;x<=100;x++)
{
cont=0;
if (x%2==1)
{
tabla[i]=x;
i++;
}
}
for (x=0;x<i;x++)
{
printf("%d\n",tabla[x]);
}
system("PAUSE");
return 0;
}
4. Que rellene un array con los números pares comprendidos entre 1 y 100 y los muestre en pantalla en orden ascendente.
#include
<stdio.h>
#include
<stdlib.h>
int
main(void)
{
int x,cont,z,i,tabla[100];
i=0;
for (x=1;x<=100;x++)
{
cont=0;
if (x%2==0)
{
tabla[i]=x;
i++;
}
}
for (x=0;x<i;x++)
{
printf("%d\n",tabla[x]);
}
system("PAUSE");
return 0;
}
3. Que rellene un array con los números primos comprendidos entre 1 y 100 y los muestre en pantalla en orden ascendente.
#include
<stdio.h>
#include
<stdlib.h>
int
main(void)
{
int x,cont,z,i,tabla[100];
i=0;
for (x=1;x<=100;x++)
{
cont=0;
for (z=1;z<=x;z++)
{
if (x%z==0)
{
cont++;
}
}
if (cont==2 || z==1 || z==0)
{
tabla[i]=x;
i++;
}
}
for (x=0;x<i;x++)
{
printf("%d\n",tabla[x]);
}
system("PAUSE");
return 0;
}
2. Que rellene un array con los 100 primeros números enteros y los muestre en pantalla en orden descendente.
#include
<stdio.h>
#include
<stdlib.h>
int
main(void)
{
int x,tabla[100];
for (x=1;x<=100;x++)
{
tabla[x]=x;
}
for (x=100;x>=1;x--)
{
printf("%d\n",tabla[x]);
}
system("PAUSE");
return 0;
}
1. Que rellene un array con los 100
primeros números enteros y los muestre en pantalla en orden ascendente en c++.
#include
<stdio.h>
#include
<stdlib.h>
int
main(void)
{
int x,tabla[100];
for (x=1;x<=100;x++)
{
tabla[x]=x;
}
for (x=1;x<=100;x++)
{
printf("%d\n",tabla[x]);
}
system("PAUSE");
return 0;
}
Suscribirse a:
Entradas (Atom)