Paradigmas
de Vida
Linguísticos
Sistémico
Matemáticos
PARADIGMA: La inspiración existe..
pero debe encontrarte trabajando..!! ( Pablo Picasso )

A S P
Basic
Builder
C++ C#
Delphi
Fox
Haskell
HTML
Java
PHP
Small
UML

Bienvenido al mundo paradigmático..!!
| Vector | Matriz | Fibonacci
MATRICES y VECTORES en C++BUILDER

Para no entrar en una aburrida teorización, vayámos al grano..!!! y para ello sigue los siguientes pasos

//////////////////////////////////////////
// C ++ Visual            Wilo Carpio
//        MANEJO DE MATRICES
//////////////////////////////////////////
#include vcl\dialogs.hpp>

///////////////////////////////////////////
//  Declaración de Tipos de Datos Globales
///////////////////////////////////////////

const char   Titulo[] = "MANEJO DE MATRICES  Visual C++   Wilo Carpio";
const char     Raya[] = "=============================";
const char    Datos[] = "\n\t Datos de la matríz \n";
const char Calculos[] = "\n\n\t Cálculos Numéricos \n";
const char SaltoRenglon = '\n';

int i,j,n,m,s,Mayor,Menor,Suma;
int matriz[20][20];
float Promedio;

FUNCIONES: ESTRUCTURAS C++BUILDER


La estructura basica en un programa en C++ Builder tiene la siguiente estructura sintáctica

/////////////////////////////////////
//  Estructuras de las funciones
/////////////////////////////////////
int LeerFilas()
{
  AnsiString ValorFilas;
  char Filas;
  ValorFilas = InputBox("REGISTRO DE FILAS de A(m,n) ","Digita Nº de filas: Hasta m = 20  ","2");
  Filas = atoi(ValorFilas.c_str());
 return Filas;
}

int LeerColumnas()
{
  AnsiString ValorColumnas;
  char Columnas;
  ValorColumnas = InputBox("REGISTRO DE FILAS de A(m,n) ","Digita Nº de columnas: Hasta n = 20  ","2");
  Columnas = atoi(ValorColumnas.c_str());
 return Columnas;
}

int LeerElemento()
{
  AnsiString ValorElemento;
  char Elemento;
  ValorElemento = InputBox("INGRESO DE ELEMENTOS de A(m,n) ","Digita valor del elemento ","2");
  Elemento = atoi(ValorElemento.c_str());
 return Elemento;
}

int Seguir()
{
  AnsiString Valor;
  char Si;
  Valor = InputBox("DESEAS CONTINUAR ","Para SALIR -> 0  ","0");
  Si = atoi(Valor.c_str());
 return Si;
}

FUNCIONES en C++BUILDER: MAIN


La función en C++ Builder tiene la siguiente estructura sintáctica

