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 - leosansan

#1051
Cita de: indict en 24 Enero 2013, 12:19 PM
......................... ¿qué debería modificar para que no me mostrara solamente la primera posición sino todas?

Aunque no le guste el while a flony  ::)  para no cambiarte mucho el código:
Código (cpp) [Seleccionar]
#include<iostream>
#include<vector>
#include<cstdlib>/*<==HACE FALTA PARA SYSTEM ¡ ¡ ¡*/
using namespace std;


bool divisor(vector<int>v,int m){
int i=0;
    bool encontrado=false;
    while(i<v.size() ){
      if(v[i]%m==0)
        cout<<"el elemento divisibles es: v["<<i<<"]= "<<v[i]<<endl;
      i++;
    }
}



int main (){

    int n,i=0,e,m;
    cout<<endl<<"Entre el divisor...";
    cin>>m;
    cout << endl << "Entre el número de elementos del vector...";
    cin >> n;
    vector<int> v(n);
    for(i=0;i<n;i++){
                     cout << "Entre el elemento " << i+1<< " del vector...";
                     cin >>v[i];/*<==que es eso de: cin >> e;y luego v[i] = e;*/
                     }
    cout << endl;

    cout<<divisor(v,m)<<endl;
    cout<<endl;
    system("pause");
    return 0;}

Saluditos!.
#1052
Cita de: indict en 24 Enero 2013, 11:11 AM
                      ...........................

y si ahora quisiera que el programa me mostrará cierto si el valor a comparar es igual a todos los elementos del vector y falso si es distinto ¿qué matiz haría falta modificar?

Código (cpp) [Seleccionar]
bool todosiguales(vector<int>v,int n,int e){
  for(int i=0;i<n;i++){
    if(v[i]==e)
     return  true;
    else
     return false;
  }
}

Saluditos!.
#1053
Cita de: AIR13 en  4 Enero 2013, 23:45 PM
                   .............................................
Pongo un ejemplo: si tabla1[3][1]={(3),(1),(2)} y tabla2[3][1]={(a),(b),(c)}, quiero ordenar tabla1[3][1] de menor a mayor así: {(1),(2),(3)} y poner en ese orden tabla2[3][1], de manera que quede: {(b),(c),(a)}, porque b ocupa el lugar de 1, c el de 2 y a el de 3.

Como tienes que ordenar la tabla numérica, aprovechas y te ordena al mismo tiempo la alfabética:
Código (cpp) [Seleccionar]
#include <stdio.h>
#include <stdlib.h>

int main(void){
  int i,j,n=3,auxn,num[3] = {3, 1, 2};
  char ch[3] = {'a', 'b', 'c'},aux;
    /* Ordenacion mediante Burbuja */
    for (i=1; i< n; i++){
      for (j=0; j< n-i; j++)
         if (num[j] > num[j+1]){

            auxn =num[j];
            num[j]=num[j+1];
            num[j+1]=auxn;
            aux = ch[j];
            ch[j] = ch[j + 1];
            ch[j + 1] = aux;
        }
   }
  for (i = 0; i < n; i++)
    printf(" %d ", num[i]);
  putchar('\n');
  for (i = 0; i < n; i++)
    printf(" %c", ch[i]);
  putchar('\n');
  return EXIT_SUCCESS;
}

Saluditos!.
#1054
Cita de: indict en 23 Enero 2013, 16:25 PM
Hola, hago un programa que consiste en comparar un vector con un número, (función booleana). No se que sucede pero me devuelve siempre el valor "true". Si el elemento está en el vector me devuelve "true" y si no está también.  :(

Citar......................................................
                           cin>>v;
                          v=e;<==ESTO QUE ES ¡ ¡ ¡
                           }
   cout<<"introduzca el elemento a comparar"<<endl;
   cin>>m;

   ....................................................................


Y poco más:
Código (cpp) [Seleccionar]
#include<iostream>
#include<vector>
#include<cstdlib>
#include<clocale>
using namespace std;
bool todosiguales(vector<int>v,int n,int e){
 for(int i=0;i<n;i++){
   if(v[i]==e)
   return  true;
   }
   return false;
}

