Ejemplo de punteros a estructuras
#include "stdafx.h"
#include "iostream"
#include "conio.h"
#include "string"
using namespace std;
struct Alumno
{
string nombre;
double nota;
};
void ingresoDatos(Alumno *p,int n)
{
for(int i=0;i<n;i++)
{
cout<<"Nombre "<<i+1<<": ";cin>>(*p).nombre;
do{
cout<<"Nota: ";cin>>(*p).nota;
}while((*p).nota<0 || (*p).nota>20);
p++;
cout<<endl;
}
}
void mostrarLista(Alumno *p,int n)
{
cout<<endl<<"Lista:"<<endl<<endl;
cout<<"Nombre:\t\tNota:"<<endl<<endl;
for(int i=0;i<n;i++)
{
cout<<(*p).nombre<<"\t\t"<<(*p).nota<<endl;
p++;
}
}
void main()
{
int n;
cout<<"Cantidad de alumnos: ";cin>>n;
Alumno *alumnos = new Alumno [n];
cout<<endl;
ingresoDatos(alumnos,n);
mostrarLista(alumnos,n);
_getch();
}
Mostrando entradas con la etiqueta Punteros. Mostrar todas las entradas
Mostrando entradas con la etiqueta Punteros. Mostrar todas las entradas
viernes, 16 de septiembre de 2011
Punteros a matrices
Ejemplo de punteros a matrices
#include "stdafx.h"
#include "iostream"
#include "conio.h"
using namespace std;
int tamaño()
{
int aux;
do{
cin>>aux;
}while(aux<=0 || aux>10);
return aux;
}
int ** crearMatriz(int fil, int col)
{
int **M=NULL;
int i, j;
int mem=1; /* flag para indicar que hay memoria para todas las filas */
M=(int **)calloc(fil, sizeof(int *));
/* se reserva memoria para la tabla de punteros intermedia */
if (M!=NULL)
{
for (i=0; i<fil && mem; i++)
{
if ((M[i]=(int *) calloc(col, sizeof(int)))==NULL)
{
mem=0;
}
}
if (!mem) {
for(j=0; j<i-1; j++){
free (M[j]);
}
free (M);
M=NULL; /* si no hay memoria se devuelve NULL */
}
}
return M;
}
void llenarMatriz(int **p,int fil,int col)
{
for(int i=0;i<fil;i++)
{
cout<<endl;
for(int j=0;j<col;j++)
{
cout<<"V["<<i+1<<"]["<<j+1<<"] = ";
cin>>(*p)[j];
}
p++;
}
}
void mostrarMatriz(int **p,int fil,int col)
{
for(int i=0;i<fil;i++)
{
cout<<endl;
for(int j=0;j<col;j++)
cout<<(*p)[j]<<" ";
p++;//Tambien podemos aumentar el valor de *p en otra línea de código
}
}
int mayorValor(int **p,int fil,int col)
{
int max=-99999;
for(int i=0;i<fil;i++)
{
for(int j=0;j<col;j++)
if((*p)[j]>max)
max=(*p)[j];
p++;
}
return max;
}
int menorValor(int **p,int fil,int col)
{
int min=99999;
for(int i=0;i<fil;i++)
{
for(int j=0;j<col;j++)
if((*p)[j]<min)
min=(*p)[j];
p++;
}
return min;
}
double promedio(int **p,int fil,int col)
{
double suma=0;
for(int i=0;i<fil;i++)
{
for(int j=0;j<col;j++)
{
suma+=(*p)[j];
}
p++;
}
return suma/(fil*col);
}
void ordenar(int **p,int fil,int col)
{
int aux;
for(int i=0;i<fil;i++)
{
for(int j=0;j<col-1;j++)
{
for(int k=j+1;k<col;k++)
{
if((*p)[j]>(*p)[k])
{
aux=(*p)[j];
(*p)[j]=(*p)[k];
(*p)[k]=aux;
}
}
}
p++;
}
}
void main()
{
int fil,col;
cout<<"Nro de filas: ";
fil=tamaño();
cout<<"Nro de Columnas: ";
col=tamaño();
int **M = crearMatriz(fil,col);
llenarMatriz(M,fil,col);
cout<<endl<<"Esta es su matriz: "<<endl;
mostrarMatriz(M,fil,col);
cout<<endl<<endl<<"Mayor Valor es "<<mayorValor(M,fil,col)<<endl;
cout<<"Menor Valor es "<<menorValor(M,fil,col)<<endl;
cout<<"Promedio es "<<promedio(M,fil,col)<<endl;
ordenar(M,fil,col);
cout<<endl<<"Matriz Ordenada:"<<endl;
mostrarMatriz(M,fil,col);
_getch();
}
#include "stdafx.h"
#include "iostream"
#include "conio.h"
using namespace std;
int tamaño()
{
int aux;
do{
cin>>aux;
}while(aux<=0 || aux>10);
return aux;
}
int ** crearMatriz(int fil, int col)
{
int **M=NULL;
int i, j;
int mem=1; /* flag para indicar que hay memoria para todas las filas */
M=(int **)calloc(fil, sizeof(int *));
/* se reserva memoria para la tabla de punteros intermedia */
if (M!=NULL)
{
for (i=0; i<fil && mem; i++)
{
if ((M[i]=(int *) calloc(col, sizeof(int)))==NULL)
{
mem=0;
}
}
if (!mem) {
for(j=0; j<i-1; j++){
free (M[j]);
}
free (M);
M=NULL; /* si no hay memoria se devuelve NULL */
}
}
return M;
}
void llenarMatriz(int **p,int fil,int col)
{
for(int i=0;i<fil;i++)
{
cout<<endl;
for(int j=0;j<col;j++)
{
cout<<"V["<<i+1<<"]["<<j+1<<"] = ";
cin>>(*p)[j];
}
p++;
}
}
void mostrarMatriz(int **p,int fil,int col)
{
for(int i=0;i<fil;i++)
{
cout<<endl;
for(int j=0;j<col;j++)
cout<<(*p)[j]<<" ";
p++;//Tambien podemos aumentar el valor de *p en otra línea de código
}
}
int mayorValor(int **p,int fil,int col)
{
int max=-99999;
for(int i=0;i<fil;i++)
{
for(int j=0;j<col;j++)
if((*p)[j]>max)
max=(*p)[j];
p++;
}
return max;
}
int menorValor(int **p,int fil,int col)
{
int min=99999;
for(int i=0;i<fil;i++)
{
for(int j=0;j<col;j++)
if((*p)[j]<min)
min=(*p)[j];
p++;
}
return min;
}
double promedio(int **p,int fil,int col)
{
double suma=0;
for(int i=0;i<fil;i++)
{
for(int j=0;j<col;j++)
{
suma+=(*p)[j];
}
p++;
}
return suma/(fil*col);
}
void ordenar(int **p,int fil,int col)
{
int aux;
for(int i=0;i<fil;i++)
{
for(int j=0;j<col-1;j++)
{
for(int k=j+1;k<col;k++)
{
if((*p)[j]>(*p)[k])
{
aux=(*p)[j];
(*p)[j]=(*p)[k];
(*p)[k]=aux;
}
}
}
p++;
}
}
void main()
{
int fil,col;
cout<<"Nro de filas: ";
fil=tamaño();
cout<<"Nro de Columnas: ";
col=tamaño();
int **M = crearMatriz(fil,col);
llenarMatriz(M,fil,col);
cout<<endl<<"Esta es su matriz: "<<endl;
mostrarMatriz(M,fil,col);
cout<<endl<<endl<<"Mayor Valor es "<<mayorValor(M,fil,col)<<endl;
cout<<"Menor Valor es "<<menorValor(M,fil,col)<<endl;
cout<<"Promedio es "<<promedio(M,fil,col)<<endl;
ordenar(M,fil,col);
cout<<endl<<"Matriz Ordenada:"<<endl;
mostrarMatriz(M,fil,col);
_getch();
}
Punteros a vectores
Ejemplo de punteros a vectores
#include "stdafx.h"
#include "iostream"
#include "conio.h"
using namespace std;
void tamaño(int *n)
{
cout<<"Numero de elementos: ";cin>>*n;
}
void llenarVector(int *p,int n)//*p sería es la posición de memoria del vector y corresponde al primer elemento
{
for(int i=0;i<n;i++)
{
cout<<"V["<<i+1<<"] = ";
cin>>*(p+i);//Para desplazarnos a los siguientes elementos del vector basta hacer *(p+i) donde i aumenta de 0 a n
}
}
void mostrarVector(int *p,int n)
{
for(int i=0;i<n;i++)
cout<<endl<<"V["<<i+1<<"] = "<<*(p+i);
}
int mayorValor(int *p,int n)
{
int max=-99999;//Un valor muy bajo
for(int i=0;i<n;i++)
{
if(*(p+i)>max)
max=*(p+i);
}
return max;
}
int menorValor(int *p,int n)
{
int min=99999;//un valor muy alto
for(int i=0;i<n;i++)
{
if(*(p+i)<min)
min=*(p+i);
}
return min;
}
double promedio(int *p,int n)
{
double suma=0;
for(int i=0;i<n;i++)
{
suma+=*(p+i);
}
return suma/n;
}
void ordenar(int *p,int n)
{
int aux;
for(int i=0;i<n-1;i++)
{
for(int j=i+1;j<n;j++)
{
if(*(p+i)>*(p+j))
{
aux=*(p+i);
*(p+i)=*(p+j);
*(p+j)=aux;
}
}
}
}
void main()
{
int n;
tamaño(&n); //Le enviamos la posición de memoria de la variable n
int *V = new int [n];
cout<<endl;
llenarVector(V,n);
cout<<endl<<"Mayor Valor es "<<mayorValor(V,n)<<endl;
cout<<"Menor Valor es "<<menorValor(V,n)<<endl;
cout<<"Promedio es "<<promedio(V,n)<<endl;
cout<<"Vector ordenado:"<<endl;
ordenar(V,n);
mostrarVector(V,n);
_getch();
}
#include "stdafx.h"
#include "iostream"
#include "conio.h"
using namespace std;
void tamaño(int *n)
{
cout<<"Numero de elementos: ";cin>>*n;
}
void llenarVector(int *p,int n)//*p sería es la posición de memoria del vector y corresponde al primer elemento
{
for(int i=0;i<n;i++)
{
cout<<"V["<<i+1<<"] = ";
cin>>*(p+i);//Para desplazarnos a los siguientes elementos del vector basta hacer *(p+i) donde i aumenta de 0 a n
}
}
void mostrarVector(int *p,int n)
{
for(int i=0;i<n;i++)
cout<<endl<<"V["<<i+1<<"] = "<<*(p+i);
}
int mayorValor(int *p,int n)
{
int max=-99999;//Un valor muy bajo
for(int i=0;i<n;i++)
{
if(*(p+i)>max)
max=*(p+i);
}
return max;
}
int menorValor(int *p,int n)
{
int min=99999;//un valor muy alto
for(int i=0;i<n;i++)
{
if(*(p+i)<min)
min=*(p+i);
}
return min;
}
double promedio(int *p,int n)
{
double suma=0;
for(int i=0;i<n;i++)
{
suma+=*(p+i);
}
return suma/n;
}
void ordenar(int *p,int n)
{
int aux;
for(int i=0;i<n-1;i++)
{
for(int j=i+1;j<n;j++)
{
if(*(p+i)>*(p+j))
{
aux=*(p+i);
*(p+i)=*(p+j);
*(p+j)=aux;
}
}
}
}
void main()
{
int n;
tamaño(&n); //Le enviamos la posición de memoria de la variable n
int *V = new int [n];
cout<<endl;
llenarVector(V,n);
cout<<endl<<"Mayor Valor es "<<mayorValor(V,n)<<endl;
cout<<"Menor Valor es "<<menorValor(V,n)<<endl;
cout<<"Promedio es "<<promedio(V,n)<<endl;
cout<<"Vector ordenado:"<<endl;
ordenar(V,n);
mostrarVector(V,n);
_getch();
}
Suscribirse a:
Entradas (Atom)