///////////////////////////////////////////////
//             FUNCION PRINCIPAL
///////////////////////////////////////////////
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
  //////////////////////////////
  //    Variables Locales
  //////////////////////////////

  //////////////////////////////
  //    Bucle Operativo
  //////////////////////////////
  do
  {

FUNCIONES en C++BUILDER: ALTAS


Observa el manejo de las filas y las columnas

    //////////////////////////////
    //    Ingreso de Datos
    // Aplicación de la función
    //////////////////////////////
    m = LeerFilas();
    n = LeerColumnas();

    /////////////////////////////////////////////
    // Carga del valor de cada elemento
    /////////////////////////////////////////////
    for(j=1;j<=m;j++)
       for(i=1;i<=n;i++)
	 {
	  matriz[i][j]=LeerElemento();
	 };
    

FUNCIONES en C++BUILDER: OPERACIONES


Asignaciones, bucles y todas esas cosas..


    /////////////////////////////////////////////
    //  Si el dato ingreasado es mayor que cero
    //  muestra la matriz, sino termina el programa
    ////////////////////////////////////////////
    if (m>0)
      {
       //////////////////////////////
       //    Cálculos
       //////////////////////////////
        Mayor=0;
        Menor=matriz[1][1];
        Suma=0;
        for(j=1;j<=m;j++)
          for(i=1;i<=n;i++)
            {
             if (matriz[i][j]>Mayor)
         	     Mayor=matriz[i][j];
             if (matriz[i][j] < Menor)
	             Menor=matriz[i][j];
                 Suma=Suma+matriz[i][j];
            };
        Promedio=Suma/(m*n);

VER PARA CREER

Para simplificar solo usaremos el fomulario Message...!!


       /////////////////////////////////
       //  Salidas por Monitor  A(m,n)
       ////////////////////////////////

       ShowMessage
       (
        Titulo + AnsiString(SaltoRenglon) + Raya + Datos
        +" \ n Número de Filas    = " + AnsiString(AnsiString(j-1))
        +" \ n Número de Columnas = " + AnsiString(AnsiString(i-1))
        +" \ n Primer elemento  A(1,1) = " + AnsiString(matriz[1][1])
        +" \ n Ultimo elemento A("+AnsiString(j-1) + ","+AnsiString(i-1)+") = "+ AnsiString(matriz[i-1][j-1])
        + Calculos
        +" \ n Mayor elemento    = "+ AnsiString(Mayor)
        +" \ n Menor elemento    = "+ AnsiString(Menor)
        +" \ n Promedio Valores  = "+ AnsiString(Promedio)
       );
      }
   s= Seguir();
  }
  while (s !=0);
  return 0;
}
MANEJO DE MATRICES: SERIE DE FIBONACCI
Volver al principio | Altas | Generación |

Para que la cosa sea más divertida te propongo que los términos de dicha serie se transformen en los elementos de una matríz cuadrada..!!


/////////////////////////////////////////////////
// C++ Builder                  Wilo Carpio
//         MATRICES Y BIBONACCI
/////////////////////////////////////////////////
#include 
#pragma hdrstop
#include "DinoProy.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"

/////////////////////////////////////////////////
// Declaracion de Variables Globales
/////////////////////////////////////////////////
int mimatriz[5][5];
int mivector[5];
int fila,columna,grado,ant1=1,ant2=2;

/////////////////////////////////////////////////
// Prototipo del formulario
/////////////////////////////////////////////////
Tmiformulario *miformulario;

/////////////////////////////////////////////////
// Activando el formulario
/////////////////////////////////////////////////
__fastcall Tmiformulario::Tmiformulario(TComponent* Owner)
        : TForm(Owner)
{
}

/////////////////////////////////////////////////
// Cerrando el programa
/////////////////////////////////////////////////
void __fastcall Tmiformulario::botonsalirClick(TObject *Sender)
{
  if (Application->MessageBox("¿Queres cerrar el Sistema?", "Fin del Programa", MB_OKCANCEL+MB_DEFBUTTON1|MB_ICONQUESTION)== IDOK)
  {
   Close();
  }
}

/////////////////////////////////////////////////
// Cancelando generación de matríz
/////////////////////////////////////////////////
void __fastcall Tmiformulario::botoncancelarClick(TObject *Sender)
{
 boxdato->Clear();
}
ALTAS: Ingreso de datos

El único dato que requieres es el grado de la matríz donde debes almacenar tu serie de Fibonacci


		/////////////////////////////////////////////////
		// Ingreso del grado de la matríz
		/////////////////////////////////////////////////
		void __fastcall Tmiformulario::botoninicioClick(TObject *Sender)
		{
		 if (botoninicio->Caption=="Inicio")
		  {
		   boxdato->Visible=true;
		   botonaceptar->Visible=true;
		   botoncancelar->Visible=true;
		   botoninicio->Caption="Cerrar";
		   boxdato->Text=3;
		   boxdato->SetFocus();
		   miformulario->Caption="Ingrese el grado de la matriz";
		   }
		   else
			  {
				boxdato->Visible=false;
				botonaceptar->Visible=false;
				botoncancelar->Visible=false;
				botoninicio->Caption="Inicio";
				miformulario->Caption="Fibonacci";
			  }
		
		}
