Foros Pokexperto

General => Campo Informático => Mensaje iniciado por: DusknoirMaster en 14 de Noviembre de 2010, 06:17:49 pm

Título: [Tema Oficial] C/C++
Publicado por: DusknoirMaster en 14 de Noviembre de 2010, 06:17:49 pm
No se si se puede poner [Tema Oficial] Pero como no hay ninguno mas pues haya vamos.



Este es un Tema especial donde se podrá postear, comentar, opinar, y probar programas hechos en C++ y C, tambien se ofrezerá ayuda a gente que quiera aprender.

Para iniciar este Tema, aqui va una guia rápida de C++:

http://www.tecnun.es/asignaturas/Informat1/AyudaInf/aprendainf/cpp/basico/cppbasico.pdf (http://www.tecnun.es/asignaturas/Informat1/AyudaInf/aprendainf/cpp/basico/cppbasico.pdf)

Y un programa hecho por mi:

Spoiler: mostrar




#include <iostream>
using namespace std;


int main()
{
    //Los tres valores
    float a;
    {
        cout<<"Escribe el numero correspondiente a 'a': \n";
        cin>>a;
    }
    float b;
    {
        cout<<"Escribe el numero correspondiente a 'b': \n";
        cin>> b;
    }
    float c;
    {
        cout<<"Escribe el numero correspondiente a 'c': \n";
        cin>> c;
    }
    //El perímetro
    float perm;
    {
        perm=a+b+c;
        cout<<"El perimetro de a, b y c es: "<<perm<<"."<<endl;

    }
    //El area del cuadrado
    float area;
    {
        area=b*b;
        cout<<"El area de un cuadrado de lado b es: "<<area<<"."<<endl;
    }
    //La circunferencia
    float circ;
    {
        circ=2*(a+b)*3.1415;
        cout<<"El perimetro de un circulo de radio (a+b) es: "<<circ<<"."<<endl;
    }
    return 0;
}

Es simple, pero para que lo entendais

Si quieren saber algo, no duden en preguntarlo.

P.D: Haber quien es el primero que me dice para que sirve (Es muy fácil)

Título: Re:[Tema Oficial] C/C++
Publicado por: sklsmly en 14 de Noviembre de 2010, 11:46:22 pm
Hombre, sin ánimo de ofender, más que un programa lo llamaría ejercicio...

Bueno: pides tres números (que no compruebas si lo son) que corresponden a los lados de un polígono y calculas su perímetro. Luego calculas el área de un cuadrado de lado igual al segundo número, y terminas sumando el primer y segundo número para obtener el radio de una circunferencia y calculas su perímetro.
Título: Re:[Tema Oficial] C/C++
Publicado por: DusknoirMaster en 15 de Noviembre de 2010, 01:51:46 am
Hombre, sin ánimo de ofender, más que un programa lo llamaría ejercicio...

Bueno: pides tres números (que no compruebas si lo son) que corresponden a los lados de un polígono y calculas su perímetro. Luego calculas el área de un cuadrado de lado igual al segundo número, y terminas sumando el primer y segundo número para obtener el radio de una circunferencia y calculas su perímetro.



Bueno, si, es un ejercicio que hice hace tiempo, pero vale como un programa, igualmente, exacto, eso es lo que hace.
Luego posteo como me ha quedado el Decriptador/Encriptador que estaba haciendo.
Título: Re:[Tema Oficial] C/C++
Publicado por: sklsmly en 15 de Noviembre de 2010, 02:16:13 am
Ok. Ya nos lo enseñarás :)

Aquí otro ejercicio. Qué comprueba? ;)
Sin ejecutarlo, que eso es demasiado fácil...

Spoiler: mostrar
Código: [Seleccionar]
#include <stdio.h>
#include <windows.h>

void main (){
int Num, B1;

do{
printf ("Escriba un numero positivo mayor de 2: ");

fflush (stdin);
scanf ("%d", &Num);
}while (Num < 2);

for (B1=2; (B1!=Num/2)&&(Num%B1); B1++);

if (B1 == Num/2)
printf ("El numero %d sí es XX\n", Num);
else
printf ("El numero %d no es XX\n", Num);

system ("pause");
}
[/spoiler]
Título: Re:[Tema Oficial] C/C++
Publicado por: Pushkin en 15 de Noviembre de 2010, 05:05:43 am
Yo tengo una pregunta, ¿para qué sirve el "using namespace std;" debajo de la biblioteca?
Título: Re:[Tema Oficial] C/C++
Publicado por: DusknoirMaster en 15 de Noviembre de 2010, 05:51:29 am
Yo tengo una pregunta, ¿para qué sirve el "using namespace std;" debajo de la biblioteca?

Pues creo que es para globalizar los standar de C++, en otras palabras:

Esto en C++ no funcionaria:

#include <iostream.h>
int main()
{
   cout << "Hello, world!" << endl;
}


En cambio, estas tres opciones si:


// Opción 1
#include <iostream>

int main()
{
   std::cout << "Hello, world!" << std::endl;
}

// Opción 2
#include <iostream>
using std::cout;
using std::endl;

int main()
{
   cout << "Hello, world!" << endl;
}

// Opción 3
#include <iostream>
using namespace std;

int main()
{
   cout << "Hello, world!" << endl;
}


Para ahorrarte todo, deberias escribir siempre el "using namespace std;" en tus programas de C++.


Ok. Ya nos lo enseñarás :)

Aquí otro ejercicio. Qué comprueba? ;)
Sin ejecutarlo, que eso es demasiado fácil...

Spoiler: mostrar
Código: [Seleccionar]
#include <stdio.h>
#include <windows.h>

void main (){
int Num, B1;

do{
printf ("Escriba un numero positivo mayor de 2: ");

fflush (stdin);
scanf ("%d", &Num);
}while (Num < 2);

for (B1=2; (B1!=Num/2)&&(Num%B1); B1++);

if (B1 == Num/2)
printf ("El numero %d sí es XX\n", Num);
else
printf ("El numero %d no es XX\n", Num);

system ("pause");
}
[/spoiler]

Bueno, de C no entiendo mucho, pero creo que este programa, lo traduzco:

Escribe un numero mayor que 2
Mientras que el número sea mayor que 2
El numero B1 es igual a 2
B1 es diferente a la mitad de el numero
y al resto de la división entre el número y B1
Se le suma 1 a B1
Si B1 es igual a la mitad del número
El numero ** sí es XX
se visualiza el numero
si no
El número ** no es XX
se visualiza el numero
Fin.

No lo he entendido muy bien....
Título: Re:[Tema Oficial] C/C++
Publicado por: sklsmly en 15 de Noviembre de 2010, 06:00:20 am
Es lo que DusknoirMaster ya te ha comentado, aunque si quieres, mira esto:

