|
911
|
Programación / Programación C/C++ / Re: ayuda programa en c++
|
en: 6 Abril 2013, 19:25 pm
|
Antes que nada, para "colgar" un código primero elige donde pone "GeSHi" las etiquetas de C++, aunque el código sea en C, y en medio de las etiquetas que aparecen "pegas" tu código, así sale bien y coloreado y es más fácil de seguir.
Como efecto no deseado, al no poner las etiquetas la matriz M, aparece como M[j], cuando en realidad las tienes bien puestas como Cosas de no usar las susodichas etiquetas.
Por lo demás el código que posteas está muy verde todavía. Pero para que no se diga que no ayudamos y siendo lo siguiente lo que quieres, si no he entendido mal:que numero de filas desea para la matriz?: 2 que numero de columnas de la matriz: 4 llenado de matriz: Inserte num[0][0]: 1 Inserte num[0][1]: 2 Inserte num[0][2]: 3 Inserte num[0][3]: 3 El numero esta repetido, ingrese otro Inserte num[0][3]: 4 Inserte num[1][0]: 5 Inserte num[1][1]: 6 Inserte num[1][2]: 7 Inserte num[1][3]: 7 El numero esta repetido, ingrese otro Inserte num[1][3]: 8 la matriz: [6][2][3][6] [6][6][7][6]
Te paso el código con "una pequeña maldad", hago uso de un array innecesario. Es para no dártelo todo hecho y que al menos veas como puedes hacerlo directamente al introducir los elementos de la matriz #include <stdio.h> #define tam 10 void capturar (int M[tam][tam], int f, int c); void mostrar (int M[tam][tam], int f, int c); int main () { int M [tam] [tam]; int f, c, numero; printf ("que numero de filas desea para la matriz?: \n"); scanf("%d",&f); printf ("que numero de columnas de la matriz: \n"); scanf("%d",&c); printf ("\nllenado de matriz: \n"); capturar(M, f, c); printf ("\nla matriz: "); mostrar(M, f, c); return(0); } void capturar (int M[tam][tam], int f, int c) { int i,j=0,k=0,l=0; int numeros[f*c]; for( i = 0; i < f*c ; i++){ if (l==c ){ k++; l=0; } printf ("Inserte num[%d][%d]: ",k,l); l++; scanf ("%d",&numeros[i]); for( j = i-1; j >=0 ; j--){ if(numeros[i] == numeros[j]){ printf("El numero esta repetido, ingrese otro\n"); i--;l--; break; } } } i=0; for (j=0;j<f;j++){ for (k=0;k<c;k++){ if ( j==0 && (k==0 || k==c-1 )|| j==f-1 && (k==0 || k==c-1)) M[j][k]=6; else M[j][k]=numeros[i]; i++; } } } void mostrar (int M[tam][tam], int f, int c) { int i,j; for ( i = 0 ; i < f ; i++) { printf ("\n"); for ( j =0 ; j < c ; j++) { printf ("[%d]",M[i][j] ); } } }
Tampoco he modificado "casi" el código que posteas, aunque esa forma de declarar la matriz a mí no me gusta. Pero bueno, para que vayas adelantando la tarea creo que tienes material ya.
Saluditos!. ....
|
|
|
912
|
Programación / Programación C/C++ / Re: Ayuda con código para re ordenar array
|
en: 6 Abril 2013, 14:43 pm
|
"Sin dudarlo un instante" me quedo con el segundo. Es una simplificación del mío al mirar un caracter y el siguiente y decidir en función de ello lo que hacer.#include<stdio.h> int main(){ int i,j=0,k=0,cont=0; char cadena[80]="01ab210c213qwe31zxc213"; char array_de_cadena[40][6] = {{0}}; puts("01ab210c213qwe31zxc213\n"); for (i=0;cadena[i]!='\0';i++){ array_de_cadena[j][k]=cadena[i]; if ((cadena[i]>47 && cadena[i]<58) ^ (cadena[i+1]>47 && cadena[i+1]<58)){ j++; k=0; } else k++; } for (i=0;i<=j;i++) printf ("%s \n",array_de_cadena[i]); return 0; }
Muy agudo rir. Sólo me queda la duda de no introducir el caracter nulo al final de cada cadena.Saluditos!. ...P.D: Lo que no entiendo es a cuento de que vino el código que habías posteado anteriormente
|
|
|
913
|
Programación / Programación C/C++ / Re: Ayuda con código para re ordenar array
|
en: 5 Abril 2013, 23:20 pm
|
eiiiii no vale poner varias cosas en una línea para que parezca más corto XD
Lo "rectifico" y aún así, además de corto es "simple" siguiendo el principio de la navaja de Ockham: «en igualdad de condiciones, la explicación más sencilla suele ser la correcta»#include<stdio.h> int main(){ int i,j=0,k=0,cont=0; char cadena[80]="01ab210c213qwe31zxc213";; char array_de_cadena[40][6] = {{0}}; puts("01ab210c213qwe31zxc213\n"); for (i=0;cadena[i]!='\0';i++){ if (cadena[i]>47 && cadena[i]<58 ){ if (cont==1){ array_de_cadena[j][k]='\0'; j++; k=0; } array_de_cadena[j][k]=cadena[i]; k++; cont=2; } else { if (cont==2){ array_de_cadena[j][k]='\0'; j++; k=0; } array_de_cadena[j][k]=cadena[i]; k++; cont=1; } } for (i=0;i<=j;i++) printf ("%s \n",array_de_cadena[i]); return 0; }
Un abrazo y Saluditos!. ....P.D: Sería más corto con el uso de sscanf, pero no sería más simple ni en igualdad de condiciones respecto a los propuestos.
|
|
|
915
|
Programación / Programación C/C++ / Re: Ayuda con código para re ordenar array
|
en: 5 Abril 2013, 18:28 pm
|
Creo que con un contador, bandera o flag y un array para guardar los parciales "va que chuta":01ab210c213qwe31zxc213 01 ab 210 c 213 qwe 31 zxc 213 Presione una tecla para continuar . . .
#include<stdio.h> int main(){ int i,j=0,k=0,cont=0; char cadena[80]="01ab210c213qwe31zxc213";; char array_de_cadena[40][6] = {{0}}; puts("01ab210c213qwe31zxc213\n"); //scanf("%s", cadena); for (i=0;cadena[i]!='\0';i++){ if (cadena[i]>47 && cadena[i]<58 ){ if (cont==1){ array_de_cadena[j][k]='\0';j++;k=0; } array_de_cadena[j][k]=cadena[i];k++;cont=2; } else { if (cont==2){ array_de_cadena[j][k]='\0';j++;k=0; } array_de_cadena[j][k]=cadena[i];k++;cont=1; } } for (i=0;i<=j;i++) printf ("%s \n",array_de_cadena[i]); return 0; }
Saluditos!. ...
|
|
|
916
|
Programación / Programación C/C++ / Re: ¿Qué hago mal en el uso de for?
|
en: 4 Abril 2013, 23:42 pm
|
Creo que sería más lógico averiguar si el numero1 es o no múltiplo de tres, y si no lo es tomar el valor del correspondiente múltiplo y ya en el for ir de tres en tres, vamos esto: #include <iostream> using namespace std; int main() { int numero1,numero2, multiplos3 =0,suma=0; cout << "Escribe el primer numero: " << endl; cin >> numero1; cout << "Escribe el segundo numero: " << endl; cin >> numero2; if (numero1%3!=0) numero1=numero1-numero1%3 +3; for(int i=numero1;i <= numero2; i+=3) { cout << i << " "; multiplos3++; suma+=i; } cout <<endl<<"Los multiplos de 3 comprendidos entre " << numero1 <<" y " << numero2 << " son: " << multiplos3<<endl; cout <<endl<<"Y la suma de todoe ellos es " <<suma<<endl; return 0; }
Saluditos!. ...
|
|
|
918
|
Programación / Programación C/C++ / Re: Cambiar la impresion de un arreglo.
|
en: 1 Abril 2013, 00:28 am
|
....................................... ahora tengo que convertir los que son pares en "0" y los impares en "1", .................................................
Lo normal es con un if -else, tipo: #include <stdio.h> #include <iostream> #include <conio.h> using namespace std; int pasc[' ']={0}; int x=0,n; void llenar() { cout<<"\tIngrese hasta que linea: "; cin>>n; } void pascalizar() { for (int i=0; i<n ; i++) { for (int j=x; j>=0; j--) { if(j==x || j==0) { pasc[j] = 1; } else { pasc[j] = pasc[j] + pasc[j-1]; } } x++; cout<<"\n"; for(int j=0; j<x; j++) { if (pasc[j]%2==0) cout<<"\t"<<0; else cout<<"\t"<<1; } } } int main (void) { llenar(); //clrscr(); pascalizar(); getch(); return 0; }
Te saldría esto: Ingrese hasta que linea: 18 1 1 1 1 0 1 1 1 1 1 1 0 0 0 1 1 1 0 0 1 1 1 0 1 0 1 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 1 1 0 1 0 0 0 0 0 1 0 1 1 1 1 1 0 0 0 0 1 1 1 1 1 0 0 0 1 0 0 0 1 0 0 0 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1
Aunque no me negaras que esto otro es más triángulo de Pascal: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1 1 7 21 35 35 21 7 1 1 8 28 56 70 56 28 8 1 1 9 36 84 126 126 84 36 9 1 1 10 45 120 210 252 210 120 45 10 1 1 11 55 165 330 462 462 330 165 55 11 1 1 12 66 220 495 792 924 792 495 220 66 12 1 1 13 78 286 715 1287 1716 1716 1287 715 286 78 13 1 1 14 91 364 1001 2002 3003 3432 3003 2002 1001 364 91 14 1 1 15 105 455 1365 3003 5005 6435 6435 5005 3003 1365 455 105 15 1 1 16 120 560 1820 4368 8008 11440 12870 11440 8008 4368 1820 560 120 16 1 1 17 136 680 2380 6188 12376 19448 24310 24310 19448 12376 6188 2380 680 136 17 1 1 18 153 816 3060 8568 18564 31824 43758 48620 43758 31824 18564 8568 3060 816 153 18 1 1 19 171 969 3876 11628 27132 50388 75582 92378 92378 75582 50388 27132 11628 3876 969 171 19 1
Perdón, esto en tu caso: 1 1 1 1 0 1 1 1 1 1 1 0 0 0 1 1 1 0 0 1 1 1 0 1 0 1 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 1 1 0 1 0 0 0 0 0 1 0 1 1 1 1 1 0 0 0 0 1 1 1 1 1 0 0 0 1 0 0 0 1 0 0 0 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1
Saluditos!....
|
|
|
919
|
Programación / Programación C/C++ / Re: [C] Determinante de orden N
|
en: 31 Marzo 2013, 15:18 pm
|
....................................... Pero para diagonalizar la matriz... xD No sabría como hacerlo de forma eficiente. ........................................
No es tan complicado, al menos sin pivote. Un ejemplo:/* Función para triangularizar una matriz */ /************************************************/ int triang(int N, double **a, double *b) { int i, j, k, error; double fac; for (k=0; k<N-1; k++) for (i=k+1; i<N; i++) { if (fabs(a[k][k])<EPS) return -1; fac=-a[i][k]/a[k][k]; for (j=k; j<N; j++) { a[i][j]+=a[k][j]*fac; } b[i]=b[i]+b[k]*fac; }return 1; } /* Función para resolver un sistema triangular superior */ /************************************************/
Saluditos!. ...
|
|
|
920
|
Programación / Programación C/C++ / Re: [C] Determinante de orden N
|
en: 30 Marzo 2013, 05:11 am
|
El determinante es una operacion complej, hacer un determinante de 20x20 puede trardar semanas (y me quedo corto).
Es que el sistema que utilizan es de "fuerza bruta".
Para hacerlo razonable habría que usar Gauss con/sin pivotes.
Saluditos!, ....
|
|
|
|
|
|
|