Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - indict

#21
Hola,
quiero hacer un programa que invierte un vector,

lo he echo pero no lo hace correctamente, ¿Qué errada hay? :S

¡Gracias!

#include<iostream>
#include<vector>
using namespace std;

    void reverse(vector<int>&A){
     int i=0;
     int last = A.size()-1;
     
    while(i<last){
             int z=A[i];
             A[i]=A[last];
             A[last]=z;
             i++;
             last=last-1;
             }   
         }
   
   
    int main(){
    int n,i,e;
    cout << endl << "Entra el numero de elementos del vector...";
    cin >> n;
    vector<int> v(n);
    for(i=1;i<=n;i++){
                     cout << "Entre el elemento " << i << " del vector...";
                     cin >> e;
                     v[i] = e;}
   
    reverse(v);
    for(i=1;i<n;i++){
    cout<<v[i]<<",";}
   
    system("pause");
    return 0;}
   
#22
¡muchas gracias por corregir el error! ;)
#23
Hola,

he echo un programa donde dada una matriz devuelva "si" si es simétrica y "no" si no lo es. Pero solo me imprime por pantalla "no" cuando no lo es, y cuando si lo es no me imprime nada. ¿Qué debo rectificar para que me imprima por pantalla "si" cuando si lo es?

#include<iostream>
#include <cstdlib>
#include<vector>
#include<algorithm>
#include <iomanip>
using namespace std;


bool Esdiagonal(vector<vector<int> >M){
  int i=0,j;
  bool p=true;
   while(i<M.size()-1 and p){
       j=i+1;
       while(j<M.size() and p){
                              if(M[i][j]!=M[j][i]){
                                                             p=false;
                                                             }
                             
              }
       
       }
       return p;

}


int main(){
    int m,n;
    cout<<"introduzca el numero de filas"<<endl;
    cin>>m;
    cout<<"introduzca el numero de columnas"<<endl;
    cin>>n;
    vector<vector<int> > matriz ( m, vector<int> ( n ) );
   
    int k = 0;
  for ( int i = 0; i < m; i++ ) {
    for ( int j = 0; j < n; j++ ){
      cout << "["<<i+1<<"]"<< "["<<j+1<<"]= ";/*activa esta y la siguiente para entrar a mano*/
      cin >>matriz[i][j];
      //matriz[i][j] = k++;/*y desactivas esta*/
    }
  }
 


  cout<<'\n';
  for ( int i = 0; i < n; i++ ) {
    for ( int j = 0; j < m; j++ )
      cout<< setw ( 3 ) << matriz[i][j] <<' ';
    cout<<'\n';
  }
  if(Esdiagonal(matriz)){cout<<"si"<<endl;}
  else{cout<<"no"<<endl;}
   // muestra(matriz,n,m);
   // transpon(matriz,n,m);

    system("pause");
    return 0;
  }



¡Gracias por la ayuda!
#24
Programación C/C++ / Re: duda matrices c++
18 Abril 2013, 18:02 PM
¡¡gracias!!
#25
Programación C/C++ / duda matrices c++
15 Abril 2013, 18:03 PM
Hola,

Dada una matriz de notas, donde las filas son el nº de alumnos y las columnas el nº de asignaturas , para calcular la nota media por alumno se haría:


vector<vector<double> >notas(n, vector<double>(m));
for(int i=0; i<n; i++){
double suma=0;
for (int j=0; j<m; j++){
suma=suma+notas[i][j];
}

}


Ahora bien, para calcular la nota media por asignaturas, he pensado de hacerlo de dos maneras, me gustaría que me dijerais si está bien de las dos maneras...


vector<vector<double> >notas(n, vector<double>(m));
for(int i=0; i<m; i++){
double suma=0;
for (int j=0; j<n; j++){
suma=suma+notas[i][j];
}

}


o
con solo cambiar los subíndices ya basta.

vector<vector<double> >notas(n, vector<double>(m));
for(int i=0; i<n; i++){
double suma=0;
for (int j=0; j<m; j++){
suma=suma+notas[j][i];
}

}


Gracias de antemano :)
#26
Hola, tengo la especificación de una aplicación práctica pero no se como implementar una acción concreta.

class Data {
int dia, mes, año;
public:
Data (int d, int m, int a);
// Pre: {1<=d<=31 i 1<=m<=12 i a>=1900}
// Post: {Construye una data a partir del día d, mes m y año a}

int Dia ();

int Mes ();

int Año ();    }

class Empleado {
int dni;
string nom; // nombre completo del empleado
string dept; //nombre del departamento al cual pertenece
Data naci; // data de nacimiento
int sueldo, trienios; // sueldo que cobra y nombre de los trienios

public:
Empleado (int d, string n, Data dn, int s, string dp, int t);
// Pre: {d>0 i s>0 i t>=0}
// Post: {Construye un empleado con DNI d, nombre n, data de nacimiento dn,
saldo s i trienios t}
int Dni ();
string Nombre ();
Data Nacimiento ();
int Sueldo ();
// Pre: {Ninguna}
string Departament ();
// Pre: {Ninguna}
// Post: {Devuelve el departamento del empleado}
int Trienios ();
void ModificarSueldo (int s);
// Pre: {s>0}
// Post: {Substituye el sueldo que tenia el empleado por el sueldo nuevo s}
void ModificaTrienios (int t);
// Pre: {t>=0}
// Post: {Substituye el nombre de trienios que tenia el empleado por
el nuevo nombre t}
}

