|
31
|
Programación / Programación C/C++ / Re: invertir el número entero
|
en: 20 Abril 2018, 03:48 am
|
la resolución de este problema es sencilla primero tienes que averiguar la cantidad de dígitos que tiene el numero ingresado num = numero ingresado por el usuario; digitos = 0; aux = 1;
mientras aux < num hacer: digitos = digitos + 1; aux = aux * 10;
con esto obtenemos la cantidad de dígitos que tiene el numero ahora hay que voltear el numero para ello tenemos que descomponer el numero //para el ejemplo usaremos el numero 1234 inverso = 0 parte = num/valor_proposicional //El valor posiciona es el valor que toma un dígito de acuerdo con la posición que ocupa dentro del número (unidades, decenas, centenas…) /*parte = 1234/1000*/ inverso = inverso + (parte * valor_proposicional) en este caso el valor_proposicional sera la nueva posiciona que le estemos dando /*inverso = 0 +(1 * 1)*/
y si repetimos el proceso iremos re posicionando los dígitos del numero pero para ello tenemos que cambiar el valor de nuestro numero num = num%valor_proposicional /* num = 1234%1000
esto nos devolverá 234 que son los números que nos hace falta re posicionar
|
|
|
32
|
Programación / Programación C/C++ / Re: Posición de un dígito
|
en: 15 Abril 2018, 21:05 pm
|
por que no tratas el numero como un string (char*) de esa forma podras recorrer sus posición para saber que dígito ocupa que posición de este modo #include<stdio.h> int main () { char numero[15]; int pos = 0; fprintf(stdout , "introduzca un digito: "); fprintf(stdout , "ntrodusca una posicion: "); fprintf(stdout , "%dth digito de %s es %c.\n", pos , numero , numero [pos -1]); return 0; }
|
|
|
35
|
Programación / Programación C/C++ / Re: ayuda con las cadenas
|
en: 15 Abril 2018, 00:24 am
|
la función que te a propuesto MAFUS es una función creada por el, lo único que tiene el nombre de una función ya conocida, pero si pones esa función en tu código y quitas el include de <string.h> te funcionara conmo quieres, pero como ya dijo el ésta no tiene protección contra desbordamiento de buffer eso tendras que arreglarlo
|
|
|
37
|
Programación / Programación C/C++ / Re: Consulta sobre programa C
|
en: 14 Abril 2018, 17:32 pm
|
yo he encontrado mas de una int main() { char periodo[50]; char pintor[50]; char nacion[50]; if ((strcmp (periodo , "Prehistorico")==0) || (strcmp(periodo , "egipcio")==0)){ } else if ((strcmp(periodo , "renacimiento")==0)){ //{ <-- aqui printf("Ingrese nombre del pintor: "); } if ((strcmp (pintor , "Leonardo")==0) || (strcmp(pintor , "Michelangelo")==0)){ } else if (strcmp(pintor , "Rafael")==0){ } else if ((strcmp (pintor , "Tiziano")==0) || (strcmp(pintor , "Boticelli")==0)){ } else if ((strcmp (pintor , "Greco")==0) || (strcmp(pintor , "Tintoretto")==0)){printf("Galeria 5a"); } else if (strcmp(pintor , "Bellini")==0){ } else { printf("No hay obras de este pintor \n"); } } if ((strcmp (periodo , "barroco")==0)){ //{ <-- aqui } if ((strcmp (nacion , "Espana")==0)){ printf("Galeria 6, Velzaquez y Murillo"); } else if ((strcmp(nacion , "Italia")==0)){ printf("Galeria 7, Caravaggio"); } else { printf("No hay obras de esta nacionalidad"); } //} <-- aqui else if ((strcmp(periodo , "expresionismo")==0)){ printf("Galeria 8, Kandiski"); } if ((strcmp(periodo , "impresionismo")==0)){ printf("Galeria 8, Van Gogh"); } else if ((strcmp(periodo , "fauvismo")==0)){ } if ((strcmp(periodo , "cubismo")==0)){ } else if ((strcmp(periodo , "surrealismo")==0)){ //{ <-- aqui } if ((strcmp(pintor , "Dali")==0)){ } else if ((strcmp(pintor , "Miro")==0)){ } else{ printf("No hay obras de este pintor"); } //} <-- aqui else if ((strcmp(periodo , "informalismo")==0) || (strcmp(periodo , "hiperralismo")==0)){ } else { printf("No hay obras en este periodo"); } return 0; }
te has echo un lio con los corchetes
|
|
|
38
|
Programación / Programación C/C++ / Re: No me ejecuta el printf
|
en: 13 Abril 2018, 17:34 pm
|
eso es porque solo capturas el nombre del pintor pero no le dices que hacer con el despues #include<stdio.h> #include<string.h> int main(){ char periodo[50]; char pintor[50]; char nacion[50]; if ((strcmp (periodo , "Prehistorico")==0) || (strcmp(periodo , "egipcio")==0)){ }else if ((strcmp(periodo , "renacimiento")==0)){ printf("Ingrese nombre del pintor: "); /*a qui solo capturas el nombre despues de capturarlo sale de todos los else if sin pasar por ningun otro*/ }else if ((strcmp (pintor , "Leonardo")==0) || (strcmp(pintor , "Michelangelo")==0)){ }else if (strcmp(pintor , "Rafael")==0){ }else if ((strcmp (pintor , "Tiziano")==0) || (strcmp(pintor , "Boticelli")==0)){ }else if ((strcmp (pintor , "Greco")==0) || (strcmp(pintor , "Tintoretto")==0)){ }else if (strcmp(pintor , "Bellini")==0){ }else { printf("No hay obras de este pintor"); } return 0; }
|
|
|
39
|
Programación / Programación C/C++ / Re: ordenar estructuras en c
|
en: 13 Abril 2018, 15:36 pm
|
yo he echo una versión algo diferente. ya que según la definición de javieer si en la comparación de el primer parámetro es mayor retornamos si es menor retornamos pero si son iguales pasamos a comparar el segundo parámetro de modo que: //funcion que devuelve -1 si a > b, 1 si a < b y 0 si a == b int cmpPersona(_persona a, _persona b){ si a.altura > b.altura return -1; sino a.altura == b.altura /*hacemos lo mismo con los demas parametros /*cuando lleguemos al ultimo parámetro y los dos son iguales entonces las dos estructuras son iguales por lo tanto retornamos 0*/ sino a.dni == b.dni return 0 finsi finsi /*a qui solo llegaremos si un parámetro de a es menor que b return 1; }
ahora en el main nos quedaría comparar las dos estructuras para saber cual de las dos es mayor switch(cmpPersona(a,b)){*/ case -1: fprintf(stdout, "a es > b\n"); break; case 1: fprintf(stdout, "a es < b\n"); break; case 0: fprintf(stdout, "a es == b\n"); break; }
y si lo que queremos es ordenar una lista de (TDA)personas usaríamos un algoritmo de ordenación ya conocido para el ejemplo usara el método de la burbuja void burbuja(_persona* array){ int i, j; _persona aux; for(i=1; i<max; i++){ for(j=0; j<max-i; j++){ if(cmpPersona(array[j], array[j-1]) > 0){ aux = array[j+1]; array[j+1] = array[j]; array[j] = aux; } } } }
|
|
|
|
|
|
|