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

#61
Entiendo, pero la pregunta era por:

(i = 0 ; nom1[i ] && nom2[i ] && nom1[i ] == nom2[i ] ; i++)

el for va a seguir corriendo mientras nom1 en la posicion i, que?
el resto lo entiendo

Edito:
Relei tu post a ver si entendia, y creo que entendi, o sea
nom1[i ] && nom2[i ]

es equivalente a poner
nom1[i ] != 0 && nom2[i ] != 0 ?

Si es eso ya entendi todo y corto con el off :P
#62
Cita de: do-while en 25 Octubre 2010, 03:45 AM

for(i = 0 ; nom1[i] && nom2[i] && nom1[i] == nom2[i] ; i++);

ord = nom1[i] - nom2[i]; /* y ord tendra los valores de la funcion anterior */

No entiendo como definiste el for, me explicas?
#63
EDITO:
volviendo a mirar tu codigo, note
Código (cpp) [Seleccionar]
if(comp==1){
    for(let=0;let<longdef;let++){
        if(nom1[let]<nom2[let]){
            ord=1;
        }else if(nom2[let]<nom1[let]){
            ord=2;


Estas teniendo el mismo problema que pablomi
Vos tenes que poner la variable en un estado, y cambiarlo si encuentra letras que no coincide, pero no volver a ponerle en el estado inicial si encuentra despues coincidencias

Si no interpreto mal, esa parte de codigo hace que lo unico que importe son, la ultima letra de la cadena corta, y la de la misma posicion de la larga, dependiendo de esas dos te va a ordenar las cadenas

Lo arreglas poniendole el for que mencionas, porque cuando ord pasa a valer 1 o 2, el for deja de correr, deja el codigo como lo posteaste y ponele un "break;" abajo de ord=1; y ord=2;
eso hace que cuando encuentre 2 letras distintas, guarde en ord cual de los 2 mostras primero y el break te saca del ciclo for, y no necesitas complicar las condiciones del for
#64
Cita de: pablomi en 24 Octubre 2010, 20:22 PM
Te dejo un ejemplo:
Codigo
Cuidad con tu codigo, si la ultima letra de cada cadena coincide dice que son iguales, ej
Holaaaaaaaaaaaa
Nadaqueveraaaaa
#include<stdio.h>
#include<string.h>

//Compara cadenas - by pablomi

int main()
{
   int i, comparacion = 0;
   
   char cadena1[50] = "Hola";
   char cadena2[50] = "Adios";

   for(i=0;i<strlen(cadena1);i++){
       if(cadena1[i]!=cadena2[i])
           comparacion = 1;

   if(comparacion==1)
       printf("Son distintas\n");
   else
       printf("Son iguales\n");
   
   return 0;
}


ahi quedaria bien

Fijate de corregir eso, rockmore

Btw: Tene en cuenta que el strcmp ordena esciimente, no alfabeticamente
Para el strcmp Belen va antes que ana porque en el ascii las mayusculas estan primero

Cita de: Rockmore en 24 Octubre 2010, 22:33 PM
¿Debería crear un bucle comparador según si el strlen de la primera cadena es más largo que el segundo y viceversa, o hay algún otro modo que consuma menos recursos y ocupe menos líneas?
yo en tu lugar usaria una variable donde guardo la cantidad de letras que tiene la cadena mas corta, y uso esa variable para las vueltas del for
#65
Programación C/C++ / Re: Ayuda con ejercicio!
21 Octubre 2010, 20:46 PM
Con un ciclo
#66
Programación C/C++ / Re: consulta ejercicio C++
18 Octubre 2010, 21:32 PM
Y que hace la funcion atoi()?
#67
Código (cpp) [Seleccionar]
#include <iostream>
using namespace std;

int main()
{
   int mat[4][4],x,i,aux;

   //cargo matriz
   for (x=0;x<4;x++)
       cout << "Fila numero " << x+1 << endl;
       for (i=0;i<4;i++)
           cin >> mat[x][i];

   //invierto verticalmente
   for (x=0;x<2;x++)
       for (i=0;i<4;i++)
       {
           aux = mat[x][i];
           mat[x][i] = mat[3-x][i];
           mat[3-x][i] = aux;
       }

   //muestro matriz
   for (x=0;x<4;x++)
       cout << endl;
       for (i=0;i<4;i++)
           cout << mat[x][i] << " ";
return 0;
}


si la matriz es:

1 2 3 4
2 3 4 5
3 4 5 6
4 5 6 7

me la deja como

7 6 5 4
6 5 4 3
5 4 3 2
4 3 2 1

Cuando deberia ser:

4 5 6 7
3 4 5 6
2 3 4 5
1 2 3 4

O sea, que me la invirte vertical y horizontalmente, pero no entiendo por que
Ademas de que no hace caso al endl, donde muestro la matriz
Alguien me dice en que me equivoco?


EDITO:

Reinicie pc y funciona perfectamente
No se que pasaba
#68
ahh gracias, lo voy a tener en cuenta para proximos programas ^^
#69
no entendi :x
#70
Ejercicios / Re: Retos C/C++
2 Octubre 2010, 21:14 PM
Código (cpp) [Seleccionar]
#include <iostream>
using namespace std;

int main()
{
    short d1,m1,a1,d2,m2,a2,acu=0;
    cout << "Ingrese la primer fecha con el siguiente formato DD-MM-AAAA" << endl;
    cout << "Ingrese el dia" << endl;
    cin >> d1;
    cout << "Ingrese el mes" << endl;
    cin >> m1;
    cout << "Ingrese el año" << endl;
    cin >> a1;
    cout << "Ingrese la segunda fecha con el siguiente formato DD-MM-AAAA" << endl;
    cout << "Ingrese el dia" << endl;
    cin >> d2;
    cout << "Ingrese el mes" << endl;
    cin >> m2;
    cout << "Ingrese el año" << endl;
    cin >> a2;
    if (a2-a1 >=1) //dentro de este if voy a hacer la cuenta para los casos en que las dos fechas no pertenezcan al mismo año
    {
        switch (m1)
        {
            case 1:
            acu+=31-d1+334; //Le sumo la cantidad de dias que faltan para que termine el año
            break;
            case 2:
            acu+=28-d1+306;
            break;
            case 3:
            acu+=31-d1+275;
            break;
            case 4:
            acu+=30-d1+245;
            break;
            case 5:
            acu+=31-d1+214;
            break;
            case 6:
            acu+=30-d1+184;
            break;
            case 7:
            acu+=31-d1+153;
            break;
            case 8:
            acu+=31-d1+122;
            break;
            case 9:
            acu+=30-d1+92;
            break;
            case 10:
            acu+=31-d1+61;
            break;
            case 11:
            acu+=30-d1+31;
            break;
            case 12:
            acu+=31-d1;
            break;
        }
        if (a1%4 == 0 && m1 <= 2) //por si el año era biciesto
        {
            acu++;
        }
        for (int i=a1+1;i<a2;i++) //voy sumando todos los dias de año, hasta un año antes del de la segunda fecha
        {
            if (i%4 == 0)
            {
                acu+=366;
            }
            else
            {
                acu+=365;
            }
        }
        switch (m2) //le sumo los dias transcurridos del ultimo año
        {
            case 1:
            acu+=d2;
            break;
            case 2:
            acu+=31+d2;
            break;
            case 3:
            acu+=59+d2;
            break;
            case 4:
            acu+=90+d2;
            break;
            case 5:
            acu+=120+d2;
            break;
            case 6:
            acu+=151+d2;
            break;
            case 7:
            acu+=181+d2;
            break;
            case 8:
            acu+=212+d2;
            break;
            case 9:
            acu+=243+d2;
            break;
            case 10:
            acu+=273+d2;
            break;
            case 11:
            acu+=304+d2;
            break;
            case 12:
            acu+=334+d2;
            break;
        }
         if (a2%4 == 0 && (m2 <= 2 || (m2==2 && d2 == 29))) //por si el ultimo año era biciesto y la fecha era mayor o igual al 29 de febrero
        {
            acu++;
        }
    }
    if (a1==a2)
    {
        switch (m1) //Calculo cuantos dias pasaron desde que empezo el año hasta la primer fecha
        {
            case 1:
            acu=d1;
            break;
            case 2:
            acu=31+d1;
            break;
            case 3:
            acu=59+d1;
            break;
            case 4:
            acu=90+d1;
            break;
            case 5:
            acu=120+d1;
            break;
            case 6:
            acu=151+d1;
            break;
            case 7:
            acu=181+d1;
            break;
            case 8:
            acu=212+d1;
            break;
            case 9:
            acu=243+d1;
            break;
            case 10:
            acu=273+d1;
            break;
            case 11:
            acu=304+d1;
            break;
            case 12:
            acu=334+d1;
            break;
        }
        switch (m2) //Calculo cuantos dias pasaron desde que empezo el año hasta la segunda fecha, y a ese numero le resto el numero obtenido para la primer fecha
        {
            case 1:
            acu=d2-acu;
            break;
            case 2:
            acu=31+d2-acu;
            break;
            case 3:
            acu=59+d2-acu;
            break;
            case 4:
            acu=90+d2-acu;
            break;
            case 5:
            acu=120+d2-acu;
            break;
            case 6:
            acu=151+d2-acu;
            break;
            case 7:
            acu=181+d2-acu;
            break;
            case 8:
            acu=212+d2-acu;
            break;
            case 9:
            acu=243+d2-acu;
            break;
            case 10:
            acu=273+d2-acu;
            break;
            case 11:
            acu=304+d2-acu;
            break;
            case 12:
            acu=334+d2-acu;
            break;
        }
        if (a2%4 == 0 && (m1 <= 2 || (m1==2 && d1 == 29))) //por si el año es biciesto y la fecha es mayor o igual al 29 de febrero
        {
            acu++;
        }
    }
    cout <<"entre el "<<d1<<"/"<<m1<<"/"<<a1<<" y el "<<d2<<"/"<<m2<<"/"<<a2<<" pasaron "<<acu<<" dias."<< endl;
return 0;
}


no se con que dificultad vienen poniendo los retos, pero ya que nadie tira, pongo este, y si es facil bueno, el que lo haga que ponga otro mas complicado

Reto #23: Ingresar dos cadenas e informar si la segunda está contenida o no dentro de la primera.