int main(){
   int n, m, e,i;
   setlocale(LC_ALL, "Spanish");
   cout<<"introduzca el tamaño del vector: ";
   cin>>n;
   vector<int>v(n);
   for(i=0;i<n;i++){
      cout<<"Introduzca el elemento "<<i+1<<" del vector: ";
      cin>>v[i];
   }
   cout<<"introduzca el elemento a comparar: ";
   cin>>m;

   if(todosiguales(v,n,m)){cout<<"es identico el vector respecto el elemento"<<endl;}
   else{cout<<"el vector es distinto respecto el elemento"<<endl;}
   system ("pause");
   return 0;
   }
#1055
Programación C/C++ / Re: calcular moda c++
23 Enero 2013, 15:33 PM
Cita de: indict en 22 Enero 2013, 17:52 PM
....................................................

La moda es el elemento que más veces se repite en el vector.


Y sin recurrir a la librería map:
Código (cpp) [Seleccionar]
#include <iostream>
#include<vector>
#include<cstdlib>
using namespace std;

int main(){

    int edad,personas,i,j,moda=0,frecuencia;
    cout<<"introduzca el numero de personas: ";
    cin>>personas;
    vector<int>v(personas);
    vector<int>n(personas);
    for(i=0;i<personas;i++){
        cout<<"Ingrese la edad de la "<<i+1<<" persona: ";
        cin>>edad;
        v[i]=edad;
        for( j = i-1; j >=0 ; j--){
            if(v[i] == v[j]){
                n[j]++;
                if(n[j]>moda){
                  moda=i;frecuencia=n[j];
                }
            }
        }
    }
    cout<<endl<<"Moda= "<<v[moda]<<"=> "<<frecuencia+1<<endl;
    system("PAUSE");
    return 0;
}

Saluditos!,
P.D: Muy interesante la mencionada librería. ;)
#1056
Cita de: sora_ori en 18 Enero 2013, 17:11 PM

....... Se pide: hacer un programa que llene la tabla de valores y nos diga el total de alumnos matriculados de cada asignatura.

Supongo que te referías a algo como esto:
Código (cpp) [Seleccionar]
#include <stdio.h>
#include <stdlib.h>
#define  FILAS   6
#define  COLUMNAS 8
int main() {
 int f,c;
 int mat[FILAS][COLUMNAS],asignatura[FILAS]={0};
  // filas corresponden a los grupos
 // columnas corresponde a las asignaturas
  // matriz 1
 for (f=0;f<FILAS;f++){
     for (c=0;c<COLUMNAS;c++){
         printf("Escribe el numero de alumnos del grupo %d de la asignatura %d: ",f+1,c+1);
         scanf("%d",&mat[f][c]);
     }
 }
 for (c=0;c<COLUMNAS;c++)
   for (f=0;f<FILAS;f++)
     asignatura[c]+=mat[f][c];

 for (c=0;c<COLUMNAS;c++)
   printf("Numero de alumnos de la asignatura %d: %d\n",c+1,asignatura[c]);

 system("PAUSE");
 return 0;
}

Saluditos!.
#1057
Cita de: jack09 en 16 Enero 2013, 19:53 PM
Mi idea era que avanzase hacia arriba hasta llegar al dos y luego se lo "comiera" quedando un cinco solo en la matriz.
Pues se lo come:
Código (cpp) [Seleccionar]
#include <stdio.h>
#include <stdlib.h>

void mostrar(int m[3][3]) {
int i, j;

for(i=0; i<3; i++){
for(j=0; j<3; j++){
printf("%d ", m[i][j]);
}
printf("\n");
}
printf("\n");
}