class Departamento {
string nombre;
int gefe; // dni del empleado que es el gefe del departamento
public:
Departamento (string n, int c);
// Pre: {d>0}
// Post: {Construye el departamento con nombre n y con DNI del gefe d}

string NombreDepartamento ();

int GefeDepartamento ();}

class Empresa {

vector<Empleat> empls;
vector<Departament> depts;

public;

Empresa (vector<Empleat> &emp, vector<Departamernt> &dep);
}
}


Quiero crear una acción void accion (Empresa & emp) que duplique el sueldo de los empleados nacidos antes del 1971, incremente el número de trienios en uno de los empleados nacido el 20 de febrero y que incremente el sueldo en una tercer parte ( + 1/3) a todos los empleados que son gefes de algún departamento.


¡Gracias por vuestra ayuda!
#27
Programación C/C++ / ejercicio bucle while
19 Marzo 2013, 14:22 PM
Hola,
tengo unas cuestiones en resolver el siguiente ejercicio.

I. Desarrollar un programa que lea una lista de enteros menores de 1000 que
acabará cuando se den las tres condiciones siguientes:
1) Se han encontrado al menos 5 múltiplos de 3 o de 7.
2) El número mayor es al menos 10 veces más grande que el número menor.
3) El promedio de los números pares supera al de los impares.

II. Cuando las tres condiciones se den y se termine la lectura de la lista de enteros se deberá:
• Escribir en pantalla y en orden descendente todos los números múltiplos de 5 entre el número
mayor y el menor.
• Escribir en pantalla la lista de todos los números impares mayores del promedio y menores
del mayor de la siguiente manera: En el primer renglón el primer número, en el segundo
reglón dos, el segundo y tercero, y así sucesivamente.
• Decir si existe algún divisor común de los números mayor y menor. Si existe decir cuál.


¿Cómo cuento el valor mayor y menor de una lista sin usar vectores?

En II, que debo hacer poner en el mismo bucle while al final las tres condiciones con and y cout.

#include<iostream>
using namespace std;


int main(){
    int i=0,s=0,p;
   
    while(i<1000){
   
    if((i%3==0)>=5){return 0;} //apartado 1
    else if((i%3==0)>=5){return 0;}
   
   //apartado 2 ?
   
    else if(if(i%2==0)){{p=p+1;}//apartado 3
   
    else{s=s+1;}
    return 0;}
             
                i++; }
   
    system("PAUSE");
    return 0;}



Gracias por la ayuda :)
#28
muchas gracias  :D
#29
Muchas gracias por la respuesta :D

Lo único es que debería especificar las variables (letras del abecedario).

Saludos!
#30
Hola,
Tengo que realizar un programa el cual 2 dada un carácter leído desde teclado devolver su lugar en el alfabeto (a=1, z=26) independientemente si es mayúscula o minúscula. Si no es letra devolver el valor 0 ó si es un espacio en blanco devolver el valor -1.

Mi problema está que no me quedan caracteres para utilizar, ya que si utilizo 'ñ' (que no está en el alfabeto) me da un error del tipo stray '\347' creo que es debido a que char no puede guardar el valor en la letra 'ñ'.

Aquí hasta donde he llegado:
Citar#include<iostream>
using namespace std;
int main(){
char ñ,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z;
cin>>ñ;
if(ñ=='a' or ñ=='A'){cout<<"1"<<endl;}
else if(ñ=='b' or ñ=='B'){cout<<"2"<<endl;}
else if(ñ=='c' or ñ=='C'){cout<<"3"<<endl;}
else if(ñ=='d' or ñ=='D'){cout<<"4"<<endl;}
else if(ñ=='e' or ñ=='E'){cout<<"5"<<endl;}
else if(ñ=='f' or ñ=='F'){cout<<"6"<<endl;}
else if(ñ=='g' or ñ=='G'){cout<<"7"<<endl;}
else if(ñ=='h' or ñ=='H'){cout<<"8"<<endl;}
else if(ñ=='i' or ñ=='I'){cout<<"9"<<endl;}
else if(ñ=='j' or ñ=='J'){cout<<"10"<<endl;}
else if(ñ=='k' or ñ=='K'){cout<<"11"<<endl;}
else if(ñ=='l' or ñ=='L'){cout<<"12"<<endl;}
else if(ñ=='m' or ñ=='M'){cout<<"13"<<endl;}
else if(ñ=='n' or ñ=='N'){cout<<"14"<<endl;}
else if(ñ=='o' or ñ=='O'){cout<<"15"<<endl;}
else if(ñ=='p' or ñ=='P'){cout<<"16"<<endl;}
else if(ñ=='q' or ñ=='Q'){cout<<"17"<<endl;}
else if(ñ=='r' or ñ=='R'){cout<<"18"<<endl;}
else if(ñ=='s' or ñ=='S'){cout<<"19"<<endl;}
else if(ñ=='t' or ñ=='T'){cout<<"20"<<endl;}
else if(ñ=='u' or ñ=='U'){cout<<"21"<<endl;}
else if(ñ=='v' or ñ=='V'){cout<<"22"<<endl;}
else if(ñ=='w' or ñ=='W'){cout<<"23"<<endl;}
else if(ñ=='x' or ñ=='X'){cout<<"24"<<endl;}
else if(ñ=='y' or ñ=='Y'){cout<<"25"<<endl;}
else if(ñ=='z' or ñ=='Z'){cout<<"26"<<endl;}



}

Gracias