|
1161
|
Programación / Programación C/C++ / Re: DETERMINAR MAYOR O MENOR EN ARREGLO
|
en: 12 Noviembre 2012, 14:53 pm
|
Fíjate en srand(time(0) y el uso de la librería time, para que no salgan siempre los mismos valores. Por lo demás quedaría algo así: #include <stdio.h> #include <stdlib.h> #include <time.h> /*Ejercicio 5: una agencia de carros tiene 15 modelos de autos y 10 vendeores se desea conocer que modelo se vende mas, quien es el vendedor que vende mas y el total de autos que vende la agencia*/ int main(int argc, char *argv[]) { int x, y, agencia[10][15], SC, SR, TA,modelo=0,modelo1=0,Vendedor; char vendedor[10][40]={{"Ruben"},{"Ivonne"},{"Jesus"}, {"Nayelli"},{"Miguel"},{"Angel"},{"Carlos"},{"Marco"},{"Lupe"}, {"Lupita"}}; printf("Agencia de carros a ver si ahorra, S.A. de C.V.\n\n"); printf("\tM1 M2 M3 M4 M5 M6 M7 M8 M9 M10 M11 M12 M13 M14 M15 TOTAL\n\n"); srand(time(0)); /*SE GENERA LA TABLA*/ for (x=0; x<10; x++) { for (y=0; y<15; y++) { agencia[x][y] = rand()%4; } } /*SUMA POR RENGLONES*/ TA = 0; for (x=0; x<10; x++) { printf("%s\t ", vendedor[x]); SR = 0; for (y=0; y<15; y++) { printf("%d ", agencia[x][y]); SR = SR + agencia[x][y]; }if (SR>modelo) {modelo=SR;Vendedor=x;} TA = TA + SR; printf(" %i\n\n", SR); } /*SUMA POR COLUMNAS*/ printf("TOTAL\t"); modelo=0; for (y=0; y<15; y++) { SC = 0; for (x=0; x<10; x++) { SC = SC + agencia[x][y]; }if (SC>modelo) {modelo=SC;modelo1=y;} printf("%d ", SC); } printf("\n\nEL MODELO MAS VENDIDOS ES: M%d\n\n", modelo1+1); printf("\n\nEL MEJOR VENDEDOR ES: %s\n\n", vendedor[Vendedor]); system("PAUSE"); return 0; }
Saludos!.
|
|
|
1162
|
Programación / Programación C/C++ / Re: Ayuda programa
|
en: 11 Noviembre 2012, 16:49 pm
|
Hay una cosa que no entiendo, que es lo que quieres decir con: suma+=num??? De entrada suma=numero=primer numero, pero para sacar la media de los dos al introducir el segundo hago suma=suma+numero o en forma abreviada suma+=numero (=número primero más número nuevo), que es equivalente a sumar al primer numero (que está en suma) el segundo numero). Espero que te aclare algo este rollo. Saludos!.
|
|
|
1163
|
Programación / Programación C/C++ / Re: Ayuda programa
|
en: 11 Noviembre 2012, 15:54 pm
|
Aquí tienes una pista, habría que hacerlo más eficiente pero para empezar ya tienes algo: #include <stdio.h> int main() { int num=0,suma=0,i=0; do{ printf("Introduzca numero= "); suma=num; scanf ("%d",&num); suma+=num; if (num==0) break; if (i==0) { printf("Media= %g\n",num/1.0); i=1; } else printf("Media= %g\n",suma/2.0); }while (1); return 0; }
O bien: #include <stdio.h> int main() { int num=0,suma=0,i=0; printf("Introduzca numero= "); scanf ("%d",&num); printf("Media= %g\n",num/1.0); do{ printf("Introduzca numero= "); suma=num; scanf ("%d",&num); suma+=num; if (num==0) break; printf("Media= %g\n",suma/2.0); }while (1); return 0; }
Saludos!.
|
|
|
1164
|
Programación / Programación C/C++ / Re: Duda con strlen
|
en: 10 Noviembre 2012, 23:43 pm
|
Inspirado por 0xDani y sin función: #include <stdio.h> int main() { int i,k=0; char cadena [256]; printf ("Introduce la cadena: "); gets (cadena); for (i=0;cadena[i]!='\0';i++) cadena[i]!=' ' ? k++:0 ; printf ("longitud: %d",k); return 0; }
Saludos!.
|
|
|
1165
|
Programación / Programación C/C++ / Re: TENGO PROBLEMAS PARA HACER UN ARREGLO Y SUMAR COLUMAS Y REGLONES
|
en: 10 Noviembre 2012, 21:47 pm
|
No sé si he pillado del todo la idea, creo que sí:#include <stdio.h> #include <stdlib.h> #include <time.h> /*PROGRAMA QUE GENERA UNA MATRIZ Y CALCULA SU TRAZA tr(M) Y SUMAS POR COLUMNAS Y RENGLONES*/ int main(int argc, char *argv[]) { int x, y, tabla[10][10], R, C, T=0,Sr=0,Sc=0, SR[10]={0}, SC[10]={0}, z; printf("Cuantos renglones quiere que tenga la matriz: "); srand(time(0)); scanf("%i", &R); printf("\nCuantas columnas quiere que tenga la matriz: "); scanf("%i", &C); printf("\nMATRIZ\n\n"); /*SE GENERA LA MATRIZ*/ for (x=0; x<R; x++) { for (y=0; y<C; y++) { tabla[x][y] = rand()%10; printf("\t%d", tabla[x][y]); } printf("\n\n"); } /*SE CALCULA LA TRAZA*/ for (x=0; x<R; x++) { for (y=0; y<1; y++) T +=tabla[x][x]; } /*SE CALCULA LA SUMA POR FILAS*/ for (x=0; x<C; x++){ for (y=0; y<R; y++) SR[x] += tabla[x][y]; } for (x=0; x<R; x++) { printf("\t%d", SR[x]); Sr+=SR[x]; }printf(" = %d ", Sr); printf(" =renglones\n"); /*SE CALCULA LA SUMA POR COLUMNAS*/ for (y=0; y<C; y++){ for (x=0; x<R; x++) SC[y] += tabla[x][y]; } for (y=0; y<C; y++) { printf("\t%d", SC[y]); Sc+=SC[y]; }printf(" = %d ", Sc); printf("= columnas"); printf("\n\ntr(M) = %d", T); printf("\n\n"); system("PAUSE"); return 0; }
Saludos!.
|
|
|
1166
|
Programación / Programación C/C++ / Re: Duda con strlen
|
en: 10 Noviembre 2012, 21:01 pm
|
Una forma simple sería:#include <stdio.h> #include <string.h> int main() { int i,k,l; char cadena [256]; printf ("Introduce la cadena: "); gets (cadena); k=strlen (cadena); printf ("long: %d",k); puts("\n"); for (i=0;i<k;i++) { if (cadena[i]==' ') k--; } printf ("long: %d",k); return 0; }
Saludos!.P.D:El problema en el código de 0xDani es que el primer caracter sea un espacio en blanco, entonces el if se queda en un bucle cerrado.
|
|
|
1167
|
Programación / Programación C/C++ / Re: ejercicio matrices c
|
en: 9 Noviembre 2012, 21:04 pm
|
sigo sin entenderlo...
Lo que hago es crear una nueva matriz con el intercambio de las filas, así no pierdo la matriz inicial. Eso es porque presupongo que se va a "hacer" otras cosas con la matriz inicial, como cambiar diagonales, obtener la simétrica sumar o restar, etc. Por ejemplo: #include <stdio.h> #define TAM 4 #include <time.h> int i,j; int main() { int fila1,fila2,temp1,temp2,a[TAM][TAM],b[TAM][TAM],c[TAM][TAM],d[TAM][TAM],e[TAM][TAM]; srand(time(0)); generar_matriz (a); imprimir (a); /********** cambio fila primera ultima **********/ copia_matriz (a,b); puts ("cambio fila primera ultima\n"); for (j=0;j<TAM;j++) { temp1=b[0][j]; temp2=b[TAM-1][j]; b[TAM-1][j]= temp1; b[0][j]= temp2; } imprimir (b); /**************** cambio filas ***************/ copia_matriz (a,e); puts ("cambio filas\n"); printf ("Numero de fila1: "); scanf ("%d",&fila1); printf ("Numero de fila2: "); scanf ("%d",&fila2); puts ("\n"); for (j=0;j<TAM;j++) { temp1=e[fila1-1][j]; temp2=e[fila2-1][j]; e[fila2-1][j]= temp1; e[fila1-1][j]= temp2; } imprimir (e); /************* cambio diagonales *****************/ copia_matriz (a,c); puts ("cambio diagonales\n"); for (i=0;i<TAM;i++) { temp1=c[i][i]; temp2=c[i][TAM-1-i]; c[i][TAM-1-i]= temp1; c[i][i]= temp2; } imprimir (c); /************* matriz simetrica *****************/ copia_matriz (a,d); puts ("matriz simetrica\n"); for (i=0;i<TAM;i++) for (j=0;j<TAM && j<i;j++) { temp1=d[i][j]; temp2=d[j][i]; d[j][i]= temp1; d[i][j]= temp2; } imprimir (d); return 0; } /**************************************************/ int generar_matriz (int a[][TAM]) { for (i=0;i<TAM;i++) { for (j=0;j<TAM;j++) { /* printf("a[%d][%d]= ",i,j); scanf("%d",&a[i][j]);*/ a[i][j]=rand() % 10 ; } } } /**************************************************/ int imprimir (int a[][TAM]) { int i,j; for (i=0;i<TAM;i++) { for (j=0;j<TAM;j++) { printf("%d ",a[i][j]); }puts("\n"); }puts("\n"); } /**************************************************/ int copia_matriz (int matriz1[][TAM],int matriz2[][TAM]) { int i,j; for (i=0;i<TAM;i++) { for (j=0;j<TAM;j++) { matriz2[i][j]=matriz1[i][j]; } } } /**************************************************/
Si sólo quieres cambiar las filas y punto el código de cypascal te vale. Saludos!.
|
|
|
1169
|
Programación / Programación C/C++ / Re: ¿COMO HAGO QUE UN PROGRAMA BORRE PANTALLA Y REGRESE HASTA EL INICIO?
|
en: 9 Noviembre 2012, 13:08 pm
|
Menudo desastre de código . A ver si era esto lo que querías: REEDITO LOS INDICES A CERO #include <stdio.h> #include <stdlib.h> /*PROGRAMA QUE CREA UNA MATRIZ A Y UNA MATRIZ B; DA 4 OPCIONES: SUMAR, RESTAR (A - B), RESTAR (B - A) Y TERMINAR PROGRAMA*/ int main(int argc, char *argv[]) { int x, y, matrizA[10][10], matrizB[10][10], matrizR[10][10], RA, CA, RB, CB, O; printf("Cuantas lineas quiere que tenga la matriz A: "); scanf("%d", &RA); printf("\nCuantas columnas quiere que tenga la matriz A: "); scanf("%d", &CA); printf("\nCuantas lineas quiere que tenga la matriz B: "); scanf("%d", &RB); printf("\nCuantas columnas quiere que tenga la matriz B: "); scanf("%d", &CB); /*SE GENERA LA MATRIZ A*/ for (x=0; x<RA; x++) { for (y=0; y<CA; y++) { matrizA[x][y] = rand()%10; } } printf("\n"); /*SE GENERA LA MATRIZ B*/ for (x=0; x<RB; x++) { for (y=0; y<CB; y++) { matrizB[x][y] = rand()%10; } } while (1){ system("pause"); system("cls"); printf("\nMATRIZ A\n\n"); for (x=0; x<RA; x++) { for (y=0; y<CA; y++) { printf("%d ", matrizA[x][y]); }printf("\n"); printf("\n\n"); } printf("MATRIZ B\n\n"); for (x=0; x<RB; x++) { for (y=0; y<CB; y++) { printf("%d ", matrizB[x][y]); }printf("\n"); } printf("\n\n"); /*SE ELIGE LA OPERACION*/ printf("1.-SUMA\n\n2.-RESTA (A - B)\n\n3.-RESTA (B - A)\n\n4.-TERMINAR APLICACION\n\n"); printf("QUE OPERACION DESEA REALIZAR: "); scanf("%d", &O); /*SE HACE LA OPERACION ELEGIDA*/ switch (O) { /*SUMA*/ case 1: if (RA!=RB || CA!=CB) { printf("\nNO SE PUEDEN SUMAR MATRICES DE DISTINTO ORDEN\n\n"); break; } else { printf("\nMATRIZ RESULTANTE\n\n"); for (x=0; x<RB; x++) { for (y=0; y<CB; y++) { matrizR[x][y]=matrizA[x][y]+matrizB[x][y]; printf("%d ", matrizR[x][y]); }printf("\n"); } printf("\n\n"); break; } /*RESTA (A - B)*/ case 2: if (RA!=RB || CA!=CB) { printf("\nNO SE PUEDEN RESTAR MATRICES DE DISTINTO ORDEN\n\n"); break; } else { printf("\nMATRIZ RESULTANTE\n\n"); for (x=0; x<RB; x++) { for (y=0; y<CB; y++) { matrizR[x][y]=matrizA[x][y]-matrizB[x][y]; printf("%d ", matrizR[x][y]); }printf("\n"); } printf("\n\n"); break; } /*RESTA (B - A)*/ case 3: if (RA!=RB || CA!=CB) { printf("\nNO SE PUEDEN RESTAR MATRICES DE DISTINTO ORDEN\n\n"); break; } else { printf("\nMATRIZ RESULTANTE\n\n"); for (x=0; x<RB; x++) { for (y=0; y<CB; y++) { matrizR[x][y]=matrizB[x][y]-matrizA[x][y]; printf("%d ", matrizR[x][y]); }printf("\n"); } printf("\n\n"); break; } case 4: system("pause"); return 0; break; } } return 0; }
Aunque a mí me gusta más así: Saludos!.#include <stdio.h> #include <stdlib.h> /*PROGRAMA QUE CREA UNA MATRIZ A Y UNA MATRIZ B; DA 4 OPCIONES: SUMAR, RESTAR (A - B), RESTAR (B - A) Y TERMINAR PROGRAMA*/ int main(int argc, char *argv[]) { int x, y, matrizA[10][10], matrizB[10][10], matrizR[10][10], RA=0, CA=0, RB=1, CB=1, O; while (RA!=RB || CA!=CB){ printf("Cuantas lineas quiere que tenga la matriz A: "); scanf("%d", &RA); printf("\nCuantas columnas quiere que tenga la matriz A: "); scanf("%d", &CA); printf("\nCuantas lineas quiere que tenga la matriz B: "); scanf("%d", &RB); printf("\nCuantas columnas quiere que tenga la matriz B: "); scanf("%d", &CB); if (RA!=RB || CA!=CB) printf ("Han de tener las mismas lineas y columnas\npara sumar o restar\n"); } /*SE GENERA LA MATRIZ A*/ for (x=0; x<RA; x++) { for (y=0; y<CA; y++) { matrizA[x][y] = rand()%10; } } printf("\n"); /*SE GENERA LA MATRIZ B*/ for (x=0; x<RB; x++) { for (y=0; y<CB; y++) { matrizB[x][y] = rand()%10; } } while (1){ system("pause"); system("cls"); printf("\nMATRIZ A\n\n"); for (x=0; x<RA; x++) { for (y=0; y<CA; y++) { printf("%d ", matrizA[x][y]); }printf("\n"); printf("\n\n"); } printf("MATRIZ B\n\n"); for (x=0; x<RB; x++) { for (y=0; y<CB; y++) { printf("%d ", matrizB[x][y]); }printf("\n"); } printf("\n\n"); /*SE ELIGE LA OPERACION*/ printf("1.-SUMA\n\n2.-RESTA (A - B)\n\n3.-RESTA (B - A)\n\n4.-TERMINAR APLICACION\n\n"); printf("QUE OPERACION DESEA REALIZAR: "); scanf("%d", &O); /*SE HACE LA OPERACION ELEGIDA*/ switch (O) { /*SUMA*/ case 1: printf("\nMATRIZ RESULTANTE\n\n"); for (x=0; x<RB; x++) { for (y=0; y<CB; y++) { matrizR[x][y]=matrizA[x][y]+matrizB[x][y]; printf("%d ", matrizR[x][y]); }printf("\n"); } printf("\n\n"); break; /*RESTA (A - B)*/ case 2: printf("\nMATRIZ RESULTANTE\n\n"); for (x=0; x<RB; x++) { for (y=0; y<CB; y++) { matrizR[x][y]=matrizA[x][y]-matrizB[x][y]; printf("%d ", matrizR[x][y]); }printf("\n"); } printf("\n\n"); break; /*RESTA (B - A)*/ case 3: printf("\nMATRIZ RESULTANTE\n\n"); for (x=0; x<RB; x++) { for (y=0; y<CB; y++) { matrizR[x][y]=matrizB[x][y]-matrizA[x][y]; printf("%d ", matrizR[x][y]); }printf("\n"); } printf("\n\n"); break; case 4: system("pause"); return 0; break; } } return 0; }
|
|
|
1170
|
Programación / Programación C/C++ / Re: ejercicio matrices c
|
en: 9 Noviembre 2012, 12:16 pm
|
como se haría para intercambiar filas? no entiendo.. Por ejemplo, si quisieras cambiar la primera fila por la última sería: puts ("cambio fila primera ultima\n"); for (j=0;j<TAM;j++) { temp1=b[0][j]; temp2=b[TAM-1][j]; b[TAM-1][j]= temp1; b[0][j]= temp2; }
Todo es jugar con los subídices cero y TAM-1; para cabiar la 3ª fila por la 5ª serían esos valores 2 y 4 en lugar de cero y TAM-1. Saludos!.
|
|
|
|
|
|
|