elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


  Mostrar Mensajes
Páginas: 1 2 3 4 5 6 [7] 8
61  Programación / Programación C/C++ / Re: Comparar cadenas sin usar strcmp en: 25 Octubre 2010, 04:26 am
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  Programación / Programación C/C++ / Re: Comparar cadenas sin usar strcmp en: 25 Octubre 2010, 03:53 am
Código
  1. for(i = 0 ; nom1[i] && nom2[i] && nom1[i] == nom2[i] ; i++);
  2.  
  3. ord = nom1[i] - nom2[i]; /* y ord tendra los valores de la funcion anterior */
  4.  

No entiendo como definiste el for, me explicas?
63  Programación / Programación C/C++ / Re: Comparar cadenas sin usar strcmp en: 25 Octubre 2010, 03:08 am
EDITO:
volviendo a mirar tu codigo, note
Código
  1. if(comp==1){
  2.     for(let=0;let<longdef;let++){
  3.         if(nom1[let]<nom2[let]){
  4.             ord=1;
  5.         }else if(nom2[let]<nom1[let]){
  6.             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  Programación / Programación C/C++ / Re: Comparar cadenas sin usar strcmp en: 25 Octubre 2010, 00:18 am
Te dejo un ejemplo:
Codigo
Cuidad con tu codigo, si la ultima letra de cada cadena coincide dice que son iguales, ej
Holaaaaaaaaaaaa
Nadaqueveraaaaa
Código
  1. #include<stdio.h>
  2. #include<string.h>
  3.  
  4. //Compara cadenas - by pablomi
  5.  
  6. int main()
  7. {
  8.    int i, comparacion = 0;
  9.  
  10.    char cadena1[50] = "Hola";
  11.    char cadena2[50] = "Adios";
  12.  
  13.    for(i=0;i<strlen(cadena1);i++){
  14.        if(cadena1[i]!=cadena2[i])
  15.            comparacion = 1;
  16.  
  17.    if(comparacion==1)
  18.        printf("Son distintas\n");
  19.    else
  20.        printf("Son iguales\n");
  21.  
  22.    return 0;
  23. }

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

¿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 / Programación C/C++ / Re: Ayuda con ejercicio! en: 21 Octubre 2010, 20:46 pm
Con un ciclo
66  Programación / Programación C/C++ / Re: consulta ejercicio C++ en: 18 Octubre 2010, 21:32 pm
Y que hace la funcion atoi()?
67  Programación / Programación C/C++ / [C++] Invertir matriz verticalmente en: 17 Octubre 2010, 01:54 am
Código
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int main()
  5. {
  6.    int mat[4][4],x,i,aux;
  7.  
  8.    //cargo matriz
  9.    for (x=0;x<4;x++)
  10.        cout << "Fila numero " << x+1 << endl;
  11.        for (i=0;i<4;i++)
  12.            cin >> mat[x][i];
  13.  
  14.    //invierto verticalmente
  15.    for (x=0;x<2;x++)
  16.        for (i=0;i<4;i++)
  17.        {
  18.            aux = mat[x][i];
  19.            mat[x][i] = mat[3-x][i];
  20.            mat[3-x][i] = aux;
  21.        }
  22.  
  23.    //muestro matriz
  24.    for (x=0;x<4;x++)
  25.        cout << endl;
  26.        for (i=0;i<4;i++)
  27.            cout << mat[x][i] << " ";
  28. return 0;
  29. }
  30.  

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  Programación / Programación C/C++ / Re: [C++] Acomodar vector de mayor a menor en: 2 Octubre 2010, 21:50 pm
ahh gracias, lo voy a tener en cuenta para proximos programas ^^
69  Programación / Programación C/C++ / Re: [C++] Acomodar vector de mayor a menor en: 2 Octubre 2010, 21:18 pm
no entendi :x
70  Programación / Ejercicios / Re: Retos C/C++ en: 2 Octubre 2010, 21:14 pm
Código
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int main()
  5. {
  6.    short d1,m1,a1,d2,m2,a2,acu=0;
  7.    cout << "Ingrese la primer fecha con el siguiente formato DD-MM-AAAA" << endl;
  8.    cout << "Ingrese el dia" << endl;
  9.    cin >> d1;
  10.    cout << "Ingrese el mes" << endl;
  11.    cin >> m1;
  12.    cout << "Ingrese el año" << endl;
  13.    cin >> a1;
  14.    cout << "Ingrese la segunda fecha con el siguiente formato DD-MM-AAAA" << endl;
  15.    cout << "Ingrese el dia" << endl;
  16.    cin >> d2;
  17.    cout << "Ingrese el mes" << endl;
  18.    cin >> m2;
  19.    cout << "Ingrese el año" << endl;
  20.    cin >> a2;
  21.    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
  22.    {
  23.        switch (m1)
  24.        {
  25.            case 1:
  26.            acu+=31-d1+334; //Le sumo la cantidad de dias que faltan para que termine el año
  27.            break;
  28.            case 2:
  29.            acu+=28-d1+306;
  30.            break;
  31.            case 3:
  32.            acu+=31-d1+275;
  33.            break;
  34.            case 4:
  35.            acu+=30-d1+245;
  36.            break;
  37.            case 5:
  38.            acu+=31-d1+214;
  39.            break;
  40.            case 6:
  41.            acu+=30-d1+184;
  42.            break;
  43.            case 7:
  44.            acu+=31-d1+153;
  45.            break;
  46.            case 8:
  47.            acu+=31-d1+122;
  48.            break;
  49.            case 9:
  50.            acu+=30-d1+92;
  51.            break;
  52.            case 10:
  53.            acu+=31-d1+61;
  54.            break;
  55.            case 11:
  56.            acu+=30-d1+31;
  57.            break;
  58.            case 12:
  59.            acu+=31-d1;
  60.            break;
  61.        }
  62.        if (a1%4 == 0 && m1 <= 2) //por si el año era biciesto
  63.        {
  64.            acu++;
  65.        }
  66.        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
  67.        {
  68.            if (i%4 == 0)
  69.            {
  70.                acu+=366;
  71.            }
  72.            else
  73.            {
  74.                acu+=365;
  75.            }
  76.        }
  77.        switch (m2) //le sumo los dias transcurridos del ultimo año
  78.        {
  79.            case 1:
  80.            acu+=d2;
  81.            break;
  82.            case 2:
  83.            acu+=31+d2;
  84.            break;
  85.            case 3:
  86.            acu+=59+d2;
  87.            break;
  88.            case 4:
  89.            acu+=90+d2;
  90.            break;
  91.            case 5:
  92.            acu+=120+d2;
  93.            break;
  94.            case 6:
  95.            acu+=151+d2;
  96.            break;
  97.            case 7:
  98.            acu+=181+d2;
  99.            break;
  100.            case 8:
  101.            acu+=212+d2;
  102.            break;
  103.            case 9:
  104.            acu+=243+d2;
  105.            break;
  106.            case 10:
  107.            acu+=273+d2;
  108.            break;
  109.            case 11:
  110.            acu+=304+d2;
  111.            break;
  112.            case 12:
  113.            acu+=334+d2;
  114.            break;
  115.        }
  116.         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
  117.        {
  118.            acu++;
  119.        }
  120.    }
  121.    if (a1==a2)
  122.    {
  123.        switch (m1) //Calculo cuantos dias pasaron desde que empezo el año hasta la primer fecha
  124.        {
  125.            case 1:
  126.            acu=d1;
  127.            break;
  128.            case 2:
  129.            acu=31+d1;
  130.            break;
  131.            case 3:
  132.            acu=59+d1;
  133.            break;
  134.            case 4:
  135.            acu=90+d1;
  136.            break;
  137.            case 5:
  138.            acu=120+d1;
  139.            break;
  140.            case 6:
  141.            acu=151+d1;
  142.            break;
  143.            case 7:
  144.            acu=181+d1;
  145.            break;
  146.            case 8:
  147.            acu=212+d1;
  148.            break;
  149.            case 9:
  150.            acu=243+d1;
  151.            break;
  152.            case 10:
  153.            acu=273+d1;
  154.            break;
  155.            case 11:
  156.            acu=304+d1;
  157.            break;
  158.            case 12:
  159.            acu=334+d1;
  160.            break;
  161.        }
  162.        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
  163.        {
  164.            case 1:
  165.            acu=d2-acu;
  166.            break;
  167.            case 2:
  168.            acu=31+d2-acu;
  169.            break;
  170.            case 3:
  171.            acu=59+d2-acu;
  172.            break;
  173.            case 4:
  174.            acu=90+d2-acu;
  175.            break;
  176.            case 5:
  177.            acu=120+d2-acu;
  178.            break;
  179.            case 6:
  180.            acu=151+d2-acu;
  181.            break;
  182.            case 7:
  183.            acu=181+d2-acu;
  184.            break;
  185.            case 8:
  186.            acu=212+d2-acu;
  187.            break;
  188.            case 9:
  189.            acu=243+d2-acu;
  190.            break;
  191.            case 10:
  192.            acu=273+d2-acu;
  193.            break;
  194.            case 11:
  195.            acu=304+d2-acu;
  196.            break;
  197.            case 12:
  198.            acu=334+d2-acu;
  199.            break;
  200.        }
  201.        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
  202.        {
  203.            acu++;
  204.        }
  205.    }
  206.    cout <<"entre el "<<d1<<"/"<<m1<<"/"<<a1<<" y el "<<d2<<"/"<<m2<<"/"<<a2<<" pasaron "<<acu<<" dias."<< endl;
  207. return 0;
  208. }

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.
Páginas: 1 2 3 4 5 6 [7] 8
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines