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 - palacio29

#41
Hola.

Tengo un ejercicio en el cual tengo 2 arreglos y tengo que crear un tercer arreglo que contenga los dos arreglos anteriores de manera ordenada.
No puedo usar arreglos auxiliares, tampoco puedo usar burbujeo.
Lo hago y el codigo tiene logica, pero no logro que funcione correctamente.

Ejemplo:

Arreglo 1: 1,2,3,6
Arreglo 2. 4,5,8,9.
Resultado: 1,2,3,4,5,6,8,9.
Resultado Que Me Da a mi (Horrible) :  1,2,3,6


#include <stdio.h>
#include <stdlib.h>
void CARGA(int arreglo[10]);
void imprimir(int arreglo[20]);
void unir(int arreglo1[10],int arreglo2[10],int resultante[20]);
int main()
{
    int arreglo1[10]={0};
    int arreglo2[10]={0};
    int resultante[20]={0};
    printf("Ingrese arreglo 1: \n ");
    CARGA(arreglo1);
    printf("\nIngrese arreglo 2:  \n ");
    CARGA(arreglo2);

    printf("\n");
    printf("\nEl arreglo resultante es: \n");
    unir(arreglo1,arreglo2,resultante);
    imprimir(resultante);
    return 0;
}
void CARGA(int arreglo[10])
{
    int i=0;
    int numero;

    scanf("%d",&numero);
    while(numero!=0)
    {
        arreglo[i]=numero;
        i++;
        scanf("%d",&numero);
    }
    arreglo[i]=0;

}
void imprimir(int arreglo[20])
{
    int i=0;

    for(i=0;i<10;i++)
    {
        if(arreglo[i]!=0)
        {
            printf(" %d - ",arreglo[i]);
        }
    }

}

void unir(int arreglo1[10],int arreglo2[10],int resultante[20])
{
    int i=0,j=0,k=0;

    while(arreglo1[i]!=0)
    {
        while(arreglo2[j]!=0)
        {
            if(arreglo1[i]<arreglo2[j])
            {

                resultante[k]=arreglo1[i];
            }
            else
            {

                resultante[k]=arreglo2[j];
            }
            j++;
        }
        j=0;
        k++;
        i++;
    }

resultante[k]=0;



}
#42
Cita de: MRx86 en 26 Noviembre 2016, 02:12 AM
Es que un valor negativo no es un valor falso, solo cero, esta linea de tu codigo:

int n1=4;

Cambiala por:

int n1=0;

Y vez que pasa..

Saludos

Muchas gracias!,ahora si entendi, Tenes idea donde puedo leer bien esto?..Porque  estoy haciendo finales de una materia de informatica y suelen aparecer este tipo de cosas raras y por mas que lea operadores logicos, no veo donde explican estas cosas por ningun lado.
#43
Cita de: MRx86 en 26 Noviembre 2016, 01:57 AM
Hola, ese "&&" es un AND logico, y ya que todo numero mayor a cero se toma como un valor verdadero, por eso te pone "Entre". Ponle a una de las variables un valor cero para que veas como dice "No Entre".

Muchas gracias, pero hay algo que no entiendo, si yo a una variable le pongo un valor negativo pone que entra igualmente.
#44
Hola

Tengo este programa y no logro entender que es lo que hace un doble uppersand en ambas variables.
Les paso el codigo

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>


int main()
{

int n1=4;
int n2=5;

if(n1&&n2)
{
    printf("Entre");
}
else
{
    printf("\nNo entre");
}


return 0;
}


Asi sea poniendo los mismos valores o distintos, siempre pone "Entre", no logro entender que significa if (var1&&var2)
#45
Hola

Tengo que hacer un ejercicio en el cual el usuario ingrese un texto, el texto se va a guardar en un arreglo de tipo char. Lo que tengo que hacer es quitar del arreglo aquellos caracteres que sean la letra "o".
Lo tengo que hacer de manera que si yo ingreso la frase "Hola Mundo"...Tiene que quedar
"Hla Mund".
Es decir, me va a quedar un arreglo mas chico..
Es importante destacar que NO PUEDO USAR ARREGLOS AUXILIARES.

Si fuera con auxiliares es muy sencillo. Lo estoy intentando hacer haciendo que cuando encuentre una letra "o",se mueva todo el arreglo una posicion hacia la izquierda, pero no logre hacerlo. Les dejo mi codigo haber si me pueden ayudar plz.

#include <stdio.h>
#include <stdlib.h>

