|
1051
|
Programación / Programación C/C++ / Re: modificar a la función c++
|
en: 24 Enero 2013, 16:29 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:#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
|
Programación / Programación C/C++ / Re: comparar un elemento con un vector c++
|
en: 24 Enero 2013, 16:03 pm
|
...........................
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?
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
|
Programación / Programación C/C++ / Re: Ordenar siguiendo el mismo orden dos tablas independientes
|
en: 23 Enero 2013, 22:23 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:#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
|
Programación / Programación C/C++ / Re: comparar un elemento con un vector c++
|
en: 23 Enero 2013, 19:24 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. ...................................................... cin>>v; v=e;<==ESTO QUE ES ¡ ¡ ¡ } cout<<"introduzca el elemento a comparar"<<endl; cin>>m; ....................................................................
Y poco más:#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 / Programación C/C++ / Re: calcular moda c++
|
en: 23 Enero 2013, 15:33 pm
|
....................................................
La moda es el elemento que más veces se repite en el vector.
Y sin recurrir a la librería map:#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
|
Programación / Programación C/C++ / Re: [Ayuda] Matriz para rellenar una tabla
|
en: 18 Enero 2013, 19:47 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:#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
|
Programación / Programación C/C++ / Re: [Ayuda] Punteros y Arrays en C
|
en: 16 Enero 2013, 22:33 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:#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
|
Programación / Programación C/C++ / Re: Ayuda con matriz traspuesta
|
en: 16 Enero 2013, 13:33 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: #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!:
|
|
|
1060
|
Programación / Programación C/C++ / Re: Dudas imprimir listado y doble o nada continuo
|
en: 12 Enero 2013, 15:33 pm
|
Para el primer caso creo que te valdrá: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 :if (total==0) { printf("\nIntroduce la cantidad a Apostar : "); scanf("%d",&numero); }
dentro del do.Saluditos!.
|
|
|
|
|
|
|