Pagina 1 (http://oropezaroberto.awardspace.com/paginas/_using_namespace_std_.php)
Pagina 2 (http://www.google.es/url?sa=t&source=web&cd=1&ved=0CBoQFjAA&url=http%3A%2F%2Fespanol.answers.yahoo.com%2Fquestion%2Findex%3Fqid%3D20070512212620AA5LyDR&rct=j&q=using%20namespace%20std&ei=XT3gTNHUEMqwhAeY_42KDQ&usg=AFQjCNFVi9FYkGZaphzBotQAP5nAdIoHog&cad=rja)

Y Dusk, lo que dices es correcto, pero ¿cuál es el objetivo del programa? O lo que es lo mismo, esas XX que puse, ¿qué palabra hay que poner ahí?

Desarrollado de otra forma quizá sería más fácil, pero tiendo a compactar el código, aunque eso lo dificulte. Mala costumbre a la hora de revisarlo, sin embargo suele ser más rápido. Manías de cada uno :)

EDITO: Puse el usuario que no era...
Título: Re:[Tema Oficial] C/C++
Publicado por: _Julián_ en 15 de Noviembre de 2010, 11:58:15 am
Ahhh!!!, por fin está este foro en pxp, y si que hay actividad...

Puedo sugerir que este tema se trate más bien de los grandes lenguajes en general y no solamente de C y C++?, ya que como estos hay otro más utilizados (como Java, C#/VisualBasic, Phyton, etc), además no creo que para hablar de otros lenguajes se tenga que hacer otro tema. También se podría poner el tema acerca de "preguntas rápidas" de los diferentes lenguajes (a mi muchas veces me hubiera gustado preguntar de algo en algún sitio conocido donde sé que tal vez me puedan decir algo a estar buscando por horas en internet y estarse registrando en foros para preguntar).

Yo por mi parte podría ayudar en participando en los lenguajes de Java y C#, que son los que manejo más. Cualquier duda o pregunta que tenga una persona trataré de responderla en la medida de lo posible.

Y por mi parte, esto son los proyectos en los que he trabajado y que conciernen a pokemon: http://www.4shared.com/dir/bQ-3SQ5Q/Pokemon.html (http://www.4shared.com/dir/bQ-3SQ5Q/Pokemon.html)

Éste es el último que he hecho, que es una calculadora de experiencia para pokemon en 5ª generación: http://www.4shared.com/file/GSgpCS8a/ExperienciaV.html (http://www.4shared.com/file/GSgpCS8a/ExperienciaV.html) (es diferente a todas las generaciones anteriores).


PD: Éste tema me hace acordar de éste otro del viejo pxp: http://s12.invisionfree.com/Pokexperto/index.php?showtopic=5819 (http://s12.invisionfree.com/Pokexperto/index.php?showtopic=5819)
Título: Re:[Tema Oficial] C/C++
Publicado por: DusknoirMaster en 18 de Noviembre de 2010, 01:55:32 am
Ni idea, se que tiene algo que ver con dos, podría ser los múltiplos o algo asi....

P.D: Hay un error en el código, creo que no puede ser "void main()" si no "int main()" porque devuelves un valor entero....
Título: Re:[Tema Oficial] C/C++
Publicado por: Alliare en 18 de Noviembre de 2010, 01:59:15 am
Venga, chicos, que yo lo saqué, así que tiene que ser fácil =P
Título: Re:[Tema Oficial] C/C++
Publicado por: Pedro's en 18 de Noviembre de 2010, 03:59:22 am
Ni idea, se que tiene algo que ver con dos, podría ser los múltiplos o algo asi....

P.D: Hay un error en el código, creo que no puede ser "void main()" si no "int main()" porque devuelves un valor entero....
Creo que más que los múltiplos es el m.c.d. ( o sea, el máximo común divisor).¿Me equivoco?
Título: Re:[Tema Oficial] C/C++
Publicado por: Airblast en 18 de Noviembre de 2010, 04:16:02 am
Ahhh!!!, por fin está este foro en pxp, y si que hay actividad...

Puedo sugerir que este tema se trate más bien de los grandes lenguajes en general y no solamente de C y C++?, ya que como estos hay otro más utilizados (como Java, C#/VisualBasic, Phyton, etc), además no creo que para hablar de otros lenguajes se tenga que hacer otro tema. También se podría poner el tema acerca de "preguntas rápidas" de los diferentes lenguajes (a mi muchas veces me hubiera gustado preguntar de algo en algún sitio conocido donde sé que tal vez me puedan decir algo a estar buscando por horas en internet y estarse registrando en foros para preguntar).

Yo por mi parte podría ayudar en participando en los lenguajes de Java y C#, que son los que manejo más. Cualquier duda o pregunta que tenga una persona trataré de responderla en la medida de lo posible.

Y por mi parte, esto son los proyectos en los que he trabajado y que conciernen a pokemon: http://www.4shared.com/dir/bQ-3SQ5Q/Pokemon.html (http://www.4shared.com/dir/bQ-3SQ5Q/Pokemon.html)

Éste es el último que he hecho, que es una calculadora de experiencia para pokemon en 5ª generación: http://www.4shared.com/file/GSgpCS8a/ExperienciaV.html (http://www.4shared.com/file/GSgpCS8a/ExperienciaV.html) (es diferente a todas las generaciones anteriores).


PD: Éste tema me hace acordar de éste otro del viejo pxp: http://s12.invisionfree.com/Pokexperto/index.php?showtopic=5819 (http://s12.invisionfree.com/Pokexperto/index.php?showtopic=5819)
Y yo con Python, que experiencia tengo. Aunque no soy un superprogramador como tú, pero algo sé.
Título: Re:[Tema Oficial] C/C++
Publicado por: Alliare en 18 de Noviembre de 2010, 06:06:07 am
Creo que más que los múltiplos es el m.c.d. ( o sea, el máximo común divisor).¿Me equivoco?

Sí. Piensa que la respuesta que obtienes es "sí es XX" o "no es XX". No obtienes un número, ni nada parecido.

Para que lo entiendas mejor, piensa en XX como en una variable de tipo boolean. Dependiendo de los resultados, se evalúa a true o a false.
Título: Re:[Tema Oficial] C/C++
Publicado por: DusknoirMaster en 18 de Noviembre de 2010, 06:20:22 am
Creo que más que los múltiplos es el m.c.d. ( o sea, el máximo común divisor).¿Me equivoco?

Como va a ser el m.c.d, si el numero del que estamos hablando es 2, el cual solo es 2, además hay que insertar un número, asi que no le veo mucho sentido. Ademas, hay algo sobre el resto de una division, que es lo que no entiendo...
Título: Re:[Tema Oficial] C/C++
Publicado por: Pedro's en 18 de Noviembre de 2010, 06:26:46 am
Como va a ser el m.c.d, si el numero del que estamos hablando es 2, el cual solo es 2, además hay que insertar un número, asi que no le veo mucho sentido. Ademas, hay algo sobre el resto de una division, que es lo que no entiendo...
No sé, yo tampoco entiendo lo de la división, por eso hice una posibilidad tonta a ver si acertaba. Un fallo, lo tengo merecido, aunque toda mi vida es fallo. Perdonad, estoy con depresión  :snif: :suicide:
Título: Re:[Tema Oficial] C/C++
Publicado por: Alliare en 18 de Noviembre de 2010, 09:07:04 am
No sé, yo tampoco entiendo lo de la división, por eso hice una posibilidad tonta a ver si acertaba. Un fallo, lo tengo merecido, aunque toda mi vida es fallo. Perdonad, estoy con depresión  :snif: :suicide:

Piiiiip. Aquí no se admiten depresiones.... :) :)

Venga, que es fácil.

Pensad, hay un bucle ahí...

¿Cuál es la condición de salida del bucle?

Tratad de formularlo de otra forma que no sea con do/while.
Título: Re:[Tema Oficial] C/C++
Publicado por: sklsmly en 18 de Noviembre de 2010, 05:20:26 pm
Bueno... Lo comento (ya avisé que me gusta liar el código... para otra vez simplifico):

for (B1=2; (B1!=Num/2)&&(Num%B1); B1++);

La clave está ahí. El bucle recorre en B1 todos los números desde 2, hasta llegar a uno que divida a Num. Si lo divide, se sale. Si no lo encuentra antes de llegar a la mitad de Num, sale también.

if (B1 == Num/2)

Luego comprueba si ha llegado o no a esa mitad. Si ha llegado significa que no existe ningún número entre 2 y Num que lo pueda dividir. Es decir, que Num es un número primo (Esa es la palabra que "tapan" las XX).

Por qué hasta la mitad de Num y no hasta Num? Por que sí =P Realmente, si no encuentra nada antes de esa mitad, ya no lo encontrará. En un poco largo de explicar (en realidad, bastaría buscar hasta la raíz cuadrada de Num, no en la mitad, pero da igual...)

Un saludo y no os preocupéis. No era fácil.

Edito:
Citar
P.D: Hay un error en el código, creo que no puede ser "void main()" si no "int main()" porque devuelves un valor entero....
En realidad no... Hay compiladores que exigen declararlo como int, y otros te permiten el void. Fijate que no hay Return, por lo que no necesito el Int. Yo uso el C de microsoft. El de borland sí que lo pide como tu dices, si no recuerdo mal.

En realidad, eso casi no se usa. Es para indicar al sistema operativo si el programa ha terminado bien, o si un error ha forzado su cierre. Se puede usar si un programa tuyo llama a otro tuyo, o en ms-dos para los archivos batch... Yo no lo he necesitado nunca, asi que tampoco te puedo contar mucho mas.
Título: Re:[Tema Oficial] C/C++
Publicado por: Alliare en 18 de Noviembre de 2010, 11:42:14 pm
Cuando miro el código así, cuando lo pones, digo "ah, vale, es para calcular si un número es primo o no". Ahora que lo has explicado, no me entero de nada. Es lo que tiene saber cuatro cosas de pseudocódigo y no tener ni idea de programar.

Soy patética.

Barra libre para reírse de mí/meterse conmigo.
Título: Re:[Tema Oficial] C/C++
Publicado por: sklsmly en 19 de Noviembre de 2010, 12:48:18 am
O quizá me he explicado bastante mal...  En cualquier caso, tu programadora intuitiva :)
Título: Re:[Tema Oficial] C/C++
Publicado por: Alliare en 19 de Noviembre de 2010, 01:03:01 am
O quizá me he explicado bastante mal...  En cualquier caso, tu programadora intuitiva :)