int main () {
int m[3][3] = {0, 2, 0, 0, 0, 0, 0, 0, 3};
  int i, j,i_i,i_f,j_i,j_f;

for(i=0; i<3; i++){
for(j=0; j<3; j++){
if (m[i][j]==2){
          i_f=i;j_f=j;
      }
if (m[i][j]==3){
  i_i=i;j_i=j;
      }
}
}
mostrar(m);
  while (i_i!=0){
    if (i_i>i_f){
    m[i_i-1][j_i]+=m[i_i][j_i];m[i_i][j_i]=0;i_i--;
    mostrar(m);
    }
    /***** caso if (i_i<i_f)  ****/
  }
  while (j_i!=0){
    if (j_i>j_f){
    m[i_i][j_i-1]+=m[i_i][j_i];m[i_i][j_i]=0;j_i--;
    mostrar(m);
    }
     /***** if (j_i<j_f)  ****/
  }
  return 0;
}


Quedaría por implementar los dos casos que marco para hacerlo más general.
Saluditos!.
P.D: ¿Para qué querías los punteros?:
REEDITO:contestaban antes mientras escribía este post.
#1058
Cita de: sora_ori en 16 Enero 2013, 12:43 PM

........... Un programa nos pide los elementos de una matriz 3x3 y nos escribe la matriz traspuesta y la suma de las dos matrices.


Sólo comentarte que te fijes en cómo se calcula la traspuesta.
Hay algunas correcciones menores, como en el scanf e inicializar la traspuesta con la original para luego cambiarla:
Código (cpp) [Seleccionar]
#include <stdio.h>
#include <stdlib.h>

int main() {
int f,c,temp1,temp2;
int mat[3][3];
int result[3][3];
int traspuesta[3][3];

// MATRIZ INICIAL
    for (f=0;f<3;f++){
        for (c=0;c<3;c++){
             printf("Escribe un numero para la matriz: (%d %d)= ",f,c);
             scanf("%d",&mat[f][c]);
        traspuesta[f][c]=mat[f][c];
        }
}
puts ("MATRIZ INICIAL\n");
for (f=0;f<3;f++){
            for (c=0;c<3;c++) {
                     printf("%d  ",mat[f][c]);
                }puts("\n");
        }puts("\n");
// TRASPUESTA
    for (f=0;f<3;f++)
        for (c=0;c<3 && c<f;c++) {
                temp1=traspuesta[f][c];
                temp2=traspuesta[c][f];
                traspuesta[c][f]= temp1;
                traspuesta[f][c]= temp2;
            }
  puts ("MATRIZ SIMETRICA O TRASPUESTA\n");
  for (f=0;f<3;f++)  {
            for (c=0;c<3;c++) {
                     printf("%d  ",traspuesta[f][c]);
                }puts("\n");
        }puts("\n");
// RESULTADO
    for (f=0;f<3;f++){
        for (c=0;c<3;c++){
        result[f][c]=mat[f][c]+traspuesta[f][c];
        }
}
// MUESTRA LA SUMA
    for (f=0;f<3;f++){
        printf("\n|");
        for (c=0;c<3;c++){
          printf(" %d ",result[f][c]);
        }
        printf("|");
    }
    system("PAUSE");
    return 0;
}

Saluditos!:
#1059
Programación C/C++ / Re: Programa Loteria
14 Enero 2013, 22:16 PM
CitarInteresante.
¿Puedes adelantar algo del código que llevas hecho?.
¡Oh, terrible duda!, ¿será que pretendes que te hagamos el trabajo?.
No por Dios, por qué seré tan mal pensado, seguro que no tardas en colgar el código y plantearas sólo las dudas que tienes.
:rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes:
#1060
Para el primer caso creo que te valdrá:
Código (cpp) [Seleccionar]
int i,bisiestos=0,START=1900,END;
printf("Introduzca el a\xA4o en el que nos encontramos: ");
scanf("%d", &END);
for ( i=START;i<=END ;i+=4 )
if  (i%4 ==0 && i%100!=0 ||  (i%400==0))
   bisiestos++;
printf("Hay %d a\xA4os bisiestos entre %d y %d", bisiestos, START, END);

Y para el segundo caso creo que bastaría con incluir :
Código (cpp) [Seleccionar]
if (total==0) {
printf("\nIntroduce la cantidad a Apostar :  ");
                       scanf("%d",&numero);
}

dentro del do.
Saluditos!.