CONSULTAS: Ver datos
Volver al principio

El siguiente método te muestra una manera sencilla de generar la típica serie de fibonacci la cuál es cargada directamente a los elementos de una matríz cuadrada.

En la última parte apreciarás como transfiero la información generada para la matríz de manera que puedas visualizarla en un Memo Box.


/////////////////////////////////////////////////
//  Serie de Fibonacci
/////////////////////////////////////////////////
void __fastcall Tmiformulario::botonaceptarClick(TObject *Sender)
{
   boxdato->Visible=false;
   botonaceptar->Visible=false;
   botoncancelar->Visible=false;
   botoninicio->Caption="Inicio";
   vermatriz->Visible=true;
   vermatriz->Clear();
   botoninicio->Caption="Cerrar";
   grado=StrToInt(boxdato->Text);
   miformulario->Caption="Grado de la matriz generada: "+IntToStr(grado);

   /////////////////////////////////////////////////
   // Generando Serie de Fibonacci
   /////////////////////////////////////////////////
   for(fila=1;fila<=grado;fila++)
     {
      for(columna=1;columna<=grado;columna++)
        {
         if((fila==1 && columna==1)||(fila==1 && columna==2))
           {
            mimatriz[1][1]=1;
            mimatriz[2][1]=2;
           }
           else
           {
            mimatriz[columna][fila]= ant1+ ant2;
            ant1= ant2;
            ant2= mimatriz[columna][fila];
           }
        }
    }

   /////////////////////////////////////////////////
   // Generando Serie de Fibonacci
   /////////////////////////////////////////////////
   for(fila=1;fila<=grado;fila++)
     {
      for(columna=1;columna<=grado;columna++)
        {
         vermatriz->Lines->Add(IntToStr(mimatriz[columna][fila]));
         }
      }

}
//---------------------------------------------------------------------------

El placer está tan cerca del dolor, que muchas veces lloramos de alegría..!!

VECTORES en C++BUILDER
Volver al principio
Colega algorítmico, si eres del mundo paradigmático en estos links encontrarás toda la información necesaria para iniciar el manejo de los conceptos del Vector.. o Array.. o Arreglo.. Para los cuales son válidos los siguientes conceptos básicos.
  • Un vector es una forma de dato estructurado que se caracteriza por tener un subíndice que indica su localización dentro del conjunto homogeneo de datos que registra.

  • Todos los elementos del vector son del mismo tamaño y del mismo tipo de dato.

  • Cada vector posee un nombre o identificador que es constante y representa la dirección de su primer elemento

  • Gracias a tal subídice, el manejo algorítmico de los vectores, como podrás comprobar en este link, es una cosa muy sencilla, especialmente si tienes alguna solvencia en la aplicación de los iteradores definidos.

  • Tal subíndice puedes operarlo matemáticamente como una expresión cualquiera de variable entera.

  • El subíndice es una variable entera que comienza en cero.

  • La cantidad de elementos del vector prácticamente es ilimitado, pero es necesario que definas de antemano su límite.

  • Los datos que puedes guardar en el vector siempre será del mismo tipo y al igual que cualquier otra variable es necesario que previamente lo definas.

Todos los algoritmos que te propongo funcionan correctamente, por lo tanto, solo te resta mejorarlos de acuerdo a tus propias necesidades.

Luego de editar la siguiente sintaxis, al compilar lograrás un sistema que te permitirá ver en acción a los objetos del grafico precedente.

Como podrás apreciar el siguiente ejemplo solo te permite efectuar altas de datos y luego la visualización de los mismos. Solo requieres armar los objetos de acuerdo a la imagen de los objetos de la parte superior de este link y asignarle los nombres que te indico en el siguiente programa.