int main()
{
    char texto[500];
    int i=0,j=0;
    printf("Ingrese el texto:");
    gets(texto);
    printf("\nLo ingresado es %s",texto);
    while(texto[i]!='\0')
    {
        if(texto[i]=='o')
        {
                if(texto[i+1]!='\0')
                {
                    while(texto[j]!='\0')
                    {
                        if(texto[j]!='\0')
                        {
                            texto[j]=texto[j+1];
                        }
                        else
                        {
                            texto[j]='\0';
                        }
                        j++;
                    }
                    texto[j]='\0';
                }
                else
                {
                    texto[i]='\0';
                }
                j=0;


        }

            i++;

    }
    printf("\nLo ingresado modificado es\n %s",texto);
    return 0;
}


Lo pense en el momento, pero si ustedes tienen una mejor logica de hacer esto mejor, porque lo mio son muchas lineas y medio complicado.
#46
Para el tablero podes crear una matriz usando arreglos bidimensionales.
Pero como dijo el de arriba, te recomiendo pensarlo mucho y que empieces a hacerlo y consultar dudas puntuales o mostrar lo que tenes hecho.
1) Escribi toda la logica en un papel borrador
2) Escribi en un borrador como lo harias en lenguaje c
3) Empeza a programarlo usando algun compilador, yo uso el codeblocks.
#47
Hay una funcion llamada stringcompare, creo que se llama strcmp.La buscas en el amigo google y es muy facil.
Lo que hace es comparar caracter por caracter.
#48
En la primera funcion lo que tendrias que hacer es cada vez que pidas un nuevo numero, hacer un for o un while en el cual busques en tooodo el arreglo si el numero que te estan ingresando esta ya en el arreglo.
Luego, para ordenarlo de manera ascendente o descendente, podes llamar a otra funcion o en la misma funcion y usar un burbujeo.
El burbujeo es un codigo que esta por todos lados, es siempre el mismo y ordena el arreglo de la manera que vos queres.

En la segunda es prácticamente lo mismo, recorres con un while el arreglo y si el elemento que queres eliminar esta dentro del arreglo, lo eliminas. Y haces un burbujeo tmb.
El tema es que cuando vos elimines el elementos esa posicion va a estar vacia, por lo cual lo que tenes que hacer es mover toodo lo que queda del arreglo 1 posicion de manera que quede ordenado (Esta ultima parte no me acuerdo como se hace, quizas alguien mas experimentado puede aportar).
#49
Cita de: MAFUS en 26 Octubre 2016, 19:44 PM
El problema es que tu lista crece por el final pero quitas por el principio.

Y como puedo hacer que el POP tome el ultimo elemento?

Si mi lista es 3 - 5 -7 -9

Yo quiero sacar el 9, luego el 7, luego el 5 y asi sucesivamente pero nose como empezar desde  el final e ir para el principio, solo se ir desde el comienzo hasta el final.
#50
Cita de: matiapache12 en 26 Octubre 2016, 16:46 PM
esta es la parte del codigo, necesito que me ordene primero por apellido de manera ascendente y despues por nombre de manera descendente
AYUDA PORFAAA
int i;
   int j;
   eCliente auxi;
   eCliente auxo;
   for (i=0;i<tam;i++)
   {
   for (j=0;j<tam-1;j++)
   {
   if (strcmp(clientes[i].apellido, clientes[j].apellido)>0)
   {
   auxi=clientes[i];
   clientes[i]=clientes[j];
   clientes[j]=auxi;
   for(i=0;i<tam;i++)
   {
   if(strcmp(clientes[i].apellido, clientes[j].apellido)==0)
   {

   for (i=0;i<tam;i++)
   {
   for (j=0;j<tam-1;j++)
   {
   if (strcmp(clientes[i].nombre, clientes[j].nombre)<0)
   {
   auxo=clientes[i];
   clientes[i]=clientes[j];
   clientes[j]=auxo;
   }
   }
   }
   }
   }
   }
   }
   }



Mod: Los códigos deben ir en etiquetas GeSHi

No recuerdo muy bien pero creo que el for es asi

for(i=0;i<N;i++)
{
    for(j=i+1;j<N;i++)
     {

CODIGO
     }

}


Quizas de la manera que lo haces vos esta bien, pero yo siempre lo uso asi cuando es ordenar, en cuanto a las demas sentencias, creo que el strcpy esta bien y los auxiliares y las demas asignaciones tambien estan bien, fijate si es el for.