No creo que te hayas explicado mal. Ya verás cómo ahora lo entienden todos.
Título: Re:[Tema Oficial] C/C++
Publicado por: DusknoirMaster en 19 de Noviembre de 2010, 04:00:27 am
Joe, pues era asi de fácil, os posteo un ejercicio que tengo que hacer para clase de Informática (A la que me tengo que ir en.....10 minutos)

Spoiler: mostrar



/*13.   En el fichero de entrada estándar están grabados cien valores enteros distintos.
Escríbase un programa que los grabe en el fichero de entrada estándar los pares seguido
de "PAR" y los impares de "IMPAR" dejando diez blancos por la izquierda.
Determinar también el mayor, el menor, el número de pares, ídem de impares,
la suma de los pares y el producto de los impares.

┌─────────────────────────────────────────────────┐
│ LOS NUMERO LEIDOS SON:                          │
│                                                 │
│           408 PAR                               │
│           IMPAR -39                             │
│                        .                        │
│                        .                        │
│  EL MAYOR ES:                                   │
│  EL MENOR ES:                                   │
│  NÚMERO DE PARES:                               │
│  NÚMERO DE IMPARES:                             │
│  SUMA DE LOS PARES:                             │
│  PRODUCTO DE LOS IMPARES:                       │
│                                                 │*/

#include <iostream>
using namespace std;

int num[100];
int main()
{
    int nume, counter;
    {
        for (counter=0; counter<100; counter++)
        {
           cout<<"Escribe 100 numeros: \n";
           cin>>nume;
           nume=num[counter];
        }
    }
    int par,countb,aux;
    {
        for (counter=0; counter<100; counter++)
        {
            aux==num[counter];
            if(2%aux==0)
            {
                countb++;
            }

        }
      cout<<"          PAR: "<<countb;


    }
    int impar, countc,auxb;
    {
        for (counter=0; counter<100; counter++)
        {
            auxb==num[counter];
            if(2%auxb!=0)
            {
                countc++;
            }

        }
      cout<<"          IMPAR: "<<countc;


    }
    cout<<"EL MAYOR ES: ";
    int may,cnt,auxcount,a,b,auxy;
    {

        for (cnt=0;auxcount=1;cnt<100;auxcount<=100;cnt++;auxcount++)
        {
            a==num[cnt];
            b==num[auxcount];
            if (a>b)
            auxy=a;
            else
            auxy=b;
        }
        cout<<auxy<endl;

    }
    cout<<"EL MENOR ES: \n";
    int men,cnta,cntb,c,d,auxx;
    {

        for (cnta=0;cntb=1;cnta<100;cntb<=100;cnta++;cntb++)
        {
            c==num[cnta];
            d==num[cntb];
            if (c>d)
            auxy=c;
            else
            auxy=d;
        }
        cout<<auxy<endl;

    cout<<"NUMERO DE PARES: "<<countb<<endl;
    cout<<"NUMERO DE IMPARES: "<<countc<<endl;
    int spares,countd,auxc,auxa,resulta;
    {
        for (countd=0; countd<100; countd++)
        {
            aux==num[countd];
            if(2%auxc==0)
            {
                num[countd]=auxa;
                resulta=auxc+auxa;
            }


        }
      cout<<"SUMA DE LOS PARES: "<<resulta;

    }
    int impares,counte,auxd,auxe,resultb;
    {
        for (counte=0; counte<100; counte++)
        {
            auxd==num[counte];
            if(2%auxd==0)
            {
                num[countd]=auxe;
                resultb=auxd*auxe;
            }


        }
      cout<<"PRODUCTO DE LOS IMPARES: "<<resultb;

    }





return 0;
}







Se que está un poco mal, pero es que tenia 3 examenes seguidos cada día (Maldigo a 3ºESO)

EDIT:
Este era una mierda, pero lo hice en 5 minutos y no tenía tiempo de pensar, aqui va el bueno(Y pasado a C):

Spoiler: mostrar



/*13.   En el fichero de entrada estándar están grabados cien valores enteros distintos.
Escríbase un programa que los grabe en el fichero de entrada estándar los pares seguido
de "PAR" y los impares de "IMPAR" dejando diez blancos por la izquierda.
Determinar también el mayor, el menor, el número de pares, ídem de impares,
la suma de los pares y el producto de los impares.

┌─────────────────────────────────────────────────┐
│ LOS NUMERO LEIDOS SON:                          │
│                                                 │
│           408 PAR                               │
│           IMPAR -39                             │
│                        .                        │
│                        .                        │
│  EL MAYOR ES:                                   │
│  EL MENOR ES:                                   │
│  NÚMERO DE PARES:                               │
│  NÚMERO DE IMPARES:                             │
│  SUMA DE LOS PARES:                             │
│  PRODUCTO DE LOS IMPARES:                       │
│                                                 │*/

#include <stdio.h>

#define CANT 100

int num[CANT];
int main()

{
    int nume, counter,i;
    int par,countb,aux;
    int impares, countc,auxb;
    int may,cnt,auxcount,a,b,auxy;
        int men,cnta,cntb,c,d,auxx;
            int spares,countd,auxc,auxa,resulta;

    for (counter=0; counter<CANT; counter++)
        {
           printf("Escribe %d numeros: \n",CANT);
           scanf(&nume);
           nume=num[counter];
        }



    for (counter=0; counter<CANT; counter++)
        {
            aux=num[counter];
            if(aux%2==0)
            {
                countb++;
                for(i=1;i<11;i++) printf("PAR: %\n", aux);
            }
           else {
                 countc++;
                for(i=1;i<11;i++) printf("IMPAR: %\n", aux);

                }
        }

   for (cnt=0;cnt<CANT;cnt++)
        {
         if (cnt==0) auxy=num[cnt];
         else
              if (num[cnt]>auxy) auxy=num[cnt];
        }
        printf("\nEL MAYOR ES: %d", auxy);

   for (cnt=0;cnt<CANT;cnt++)
        {
         if (cnt==0) auxx=num[cnt];
         else
              if (num[cnt]<auxx) auxx=num[cnt];
        }
        printf("\nEL MENOR ES: %d", auxx);


     countb=0; countc=0;

    spares=0;impares=1;

    for (countd=0; countd<CANT; countd++)
        {
            if (num[countd]%2==0) {spares=spares+num[countd]; countb++;}
            else
             {
               impares=impares*num[countd];
               countc++;
               }

       }

   printf("\n NUMERO DE PARES: %d", countb);
   printf("\n NUMERO DE IMPARES: %d", countc);
   printf("\n NUMERO DE PARES: %d", countb);
   printf("\n SUMA DE PARES: %d", spares);
   printf("\n PRODUCTO DE IMPARES: %d", impares);

return 0;
}



Aun siendo el bueno, tiene unos problemas que no logro arreglar, a ver si lo encontrais y me ayudais...
Título: Re:[Tema Oficial] C/C++
Publicado por: Alliare en 19 de Noviembre de 2010, 10:46:06 am
Ni tengo ni la más remota idea de lo que has hecho:

Código: [Seleccionar]
countb=0; countc=0;

    spares=0;impares=1;

    for (countd=0; countd<CANT; countd++)
        {
            if (num[countd]%2==0) {spares=spares+num[countd]; countb++;}
            else
             {
               impares=impares*num[countd];
               countc++;
               }

       }

Título: Re:[Tema Oficial] C/C++
Publicado por: Krub en 19 de Noviembre de 2010, 11:08:14 am
Cuando miro el código así, cuando lo pones, digo "ah, vale, es para calcular si un número es primo o no". Ahora que lo has explicado, no me entero de nada. Es lo que tiene saber cuatro cosas de pseudocódigo y no tener ni idea de programar.

Soy patética.

Barra libre para reírse de mí/meterse conmigo.


No seas tonta. Nadie nace sabiendo. En vez de pensar y decirte esas cosas, esfuerzate por aprender.
Título: Re:[Tema Oficial] C/C++
Publicado por: Alliare en 19 de Noviembre de 2010, 03:59:53 pm
Tienes razón. Tenía un mal día ayer. Gracias, Krub.
Título: Re:[Tema Oficial] C/C++
Publicado por: sklsmly en 19 de Noviembre de 2010, 08:52:27 pm
Ni tengo ni la más remota idea de lo que has hecho:


Ponlo en varias líneas:
Código: [Seleccionar]
countb=0; countc=0;

    spares=0;impares=1;

    for (countd=0; countd<CANT; countd++)
        {
            if (num[countd]%2==0)
             {
                 spares=spares+num[countd];
                 countb++;
             }
            else
             {
               impares=impares*num[countd];
               countc++;
               }

       }


Si el numero es divisible entre 2 aumenta el contador de pares y los va sumando. Si no, aumenta el impares y los multiplica.

****************

Comentarios (Por importancia):
En el bucle de entrada pones:

    for (counter=0; counter<CANT; counter++)
        {
           printf("Escribe %d numeros: \n",CANT);
           scanf(&nume);
           nume=num[counter];
        }

No estás rellenando el array. Estás machacando el valor introducido con un valor desconocido que haya en el array. Tendría que ser:

num[counter] = nume;

Al ser una cantidad fija (100 números) los impares son 100-pares, te ahorras una variable. La suma, multiplicación, mayor y menor los puedes hacer en el bucle de entrada, con lo que ahorras 4 bucles.

Se entiende mejor si el nombre de las variables son mas claras.

Creo que no me he equivocado, y no hay mas... Voy con un poco de prisa, mas tarde compruebo. Y por cierto, no usas ficheros, no?
Título: Re:[Tema Oficial] C/C++
Publicado por: DusknoirMaster en 20 de Noviembre de 2010, 04:15:06 am
No no uso ficheros, y gracias por la ayuda,  ^__^ ^__^,

Ya he avanzado en mi Decriptador/Encriptador, aunque aun tiene un fallo que no entiendo, aqui va el código:

Spoiler: mostrar



#include <iostream>
#include <fstream>
#include <string>
#include <stdio.h>
#include <stdlib.h>


using namespace std;

  string decrypt()
    {
        //Numero secreto
        int secreto;
        cout<<"Escribe el numero secreto (Entre 1 y 100): \n";
        cin>>secreto;
        if (secreto<1||secret>100)
        cout<<"Numero erroneo, tiene que estar entre 1 y 100 \n";
        secreto;
        cout<<"Ahora escribe el numero que quieres desencriptar: \n";
        int tamano;
        string wordo;
        cin>>wordo;
        tamano=wordo.length();


        int u;
        char auxy;
        for (u=0;u<=tamano;u++)
        {
            auxy=wordo;
            auxy-secreto;
            cout<<auxy;
        }

  }

      string encrypt()
    {
        //Numero secreto
        int secret;
        cout<<"Escribe el numero de encriptacion (Necesario para desencriptar) \n";
        cin>>secret;
        cout<<"Ahora escribe la palabra que quieres encriptar: \n";
        int taman;
        string wordu;
        cin>>wordu;
        taman=wordu.length();


        int i, aux;
        for (i=0;i<=taman;i++)
        {
            aux=wordu;
            aux-secret;
            cout<<aux;
        }

  }

int main()
{
    char choice;
    {
        //Elegir, encriptar o decriptar
        cout<<"\\**Bienvenido al programa de Decriptacion/Encriptacion de Enrique Silvela**// \n";
        cout<<"___________________________________________________________ ___________________ \n";
        cout<<"********************************/&\******************************************* \n";
        cout<<"**********************-----_____\~/_____-----********************************* \n";
        cout<<"**********************-----_____/~\_____-----********************************* \n";
        cout<<"********************************\~/******************************************* \n";
        cout<<endl;
        cout<<endl;
        cout<<"Elige que quieres hacer: Decriptar o Encriptar (D para Decriptar y E para encriptar): \n";
        cin>>choice;
        if (choice == 'D'||'d')
        {
            decrypt();
        }

        else if (choice == 'E'||'e')
        {
            encrypt();
        }

        else
           cout<<"Seleccion erronea, vuelve a intentarlo: \n";
        choice;


    }













    return 0;
}



Lo hice con ANSI, porque es más fácil y me ahorro mucho, a ver si sklsmly me lo puede corregir.

P.D: Por fin una firma sklsmly, ya solo te falta el avatar ^__^.
Título: Re:[Tema Oficial] C/C++
Publicado por: sklsmly en 20 de Noviembre de 2010, 04:47:45 am
Emm... No estoy con mi ordenador, asi que no puedo hacer pruebas. Pero si he entendido bien, la encriptación consiste en sumar un valor al ascii (no Ansi) de las letras, y desencriptas restando.

Pero en ambas funciones estás restando, por lo que nunca obtienes el valor original. Además, en los bucles de encriptado/desencriptado intentas tomar una letra para la operación, pero lees la palabra completa (aquí, por ejemplo:  auxy=wordo;). Tampoco controlas el numero de encriptación, lo que te dará error. Si introducen el 200 y meten la letra A el valor supera el numero 255, que es el máximo que puede entrar en un char. Además, al hacer la suma, y especialmente, la resta, te puedes meter en símbolos especiales que nunca podrán ser introducidos por teclado,y por tanto, desencriptados por tu programa (por ejemplo, si el resultado contiene el codigo 13 [Intro] cuando quieras desencriptar el programa lo interpretará como que ya has terminado de escribir, y no como un caracter a desencriptar). Y si al pedir el numero para desencriptar no le das el correcto, me parece que no te lo pide de nuevo.

Como comentarios aparte, facilita mucho la lectura que todas las variables estén declaradas al principio del procedimiento y que haya comentarios. También es más comodo el Scanf y el Printf, aunque eso es más cuestión personal  :D

Y qué compilador usas? Imagino que uno de C++, ya que usas el tipo String.

Y para qué es esto, que no lo veo?
Spoiler: mostrar
        cout<<"Numero erroneo, tiene que estar entre 1 y 100 \n";
        secreto;
        cout<<"Ahora escribe el numero que quieres desencriptar: \n";
[/color]
Título: Re:[Tema Oficial] C/C++
Publicado por: Pedro's en 20 de Noviembre de 2010, 04:50:05 am
No no uso ficheros, y gracias por la ayuda,  ^__^ ^__^,

Ya he avanzado en mi Decriptador/Encriptador, aunque aun tiene un fallo que no entiendo, aqui va el código:

Spoiler: mostrar



#include <iostream>
#include <fstream>
#include <string>
#include <stdio.h>
#include <stdlib.h>


using namespace std;

  string decrypt()
    {
        //Numero secreto
        int secreto;
        cout<<"Escribe el numero secreto (Entre 1 y 100): \n";
        cin>>secreto;
        if (secreto<1||secret>100)
        cout<<"Numero erroneo, tiene que estar entre 1 y 100 \n";
        secreto;
        cout<<"Ahora escribe el numero que quieres desencriptar: \n";
        int tamano;
        string wordo;
        cin>>wordo;
        tamano=wordo.length();


        int u;
        char auxy;
        for (u=0;u<=tamano;u++)
        {
            auxy=wordo;
            auxy-secreto;
            cout<<auxy;
        }

  }

      string encrypt()
    {
        //Numero secreto
        int secret;
        cout<<"Escribe el numero de encriptacion (Necesario para desencriptar) \n";
        cin>>secret;
        cout<<"Ahora escribe la palabra que quieres encriptar: \n";
        int taman;
        string wordu;
        cin>>wordu;
        taman=wordu.length();


        int i, aux;
        for (i=0;i<=taman;i++)
        {
            aux=wordu;
            aux-secret;
            cout<<aux;
        }

  }

int main()
{
    char choice;
    {
        //Elegir, encriptar o decriptar
        cout<<"\\**Bienvenido al programa de Decriptacion/Encriptacion de Enrique Silvela**// \n";
        cout<<"___________________________________________________________ ___________________ \n";
        cout<<"********************************/&\******************************************* \n";
        cout<<"**********************-----_____\~/_____-----********************************* \n";
        cout<<"**********************-----_____/~\_____-----********************************* \n";
        cout<<"********************************\~/******************************************* \n";
        cout<<endl;
        cout<<endl;
        cout<<"Elige que quieres hacer: Decriptar o Encriptar (D para Decriptar y E para encriptar): \n";
        cin>>choice;
        if (choice == 'D'||'d')
        {
            decrypt();
        }

        else if (choice == 'E'||'e')
        {
            encrypt();
        }

        else
           cout<<"Seleccion erronea, vuelve a intentarlo: \n";
        choice;


    }













    return 0;
}



Lo hice con ANSI, porque es más fácil y me ahorro mucho, a ver si sklsmly me lo puede corregir.

P.D: Por fin una firma sklsmly, ya solo te falta el avatar ^__^.

 ******Fábrica de avatares animados de Pedros*********
 Esto por si acaso :xD
 No se por qué, pero me parece que sklsmly va a ser un usuario muy apreciado por todos. O eso espero.
Título: Re:[Tema Oficial] C/C++
Publicado por: DusknoirMaster en 24 de Noviembre de 2010, 07:05:13 am
Sobre mi compilador, uso Code::Blocks, es el que mejor me va. Y uso cout y cin porque a mi me parecen mas cómodos,(Odio al scanf y al printf, pero mi profesor me obliga a ponerlos) Estoy avanzando mas, ya he arreglado unos problemas, ahora lo estoy probando y debugeando.
Título: Re:[Tema Oficial] C/C++
Publicado por: sklsmly en 24 de Noviembre de 2010, 07:23:25 am
Nunca he usado ese. Y si trabajaras en una empresa, probablemente te dirían que los uses, aunque no te gusten =P Son más cómodos para insertar texto (P.E: "Tienes {variable} euros") y para definir el tipo de entrada. Pero para ti mismo, mientras te aclares...

Ya nos enseñarás el código  ^__^
Título: Re:[Tema Oficial] C/C++
Publicado por: DusknoirMaster en 16 de Diciembre de 2010, 02:03:02 am
Revivo este tema porque necesito un poco de ayuda, he empezado a dar las funciones en C (Por fin ^__^) Y he hecho este código:

Código: [Seleccionar]
[color=white][b]//Funciones
#include<stdio.h>

int SumaF (int a, int b)
{
    return(a+b);
}
void SumaP (int*c, int a, int b)
{
    *c= a+b;
}
int main()
{

    int a=5, b, c=7, Suma;
    Suma=SumaF(a,7);
    SumaP(b,a,c);
    printf("%d", b);

}
[/b][/color]

Pero no me va, me sale que no se puede convertir de "int*" a "int"......asi que espero que sklsmly lo pueda corregir....