A modo de introducción también te propongo algunos mecanismos de seguridad y amigabilidad en el procesamiento de un vector cuyo elemento posee dos campos tipo cadena.

Ah..!! Este primer ejemplo, con el fín de simplificar no posee archivo, por lo tanto los registros de datos son volátiles al cerrar el programa.

VECTOR Programa Fuente


		/////////////////////////////////////////////////////
		// C++Builder 5                     Wilo Carpio
		//
		//  MANEJO BASICO DE UN VECTOR DE DOS CAMPOS
		//                 SIN ARCHIVO
		//
		////////////////////////////////////////////////////
		
		//---------------------------------------------------------------------------
		
		#include 
		#pragma hdrstop
		
		#include "Fuente.h"
		//---------------------------------------------------------------------------
		#pragma package(smart_init)
		#pragma resource "*.dfm"
		 ///////////////////////////////////////
		 //
		 //  Declaracion de la Estructura
		 //////////////////////////////////////
		 typedef struct registro
		{
		  char Nombre[30], Email[30];
		  int Borrado;
		} MiRegistro;
		//////////////////////////////
		//
		//   Declaracion del Vector
		//////////////////////////////
		MiRegistro MiVector[50];
		////////////////////////////////////////////
		//
		// Declaracion de las variables del Vector
		////////////////////////////////////////////
		int i=0;
		int n=0;
		int Total,l;
		
		TMiFormulario *MiFormulario;
		//---------------------------------------------------------------------------
		__fastcall TMiFormulario::TMiFormulario(TComponent* Owner)
				: TForm(Owner)
		{
		}
		//---------------------------------------------------------------------------
		void __fastcall TMiFormulario::BotonSalirClick(TObject *Sender)
		{
		 if (Application->MessageBox("Quieres cerrar el programa.?","Ojito.. QUE NO TENES ARCHIVO..!!",MB_DEFBUTTON1 + MB_OKCANCEL + MB_ICONQUESTION)==1)
			  {
				Close();
			   }
		}
		//---------------------------------------------------------------------------
		void __fastcall TMiFormulario::BotonAltasClick(TObject *Sender)
		{
		 if(BotonAltas->Caption=="&Altas")
		 {
		  BotonAltas->Caption = "&Cerrar";
		  BoxNombre->Visible=true;
		  BoxNombre->SetFocus();
		  BoxEmail->Visible=true;
		  MiFormulario->Caption="DIGITA LOS NUEVOS DATOS";
		  Autor->Visible=false;
		 }
		 else
		 {
		  BotonAltas->Caption = "&Altas";
		  BoxNombre->Visible=false;
		  BoxEmail->Visible=false;
		  MiFormulario->Caption="VECTORES: Agenda sin archivo  Wilo Carpio";
		  Autor->Visible=true;
		 }
		}
		//---------------------------------------------------------------------------
		void __fastcall TMiFormulario::BoxNombreChange(TObject *Sender)
		{
		 if(!(BoxNombre->Text==""))
		 {
		  GrabarAlta->Visible=true;
		 }
		 else
		 {
		  GrabarAlta->Visible=false;
		 }
		}
		//---------------------------------------------------------------------------
		void __fastcall TMiFormulario::GrabarAltaClick(TObject *Sender)
		{
		 i++;
		 Total = i;
		 strcpy(MiVector[i].Nombre,BoxNombre->Text.c_str());
		 strcpy(MiVector[i].Email,BoxEmail->Text.c_str());
		 MiFormulario->Caption="CARGADO: V("+IntToStr(i)+") = "+AnsiString(MiVector[i].Nombre);
		 BoxNombre->Clear();
		 BoxEmail->Clear();
		 BoxNombre->SetFocus();
		 BotonVer->Visible=true;
		}
		
		///////////////////////////////////////////////////////////////
		// VISUALIZACION DE DATOS POR BOX MEMO Y POR GRILLA
		//////////////////////////////////////////////////////////////
		void __fastcall TMiFormulario::BotonVerClick(TObject *Sender)
		{
		 if(BotonVer->Caption=="&VerFichas")
		 {
		   //////////////////////////////////////////////
		   //  Carga del vector en el BOX MEMO
		   //////////////////////////////////////////////
		   MiFormulario->Caption="FICHAS CARGADAS: V( "+IntToStr(Total)+" ) ";
		   BotonVer->Caption = "&Cerrar";
		   BoxMemo->Clear();
		   BoxMemo->Lines->Add("\t CONTENIDO");
		   BoxMemo->Lines->Add("\t ==========");
		   BoxMemo->Visible=true;
		   for(n=1;n<=Total;n++)
		   BoxMemo->Lines->Add("V("+IntToStr(n)+") = "+AnsiString(MiVector[n].Nombre));
		   //////////////////////////////////////////////
		   //  Carga de datos a la GRILLA
		   //////////////////////////////////////////////
		   i=1;
		   l=1;
		   MiGrilla->Cells[0][0]="Nombre";
		   MiGrilla->Cells[1][0]="Email";
		   while (i<=Total)
			  {
				MiGrilla->Cells[0][l]=MiVector[i].Nombre;
				MiGrilla->Cells[1][l]=MiVector[i].Email;
				i=i+1;
				l=l+1;
			  }
		   MiGrilla->Visible=true;
		 }
		 else
		 {
		  BotonVer->Caption = "&VerFichas";
		  BoxMemo->Visible=false;
		  MiGrilla->Visible=false;
		  MiFormulario->Caption="VECTORES: Agenda sin archivo  Wilo Carpio";
		 }
		
		}
		//---------------------------------------------------------------------------
		
		void __fastcall TMiFormulario::MiGrillaClick(TObject *Sender)
		{
		   MiFormulario->Caption="CONTENIDO DEL VECTOR";
		   i=1;
		   l=1;
		   MiGrilla->Cells[0][0]="Nombre";
		   MiGrilla->Cells[1][0]="Email";
		   while (i<=Total)
			  {
				MiGrilla->Cells[0][l]=MiVector[i].Nombre;
				MiGrilla->Cells[1][l]=MiVector[i].Email;
				i=i+1;
				l=l+1;
			  }
		   MiGrilla->Visible=true;
		
		}

		/////////////////////////////////////////////////////
		// C++Builder 5                     Wilo Carpio
		//
		//  MANEJO BASICO DE UN VECTOR DE DOS CAMPOS
		//                 SIN ARCHIVO
		//
		////////////////////////////////////////////////////
		
		//---------------------------------------------------------------------------
		
		#include 
		#pragma hdrstop
		
		#include "Fuente.h"
		//---------------------------------------------------------------------------
		#pragma package(smart_init)
		#pragma resource "*.dfm"
		 ///////////////////////////////////////
		 //
		 //  Declaracion de la Estructura
		 //////////////////////////////////////
		 typedef struct registro
		{
		  char Nombre[30], Email[30];
		  int Borrado;
		} MiRegistro;
		//////////////////////////////
		//
		//   Declaracion del Vector
		//////////////////////////////
		MiRegistro MiVector[50];
		////////////////////////////////////////////
		//
		// Declaracion de las variables del Vector
		////////////////////////////////////////////
		int i=0;
		int n=0;
		int Total,l;
		
		TMiFormulario *MiFormulario;
		//---------------------------------------------------------------------------
		__fastcall TMiFormulario::TMiFormulario(TComponent* Owner)
				: TForm(Owner)
		{
		}
		//---------------------------------------------------------------------------
		void __fastcall TMiFormulario::BotonSalirClick(TObject *Sender)
		{
		 if (Application->MessageBox("Quieres cerrar el programa.?","Ojito.. QUE NO TENES ARCHIVO..!!",MB_DEFBUTTON1 + MB_OKCANCEL + MB_ICONQUESTION)==1)
			  {
				Close();
			   }
		}
		//---------------------------------------------------------------------------
		void __fastcall TMiFormulario::BotonAltasClick(TObject *Sender)
		{
		 if(BotonAltas->Caption=="&Altas")
		 {
		  BotonAltas->Caption = "&Cerrar";
		  BoxNombre->Visible=true;
		  BoxNombre->SetFocus();
		  BoxEmail->Visible=true;
		  MiFormulario->Caption="DIGITA LOS NUEVOS DATOS";
		  Autor->Visible=false;
		 }
		 else
		 {
		  BotonAltas->Caption = "&Altas";
		  BoxNombre->Visible=false;
		  BoxEmail->Visible=false;
		  MiFormulario->Caption="VECTORES: Agenda sin archivo  Wilo Carpio";
		  Autor->Visible=true;
		 }
		}
		//---------------------------------------------------------------------------
		void __fastcall TMiFormulario::BoxNombreChange(TObject *Sender)
		{
		 if(!(BoxNombre->Text==""))
		 {
		  GrabarAlta->Visible=true;
		 }
		 else
		 {
		  GrabarAlta->Visible=false;
		 }
		}
		//---------------------------------------------------------------------------
		void __fastcall TMiFormulario::GrabarAltaClick(TObject *Sender)
		{
		 i++;
		 Total = i;
		 strcpy(MiVector[i].Nombre,BoxNombre->Text.c_str());
		 strcpy(MiVector[i].Email,BoxEmail->Text.c_str());
		 MiFormulario->Caption="CARGADO: V("+IntToStr(i)+") = "+AnsiString(MiVector[i].Nombre);
		 BoxNombre->Clear();
		 BoxEmail->Clear();
		 BoxNombre->SetFocus();
		 BotonVer->Visible=true;
		}
		
		///////////////////////////////////////////////////////////////
		// VISUALIZACION DE DATOS POR BOX MEMO Y POR GRILLA
		//////////////////////////////////////////////////////////////
		void __fastcall TMiFormulario::BotonVerClick(TObject *Sender)
		{
		 if(BotonVer->Caption=="&VerFichas")
		 {
		   //////////////////////////////////////////////
		   //  Carga del vector en el BOX MEMO
		   //////////////////////////////////////////////
		   MiFormulario->Caption="FICHAS CARGADAS: V( "+IntToStr(Total)+" ) ";
		   BotonVer->Caption = "&Cerrar";
		   BoxMemo->Clear();
		   BoxMemo->Lines->Add("\t CONTENIDO");
		   BoxMemo->Lines->Add("\t ==========");
		   BoxMemo->Visible=true;
		   for(n=1;n<=Total;n++)
		   BoxMemo->Lines->Add("V("+IntToStr(n)+") = "+AnsiString(MiVector[n].Nombre));
		   //////////////////////////////////////////////
		   //  Carga de datos a la GRILLA
		   //////////////////////////////////////////////
		   i=1;
		   l=1;
		   MiGrilla->Cells[0][0]="Nombre";
		   MiGrilla->Cells[1][0]="Email";
		   while (i<=Total)
			  {
				MiGrilla->Cells[0][l]=MiVector[i].Nombre;
				MiGrilla->Cells[1][l]=MiVector[i].Email;
				i=i+1;
				l=l+1;
			  }
		   MiGrilla->Visible=true;
		 }
		 else
		 {
		  BotonVer->Caption = "&VerFichas";
		  BoxMemo->Visible=false;
		  MiGrilla->Visible=false;
		  MiFormulario->Caption="VECTORES: Agenda sin archivo  Wilo Carpio";
		 }
		
		}
		//---------------------------------------------------------------------------
		
		void __fastcall TMiFormulario::MiGrillaClick(TObject *Sender)
		{
		   MiFormulario->Caption="CONTENIDO DEL VECTOR";
		   i=1;
		   l=1;
		   MiGrilla->Cells[0][0]="Nombre";
		   MiGrilla->Cells[1][0]="Email";
		   while (i<=Total)
			  {
				MiGrilla->Cells[0][l]=MiVector[i].Nombre;
				MiGrilla->Cells[1][l]=MiVector[i].Email;
				i=i+1;
				l=l+1;
			  }
		   MiGrilla->Visible=true;
}

