Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Kenji-chan

#31
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
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: ");
scanf("%s", numero);
fprintf(stdout, "ntrodusca una posicion: ");
scanf("%d", &pos);

fprintf(stdout, "%dth digito de %s es %c.\n", pos, numero, numero[pos-1]);

return 0;
}


#33
pon tu código
#34
cuando llamas a la funcion le pasas 3 parametros cundo esta solo admite 2
strcpy(personaconD,numpe,personas.nombre);
el numpe esta de mas
#35
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
Citarésta no tiene protección contra desbordamiento de buffer
eso tendras que arreglarlo
#36
con la función
int sprintf(char *str, const char *format, ...)
de la biblioteca <stdio.h>
puedes copiar un string con formato a un char*
#37
yo he encontrado mas de una


int main()
{
char periodo[50];
char pintor[50];
char nacion[50];

printf("Ingrese periodo: ");
scanf("%s", periodo);


if ((strcmp (periodo, "Prehistorico")==0) || (strcmp(periodo, "egipcio")==0)){
printf("Galeria 1 \n");
}     

else if ((strcmp(periodo, "renacimiento")==0)){
//{ <-- aqui
printf("Ingrese nombre del pintor: ");
scanf("%s", pintor);
}
if ((strcmp (pintor, "Leonardo")==0) || (strcmp(pintor, "Michelangelo")==0)){

printf ("Galeria 2 \n");
}   
else if (strcmp(pintor, "Rafael")==0){
printf ("Galeria 3");
}   
else if ((strcmp (pintor, "Tiziano")==0) || (strcmp(pintor, "Boticelli")==0)){
printf("Galeria 4");
}   
else if ((strcmp (pintor, "Greco")==0) || (strcmp(pintor, "Tintoretto")==0)){printf("Galeria 5a");
}
else if (strcmp(pintor, "Bellini")==0){
printf("Galeria 5b");
}   
else {
printf("No hay obras de este pintor \n");
}
}
if ((strcmp (periodo, "barroco")==0)){
//{ <-- aqui
printf("Ingrese nacion: ");
scanf("%s", nacion);
}       

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)){
printf("Galeria 8, Manguin");
}
if ((strcmp(periodo, "cubismo")==0)){
printf("Galeria 9, Picasso");
}
else if ((strcmp(periodo, "surrealismo")==0)){
//{ <-- aqui
printf("Ingrese pintor: ");
scanf("%s", pintor);
}
if ((strcmp(pintor, "Dali")==0)){
printf("Galeria 10");
}
else if ((strcmp(pintor, "Miro")==0)){
printf("Galeria 11");
}
else{
printf("No hay obras de este pintor");

}
//} <-- aqui
else if ((strcmp(periodo, "informalismo")==0) || (strcmp(periodo, "hiperralismo")==0)){
printf("Galeria 12");
}
else {
printf("No hay obras en este periodo");
}


return 0;

}


te has echo un lio con los corchetes
#38
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];

printf("Ingrese periodo: ");
scanf("%s", periodo);

if ((strcmp (periodo, "Prehistorico")==0) || (strcmp(periodo, "egipcio")==0)){
printf("Galeria 1 \n");
}else if ((strcmp(periodo, "renacimiento")==0)){
printf("Ingrese nombre del pintor: ");
scanf("%s", 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)){
printf ("Galeria 2 \n");
}else if (strcmp(pintor, "Rafael")==0){
printf ("Galeria 3");
}else if ((strcmp (pintor, "Tiziano")==0) || (strcmp(pintor, "Boticelli")==0)){
printf("Galeria 4");
}else if ((strcmp (pintor, "Greco")==0) || (strcmp(pintor, "Tintoretto")==0)){
printf("Galeria 5a");
}else if (strcmp(pintor, "Bellini")==0){
printf("Galeria 5b");
}else {
printf("No hay obras de este pintor");
}

return 0;
}
#39
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:
Citar
//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

Citar
   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

Citar
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;
         }
      }
   }
}
#40
edita tu post y pon tu código entre etiquetas GeSHi
también pon los errores que te marca el compilador
para que pueda ayudarte