|
1011
|
Programación / Programación C/C++ / Re: Help! Calcular máximo de 3 numeros usando función
|
en: 17 Febrero 2013, 17:09 pm
|
Estoy realizando un programa que calcula el máximo de tres números usando una función que nos de el máximo de dos números
Además de en los argumentos de la función, tienes varios errores menores que te comento en el código:#include <stdio.h> #include <stdlib.h> int mayor(int n1,int n2);/*aqui tenias"{" en lugar de ;*/ int main(){ int num1, num2, num3; int max; /*<==aqui esta de mas "mayor"*/ printf("Introduce un numero: "); scanf("%d",&num1); printf("Introduce un numero: "); scanf("%d",&num2); printf("Introduce un numero: "); scanf("%d",&num3); max = mayor(num1, num2); printf("El mayor es: %d \n", mayor(max, num3));/*y aqui tenias dos %d */ system("PAUSE"); return 0; } // FUNCION int mayor(int n1,int n2){ if (n1 > n2) return n1; else return n2; }
Aunque sería más guay calcular el máximo con una función que calcule el máximo de tres: #include <stdio.h> #include <stdlib.h> int mayor(int n1,int n2,int n3); int main(){ int num1, num2, num3; int max; printf("Introduce un numero: "); scanf("%d",&num1); printf("Introduce un numero: "); scanf("%d",&num2); printf("Introduce un numero: "); scanf("%d",&num3); max = mayor(num1, num2,num3); printf("El mayor es: %d \n", max); system("pause"); return 0; } // FUNCION int mayor(int n1,int n2,int n3){ if ((n1= n1>n2 ? n1:n2)>(n3)) return n1; else return n3; }
Saluditos!.
|
|
|
1012
|
Programación / Programación C/C++ / Re: Ayuda, programa en C .. El ahorcado....
|
en: 15 Febrero 2013, 20:36 pm
|
El código hasta ahora me va bien. Explico : Van a ser 3 palabras, no solo uno, por eso creé el aleatorio.
Pues yo te he puesto cuatro . Era para que una de ellas tuviera repetida alguna letra .
Es un código muy mejorable, pero así tienes donde fijarte:#include <stdio.h> #include <stdlib.h> #include <time.h> #include <ctype.h> #include <string.h> int main(){ char ch; char palabra[10]={0},palabras[4][10]={"futbol","pala","balon","pelota"} ;/*con letra repetida*/ int i,j,cont=0,errores=0,intentos=0,flag=0; srand (time(NULL)); int aleatorio; aleatorio =rand() % 3; for (i=0;i<3;i++) printf("%s ",palabras[i]); /*para que veas las palabras*/ printf("\n\nTe ha tocado esta palabra: \n\n"); for (i=0;palabras[aleatorio][i]!='\0';i++){ printf("_ ");palabra[i]='_'; } palabra[i]='\0'; printf("\n\n Tienes 10 intentos.\n\n"); do{ intentos++; printf("\n\nVe escribiendo las letras. Intento %d\n",intentos); ch=getchar(); while (getchar ()!='\n'); for (i=0;palabra[i]!='\0';i++){ if(ch == palabras[aleatorio][i] && palabra[i]=='_') { palabra[i]=toupper(ch); puts("\n"); for (j=0;j<strlen (palabra);j++) printf("%c ",palabra[j]); flag=1;cont++; } } if (flag ==0) { errores++; printf("Has fallado. Llevas %d errores.\n", errores); } else { printf(" Bien, has acertado.\n"); flag=0; } if (cont==strlen (palabra)){ if (errores==0) printf("\n\n TOTAL ACIERTO.\n\n"); else printf("\n\n ACIERTO con %d errores.\n\n",errores); return 1; } } while (intentos<10); return EXIT_SUCCESS; }
Saluditos!.
|
|
|
1013
|
Programación / Programación C/C++ / Re: Ayuda con un programailla de sumas aritmeticas
|
en: 14 Febrero 2013, 22:57 pm
|
Para quien nos "vea" parecería que mi código no funcionase correctamente, y todo lo contrario, hace lo que se le pide. así que sólo unos pequños comentarios, entre tú y yo:Algunos comentarios:
* Los elementos de un array pueden inicializarse mediante una lista de valores, si cada elemento es a su vez un array (como es tu caso) se deben utilizar listas anidadas, de esta forma: int M[2][12] = { {0, 3, 3, 6, 1, 4, 6, 2, 5, 0, 3, 5}, {0, 3, 4, 0, 2, 5, 0, 3, 6, 1, 4, 6} }
Creo que aquí hablaríamos de "claridad", ya que "creo" que tan correcta es una como otra opción. Por ejemplo, al declarar una matriz de tres por tres se me puede "apetecer" la primera o la segunda forma:a[3][3]={1,2,3,4,5,6,7,8,9}; a[3][3]={{1,2,3},{4,5,6},{7,8,9};
No niego que la segunda es más ·visible" y menos expuesta a errores, pero será igual de válida que la primera.* El operador lógico AND tiene mayor prioridad que el operador lógico OR, por ello en esta expresión los paréntesis son superfluos (con o sin ellos el resultado es el mismo): a%4 ==0 && a%100!=0 || (a%400==0)
Superfluo no es sinónimo de mal, sino exceso de celo. Reconozco que en este caso peque del copy´pega de un código antiguo. No es que quiera disculpar ese "exceso", pero en general más vale pecar por exceso que por defecto, más estos códigos que yo al menos hago con cierta "alegría".
* El resultado de los mentados operadores es uno si se cumple la condición y cero en caso contrario, en base a ello si revisamos el condicional:] if (a%4 ==0 && a%100!=0 || (a%400==0)) M_=M[1][mes_-1]; else M_=M[0][mes_-1];
Este se puede reducir a: M_ = M[a%4 == 0 && a%100 != 0 || a%400 == 0][mes_-1];
Esto último es de veteranía. Aunque considero que el if-else es más "entendible" para quien propuso el tema, en virtud de lo que colgó, no dejo de reconocer que es algo a tener en cuenta.Conclusión: gracias por las puntualizaciones, agudas como siempre y que me ayudan a mejorar hasta los detalles más nimios.
Saluditos!.
|
|
|
1014
|
Programación / Programación C/C++ / Re: Ayuda con getchar:(
|
en: 14 Febrero 2013, 16:22 pm
|
................... Peeeeeeeeeeeeeeeeeeeeeeeeeeeeeeero, si tu pones U, que pertenece a la palabra, te dice que has fallado, como hago para que eso no pase? En el sentido de que, que tengo que hacer para que reconozca la U ? pero antes de la F por ejemplo.. No sé si me expliqué bien...
Por ejemplo:#include <stdio.h> #include <time.h> int main(){ char ch; char ch1; int errores1; errores1 = 0; srand (time(NULL)); int aleatorio; aleatorio =+1 +rand() % 3; //if(aleatorio == 2) printf("Te ha tocado esta palabra\n"); // La palabra es FUTBOL printf("_ _ _ _ _ _"); printf("Ve escribiendo las letras\n"); ch=getchar(); while (getchar ()!='\n'); if(ch == 'f') { printf("Bien, has acertado. F _ _ _ _ _\n"); } else if(ch == 'u') { printf("Has acertado. _U _ _ _ _\n"); } else { errores1++; printf("Has fallado. Llevas %d errores.\n", errores1); } return 0; }
Saluditos!.
|
|
|
1015
|
Programación / Programación C/C++ / Re: Ayuda con un programailla de sumas aritmeticas
|
en: 14 Febrero 2013, 14:56 pm
|
Y según Wikipedia:#include <stdio.h> #include<locale.h> #include <stdlib.h> int main() { setlocale(LC_ALL, "Spanish"); int dia_=0,dia_semana=0,M_=0,mes_,a=0; int M[2][12] = {0,3,3,6,1,4,6,2,5,0,3,5, 0,3,4,0,2,5,0,3,6,1,4,6 }; char dia[7][10] = {"Domingo","Lunes","Martes","Miercoles","Jueves","Viernes","Sabado"}; while (1){ printf ("Indique el mes (1-12): "); fflush (stdout); scanf("%d",&mes_); printf ("Indique el día del mes: "); fflush (stdout); scanf("%d",&dia_); printf ("Indique el año: "); fflush (stdout); scanf("%d",&a); if (a%4 ==0 && a%100!=0 || (a%400==0)) M_=M[1][mes_-1]; else M_=M[0][mes_-1]; dia_semana=((a-1)%7+((a-1)/4 - 3*(((a-1)/100)+1)/4)%7+M_+dia_%7)%7; printf("\n%s dia de la semana %d\n\n",dia[dia_semana],dia_semana); } return EXIT_SUCCESS; }
Saluditos!.
|
|
|
1017
|
Programación / Programación C/C++ / Re: Calcular determinante de una matriz NxN
|
en: 13 Febrero 2013, 20:35 pm
|
Os dejo aquí un programa que me creé para calcular determinantes de matrices NxN. Personalmente no me gustan los algoritmos recursivos, pero funcionan de maravilla en este caso Consejos, mejoras Y tanto que funciona bien ¡ ¡ ¡Sólo unas pequeñas observaciones:
* Si el tamaño es 1 el determinante es el número y en tu código lo transformas automáticamente en un determinante de 2x2.
* Cambiaría, para que no resulte "espesa" la entrada de datos y que los índices sean "matemáticos" (no se suele usar en cálculo (0,0) sino (1,1) para la primera posición):
void Leer_matriz(int** a,unsigned int MAX) { int i,j; cout<<"Introduce el numero para la posicion: "<<endl; for (j = 0; j < MAX; j++) for (i = 0; i < MAX; i++) { cout<<" ("<<i+1<<","<<j+1<<") = "; cin>>a[i][j]; } }
Como ves, chorradas al fin y al cabo.Saluditos!.
P.D:Y gracias por compartir
|
|
|
1018
|
Programación / Programación C/C++ / Re: Descomponer numero en factores..
|
en: 13 Febrero 2013, 19:55 pm
|
Una discusión algo técnica (y en ingles) donde se explica el porque y se da una alternativa es
En resumen, con paréntesis al final SÍ se inicializan a cero, comprobado:int *factores=new int[32]();//con parentesis se inicializan a cero
No siendo necesario:for (i=0;i<32;i++) factores[i]=0;
Saluditos!. . .... y gracias n-ésimas amigo rir.
|
|
|
1020
|
Programación / Programación C/C++ / Re: Ayuda lenguaje C color en los programas
|
en: 13 Febrero 2013, 16:32 pm
|
Como agregarle colores en fondo y texto a un programa como para turbo C o dev C ayuda programacion en lenguaje C ?
Espero que te sirva el ejemplo:#include <windows.h> #include <stdio.h> #include<stdlib.h> int main() { system("color 70"); HANDLE hOut; hOut = GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleTextAttribute(hOut, FOREGROUND_RED); printf ("Red \n"); SetConsoleTextAttribute(hOut, FOREGROUND_RED | FOREGROUND_INTENSITY); printf ("Red\n" ); SetConsoleTextAttribute(hOut, FOREGROUND_GREEN); printf ("Green \n"); SetConsoleTextAttribute(hOut, FOREGROUND_GREEN | FOREGROUND_INTENSITY); printf ("Green\n"); SetConsoleTextAttribute(hOut, FOREGROUND_BLUE); printf ("Blue \n"); SetConsoleTextAttribute(hOut, FOREGROUND_BLUE | FOREGROUND_INTENSITY); printf ("Blue\n"); SetConsoleTextAttribute(hOut, FOREGROUND_RED | FOREGROUND_GREEN); printf ("Yellow \n"); SetConsoleTextAttribute(hOut, FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_INTENSITY); printf ("Yellow\n"); SetConsoleTextAttribute(hOut, FOREGROUND_GREEN | FOREGROUND_BLUE); printf ("Cyan \n"); SetConsoleTextAttribute(hOut, FOREGROUND_GREEN | FOREGROUND_BLUE | FOREGROUND_INTENSITY); printf ("Cyan\n"); SetConsoleTextAttribute(hOut, FOREGROUND_BLUE | FOREGROUND_RED); printf ("Magenta \n"); SetConsoleTextAttribute(hOut, FOREGROUND_BLUE | FOREGROUND_RED | FOREGROUND_INTENSITY); printf ("Magenta\n"); SetConsoleTextAttribute(hOut, FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE); printf ("White \n"); SetConsoleTextAttribute(hOut, FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE | FOREGROUND_INTENSITY); printf ("White\n"); // Set text color as Yellow with white background. /* SetConsoleTextAttribute( GetStdHandle( STD_OUTPUT_HANDLE ), FOREGROUND_INTENSITY | // Set Text color FOREGROUND_RED | FOREGROUND_GREEN | // Text color as Yellow. BACKGROUND_INTENSITY | // Set Background color BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE ); // White Bg*/ /*PARA system ("color n n"): DEBES COGER UNA COMBINACIóN DE NUMERO Y LETRA: Color de consola : 0 = Negro 1 = Azul 2 = Verde 3 = Aguamarina 4 = Rojo 5 = Purpura 6 = Amarillo 7 = Blanco 8 = Gris 9 = Azul claro Color de texto: A = Verde claro B = Aguamarina claro C = Rojo claro D = Purpura claro E = Amarillo claro F = Blanco brillante*/ return 0; }
Saluditos!.
|
|
|
|
|
|
|