Del anális de esto ejemplo ya estas en condición de deducir que:

Los vectores y las matrices en C, son manejados como estructuras de datos tipo ARREGLOS, que son grupos consecutivos de localidades de memoria a los cuales les asignamos un mismo nombre y un mismo tipo de dato.

Las magnitudes vectoriales y matriciales, forman parte de los datos estructurados que se caracterizan por ser variables del tipo subindicadas, pues en su estructura integran un valor indice que indica la ubicación de cada uno de sus elementos dentro del conjunto.

Estos datos requieren:

  1. DECLARACION: Previo a usarlas, debes declararlas como variables globales o como locales: Ejemplo: Para declarar que operararás con una matríz de 20 filas por 20 columnas, la sintaxis es:

    int MiMatriz[30][30];

    int TuMatriz[50][30];

    int MiMatriz[30][30], TuMatriz[50][30] Esta equivale a las dos anteriores.

  2. INICIALIZACION: Si requieres asignar un valor inicial a uno de los elementos de la matríz, por ejemplo 0 al primer elemento, la sintaxis es:

    MiMatriz[1][1] = 0;

    int TuVector[4]= {69, 22, 14, 55}; ( Este ejemplo abarca declaración e inicialización )

  3. ASIGNACION: Con los datos en formato matricial puedes operar tal como lo haces con una variable común, solo debes poner atención al índice del elemento que asignas. Ejemplos:

    MiMatriz[i][j] = TuMatriz[i][j] + EsaMatriz[x][y]

    MiMatriz[i][j] = TuMatriz[i][j] - UnValor

    MiMatriz[i][j] = TuMatriz[i][j] * 5

