Estoy buscando urgentemente un código C de 300-400 líneas. ¿Algún experto puede facilitarme un programa? . . . . ¡Gracias!
El triángulo de Yang Hui es un triángulo:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
Este es esencialmente un binomio triangular de la forma (a+b) Los coeficientes de la enésima potencia están dispuestos en un triángulo, que se caracteriza porque tanto el lado izquierdo como el derecho son todos 1. A partir de la segunda fila, cada número en el medio es la suma de dos números adyacentes en la fila anterior. Esta pregunta se utiliza a menudo en ejercicios de programación.
A continuación se ofrecen seis soluciones diferentes.
Solución 1
#include
main()
{ int i,j,n=0 , a[17][17]={0};
while(n<1 || n>16)
{ printf( "Ingrese el número de líneas del formato angular triángulo :");
scanf("%d",&n);
}
for(i=0;i a[i][0]=1 for(i=1;i for( j=1;j< = i;j++) a[i][j]=a[i-1][j-1]+a[i-1][j]; para ( i=0;i { for(j=0;j<=i;j++) printf("%5d",a[i ] [ j]); printf("/n"); } } } Nota: La solución 1 es la más fácil de imaginar. Cada parte tiene una función separada y el programa es superficial. Solución 2 #include main() { int i,j,n=0 , a[17][17]={1}; while(n<1 || n>16) { printf("Ingrese el número de filas de Yang Hui triángulos: "); scanf("%d",&n); } for(i=1;i { a[i][0]=1 for(j=1;j<=i;j++) a[ i][ j ]=a[i-1][j-1]+a[i-1][j]; } for(i=0;i { for(j=0;j<=i;j++) printf("%5d",a[i][j]); printf("\n"); } } Nota: La solución 2 se basa en la Solución 1 y cambiará la primera columna El comando establecido en 1 se movió al bucle doble a continuación, reduciendo el número de bucles en uno. Tenga en cuenta los cambios en la matriz de inicialización. Solución 3 #include main() { int i,j,n=0 , a[17][17]={0,1}; while(n<1 || n>16) { printf("Ingrese el número de filas de Triángulos de Yang Hui:"); scanf("%d",&n); } for(i=1;i<=n ; i++) for(j=1;j<=i;j++) a[i][j]=a[i-1][j-1]+ a [i-1][j]; for(i=1;i<=n;i++) { for(j=1;j<=i;j++ ) printf("%5d",a[i][j]); printf("\n"); } } p > Nota: La solución tres se basa en las soluciones uno y dos, eliminando el comando para establecer la primera columna en 1 y prestando atención a los cambios en la inicialización de la matriz. Solución 4 #include main() { int i,j,n=0 , a[17][17]={0,1}; while(n<1 || n>16) { printf("Ingrese el número de filas de Triángulos de Yang Hui:"); scanf("%d",&n); } for(i=1;i<=n ; i++) { for(j=1;j<=i;j++) { a[i][j]=a[ i-1][j-1 ] +a[i-1][j]; printf("%5d",a[i][j]); ("\n"); } } Nota: La solución 4 se basa en la Solución 3, combinando cálculo e impresión en un doble ciclo. Solución 5 #include main() { int i,j,n=0 , a[17]={1},b[17]; while(n<1 || n>16) { printf("Ingrese el número de filas de Triángulos Yang Hui: "); scanf("%d",&n); } for(i=0;i { b[0]=a[0]; for(j=1;j<=i;j++) b[j ] =a[j-1]+a[j]; for(j=0;j<=i;j++) { a[j]=b[j ] printf("%5d",a[j]); } printf("\n"); } } Nota: Las soluciones 1 a 4 utilizan matrices bidimensionales, que ocupan más espacio. La solución cinco sólo utiliza dos matrices unidimensionales. Solución VI #include main() { int i,j,n=0 , a[17]={0,1},l,r; while(n<1 || n>16) { printf("Ingrese el número de filas de los triángulos Yang Hui:"); scanf("%d",&n); } for(i=1;i<= n ;i++) { l=0; for(j=1;j<=i;j++) { r=a[j] ; a[j]=l+r; l=r; printf("%5d",a[j]); } printf("\n"); } } Comentarios: Solución 6 únicamente Se utiliza una matriz unidimensional y dos variables temporales.