MATRIZ que imprima como una matriz en forma de cuadrado... ayudaaaaa!! help

Iniciado por oscarpy, 7 Abril 2012, 06:03 AM

0 Miembros y 1 Visitante están viendo este tema.

oscarpy

 :huh: bueno... quiero pedir ayudar en el ejercicio 1 de mi problemas es que el profesor.. no mostro como se usa el c++ pero va muy rapido y en una semana no lo aprendi.. we.. que ***** bueno el tema es esto y quiero aprender ... entiendo algoritmia pero me pierdo en las sintaxis.. del como se hace y que se hace.. en c++ =/
y si me puede sacar algunas dudas desde ya gracias... espero que me respondan hoy.. porq es para el lunes u.u =(

1)   (3ptos) Realice un programa para manejo de vectores y matrices con las siguientes funciones:
a.   Las funciones del programa deben incluir: crear, cargar e imprimir un vector y/o matriz. ok
b.   Una función MaxVector que reciba un vector y devuelva el mayor elemento.
c.   Una función MinVector que reciba un vector y devuelva el menor elemento.
d.   Una función ContarElementos que reciba un vector y devuelva la cantidad de elementos.
e.   Una función OrdenarVector, que reciba un vector y lo ordene de menor a mayor.
f.   Una función OrdenarPorOrden, que reciba un vector y una variable que le indique si debe ordenar de menor a mayor o de mayor a menor.
g.   Una función CompararVectores, que reciba dos vectores y retorne verdadero si son iguales y falso si no lo son.
h.   Escribir un programa en C++ que nos permita sumar, restar y multiplicar matrices de tamaño NxN.

Citar#include <iostream>
using namespace std;

// que es esto de include vector? 
#include <vector>
using std::vector;

vector<vector<int> > crear(int num_filas, int num_cols);
void imprimir(vector<vector<int> >& matriz);

int main()
{
   cout << "Matriz A" << endl;

   cout << "Numero de Filas: ";
   int num_filas;
   cin >> num_filas;

   cout << "Numero de Columnas: ";
   int num_cols;
   cin >> num_cols;
   cout << endl;

   vector<vector<int> > matriz = crear(num_filas, num_cols);
   cout << "----" << endl;
   imprimir(matriz);

   return 0;
}

vector<vector<int> > crear(int num_filas, int num_cols)
{
   vector<vector<int> > matriz(num_filas, vector<int>(num_cols) );

   for (int i = 0; i < num_filas; i++)
      for (int j = 0; j < num_cols; j++) {
         cout << "matriz[" << i << "][" << j << "]: ";
         cin >> matriz[j];
      }
  // que es esto de return matriz??
   return matriz;
}
/* en que caso uso void imprimir y para que si para imprimir algo tengo entendido que se usa cout */
void imprimir(vector<vector<int> >& matriz)
{
   // que es size_type i ?? D= nunca me mostraron eso
   vector<vector<int> >::size_type i;
   vector<int>::size_type j;

   for (i = 0; i < matriz.size(); i++)
      for (j = 0; j < matriz.size(); j++)
         cout << "matriz[" << i << "][" << j << "]: " << matriz[j] << endl;

Xandrete

No lo mostró porque asumió que ustedes tenían suficiente autonomía y desenvoltura para aprender rudimentos de C++ por cuenta propia, y este problema parece un medio para aprender precisamente esos fundamentos. Dices que tienes problemas con la sintaxis, pero que llevas bien la algoritmia. Bueno, este problema que nos planteas aquí no requiere en absoluto soluciones algorítmicas sofisticadas, es muy básico. Es más bien para coger soltura con los elementos básicos del lenguaje de programación (en este caso, C++), como ya he comentado.

Yo siempre he dicho que aprender a programar sólo se aprende una vez. Ya para el tema del lenguaje y tal, se mira un manual sobre la marcha para aprender la sintaxis, las bibliotecas estándar que ofrece y poco más.

En fin, dejando atrás todo esto. Voy a contestar a la primera pregunta que formulas en los comentarios de tu programa.

Citar// que es esto de include vector?

Es una inclusión de una biblioteca. Una biblioteca contiene la definición de funciones y (en el caso de lenguajes orientados a objetos) clases (es decir, tipos de datos con métodos y atributos asociados). En este caso, vector forma parte de la STL (Standard Template Library) y básicamente es una biblioteca que provee al programador de la clase vector, que es una estructura de datos lineal (que almacena datos en posiciones consecutivas de memoria) que se puede dimensionar dinámicamente (es decir, que puedes cambiar su tamaño en tiempo de ejecución... no son como los arrays, para los cuales tienes que tener claro el tamaño que van a tener al declararlos). Ya que estas empezando, de todo este rollo que te he soltado (y que no es ni mucho menos tan extenso como podría ser) te tienes que quedar con que necesitas incluir la biblioteca vector para poder declarar cosas como esta:

Código (cpp) [Seleccionar]
int n;
cin >> n;
vector<int> v(n)


Con eso declaras un vector de n elementos (siendo n un dato que introduce el usuario).

También puedes crear vectores de vectores (A.K.A. matrices):

Código (cpp) [Seleccionar]
vector<vector<int> > v(n,vector<int>(n)) // declaración de una matriz cuadrada de orden n

Con eso contesto más o menos tu primera pregunta.

Por lo demás, no puedo más que recomendarte que sigas algún manual para que tu mismo puedas contestar tus otras dudas. Debes acostumbrarte a ser algo autónomo. No es que no debas preguntar nada nunca, pero debes tener ese poquito de sentido común que te dice cuando una duda no es lo suficientemente específica como para que ya haya sido contestada millones de veces por ahí (sobre todo en este caso, en que tus preguntas derivan directamente del hecho de que estás empezando a aprender C++). En este mismo foro encontrarás entre las chinchetas manuales y libros que puedes consultar. También tienes este otro manual, todo un hito en el aprendizaje de C++. ¿Tienes hasta el lunes, dices? Hay tiempo de sobra para aprender todo esto y más.

Saludos.

P.S. Y a modo de consejo totalmente amistoso, te diría que en el título de un post no pongas cosas como "ayudaaaaaa!! help". Restan seriedad y provocan justo el efecto contrario al que deseas (que más gente mire tu post)

oscarpy

hijo de p**a que kapo... si la primera pregunta me imaginaba que era una libreria como namespace std; pero tenia dudas de que era y como servia.. si la verdad que tengo que ser todo un autóctono.. gracias ya lo he solucionado esa noche.. =D
la perseverancia fue mi "método" preferido xD

Xandrete

¡Autóctono no! ¡Autónomo!

namespace std no es una librería. Es un "espacio de nombres", como su propio nombre indica (valga la redundancia). Todas las funciones y objetos de la librería estándar C++ están declaradas dentro del espacio de nombres std. Si no pusieras el using namespace std tendrías que añadir el prefijo std:: a todas las funciones que utilices de la librería estándar.

Saludos

P.S.  >:( Vigilemos el lenguaje (y no me refiero al de programación)...