Tanto en C, como en C++, en Visual C++ y C++Builder, siempre el elemento inicial tiene como subíndice cero, por ello, el primer elemento si se trata de:

  1. VECTORES: MiVector[0]
  2. MATRICES: MiMatriz[0][0]

Fácilmente puedes deducir que el elemento enésimo será

  1. VECTORES: MiVector[n-1]
  2. MATRICES: MiMatriz[n-1][n-1]

Es necesario que los subíndices sean:

  1. VALORES ENTEROS: MiVector[12]
  2. EXPRESIONES ENTERAS: MiMatriz[n-m][n-q+1], donde m, n y q son variables enteras.

PARADIGMA
La ignorancia niega o agrede o critica
La ciencia duda..!! (Wilucha)

Paradigmas
de Vida
Linguístico
Sistémico
Matemático
Volver

PARADIGMA
Es más valioso quién se levanta
que quién nunca cayó.. (Wilucha)

Apuntes de clasesLenguaje Apuntes de clasesGramática Apuntes de clasesAutómata Apuntes de clasesLaplace Apuntes de clasesSeries Apuntes de clasesEcuación Apuntes de clasesOperador

PARADIGMA
Cultivo una rosa blanca
..en julio, como en enero
para el amigo sincero
que me da su mano franca..!!

Y para el cruel que me arranca
el corazón con que vivo,
cardo ni ortiga cultivo;
..cultivo una rosa blanca..!
José Martí

Sofy Carpio Amor Yo..!! Sano Pity..!! Asado Cayo..!! Alegria Wilin..!! Extasis Volver a Inicio
Volver

Te espero en: wilucha@gmail.com

Esta page está en: www.wilocarpio.com.ar

24/09/2002

Volver al principio