Retos C/C++

Iniciado por [L]ord [R]NA, 19 Agosto 2010, 03:18 AM

0 Miembros y 1 Visitante están viendo este tema.

[L]ord [R]NA

:xD 5 dias y sin respuestas... alguien se propone poner algun reto?

OwNet

#61
mi solucion va quedando asi algun pequeno error que lo corrijo esta noche o alguien de ustedes corrijalo es que estoy de salida :)

#include <cstdio>
#include <iostream>
#include <algorithm>
#include <set>
#include <map>
#include <vector>
#include <iomanip>
#include <cstdlib>
#include <cmath>
#include <cstring>
#include <list>
#include <climits>

using namespace std;
struct participantes
{
   int puntos;
   int resueltas;
   int id;
}conts[2001];
bool operator<(const struct participantes &a, const struct participantes &b)
{
   if (a.puntos!=b.puntos)
       return a.puntos<b.puntos;
   else if (a.resueltas!=b.resueltas)
       return a.resueltas<b.resueltas;
   else
       return a.id<b.id;

}
int main()
{
   ios_base::sync_with_stdio(0);
   int x, y, N, T, P, val;
   while (cin>>N>>T>>P)
   {
       int valor[T];
       for (x=0; x<N; x++)
       {
           conts[x].id=x;
           conts[x].puntos=0;
           for (y=0; y<T; y++)
           {
               cin>>val;
               if (val==1)
               {
                   conts[x].resueltas++;

               }
               else
                   valor[y]++;
           }
       }

       for (x=0; x<N; x++)
       {
           for (y=0; y<T; y++)
           {
               conts[x].puntos+=valor[y];
           }
       }

       cout<<conts[P].puntos<<" ";
       sort(conts, conts+N);
       for (x=0; x<N; x++)
       {
           if (P==conts[x].id)
           {
               cout<<x+1<<endl;
               break;
           }
       }
   }


   return 0;
}

OwNet

Bueno ya lo tengo resuelto les dejo el codigo

#include <cstdio>
#include <iostream>
#include <algorithm>
#include <set>
#include <map>
#include <vector>
#include <iomanip>
#include <cstdlib>
#include <cmath>
#include <cstring>
#include <list>
#include <climits>

using namespace std;
struct participantes
{
    int puntos;
    int resueltas;
    int id;
}conts[2001];
bool operator<(const struct participantes &a, const struct participantes &b)
{
    if (a.puntos!=b.puntos)
        return a.puntos<b.puntos;
    else if (a.resueltas!=b.resueltas)
        return a.resueltas<b.resueltas;
    else
        return a.id<b.id;

}
int main()
{
    ios_base::sync_with_stdio(0);
    int x, y, N, T, P, val;
    while (cin>>N>>T>>P)
    {
        int valor[T];
        int mat[N][T];
        for(x=0; x<T; x++)
        valor[x]=0;
        for (x=0; x<N; x++)
        {
            conts[x].id=x;
            conts[x].puntos=0;
            for (y=0; y<T; y++)
            {
                cin>>mat[x][y];
                if (mat[x][y]==1)
                conts[x].resueltas++;
                else
                    valor[y]++;
            }
        }

        for (x=0; x<N; x++)
        {
            for (y=0; y<T; y++)
            {
                if(mat[x][y]==1)
                conts[x].puntos+=valor[y];
            }
        }

        cout<<conts[P-1].puntos<<" ";
        sort(conts, conts+N);
        //reverse(conts, conts+N);

        for (x=0; x<N; x++)
        {
            if ((P-1)==conts[x].id)
            {
                cout<<x+1<<endl;
                break;
            }
        }
    }


    return 0;
}



Reto #15

Dado un conjunto de mujeres en las cuales en cada una de ellas se representa su belleza, elegancia y educacion. Si dentro de este mismo conjunto una de ellas encuentra que alguien es mas bella mas elegante y mas culta que ella. Ella optara por suicidarse .

Entrada

El primer dato de entrada sera el numero de mujeres que se analizaran las siguientes n lineas seran descritas cada una por los tres atributos antes mencionados
belleza elegancia y educacion

Salida

La salida sera el numero de suicidios que ocurriran tomando en cuenta los datos anteriores

por ejemplo

Entrada

5
4 4 3
2 3 2
23 3 3
2 3 3
4 4 4


Salida


2




[L]ord [R]NA

#63
Aqui esta el codigo... voy a comer, traigo el reto en aproximadamente 1 hora.
Código (cpp) [Seleccionar]

#include <iostream>

using namespace std;

struct locas
{
   int b,c,d,e;
};

int main()
{
int a,i=0,j=0,t=0,k;
cin>>a;
locas b[a];
for(i;i<a;i++){cin>>b[i].b>>b[i].e>>b[i].c; b[i].d=0;}

for(i=0;i<a;i++)
{
for(j=0;j<a;j++)
{
if(b[i].b>b[j].b && b[i].e>b[j].e && b[i].c>b[j].c)
{
   if(b[j].d==1)continue;
   else
   {
                                   t++;
                                   b[j].d=1;
                                   break;
   }
   }
                        }
}
cout<<t<<endl;
}

[L]ord [R]NA

#64
Reto #16: Un bloque de masa M, inicialmente en reposo, se jala hacia la derecha a lo largo de una superficie horizontal mediante una fuerza horizontal constante F. Este se mueve una distancia(metros) D sobre una superficie con un coeficiente de friccion N. El resultado debe de ser la velocidad final del bloque exactamente al recorrer esa distancia.


Entradas:

Masa = 6.0
Fuerza = 12
Distancia = 3.0
Friccion = 0.15

El resultado por pantalla sera:

Velocidad Final del Bloque 1.8 m/s.

carlitos_jajajajaja

Resuelto...


Código (cpp) [Seleccionar]

#include <iostream>
#include <cmath>
using namespace std;

inline void limpiar()
{
while(getchar() != '\n');
}

int main()
{
//aceleracion causada por la gravedad
const float g = 9.81;
//Datos
float M,F,D,N;
//Datos intermedios:
//fuerza causada por friccion, Fuerza neta sobre la masa, aceleracion
float Ff, Fn, a;
//Respuesta:
float v;

cout << "Introduzca la masa" << endl;
cin >> M;
limpiar();
cout << "Introduzca la fuerza" << endl;
cin >> F;
limpiar();
cout << "Introduzca la distancia" << endl;
cin >> D;
limpiar();
cout << "Introduzca el coeficiente de friccion" << endl;
cin >> N;
limpiar();

Ff = N*M*g;
Fn = F - Ff;
if(Fn < 0)
{
//No hay movimiento, la friccion es mas grande que la fuerza
cout << "Velocidad final del bloque 0 m/s." << endl;
exit(0);
}
a = Fn/M;
v = sqrt(2.0*a*D);
cout.precision(1);
cout << "Velocidad final del bloque ";
cout << fixed << v;
cout << " m/s." << endl;
cin.get();
}



Reto #17

Generar aleatoriamente 2 numeros enteros de 30 cifras y mostrar el resultado exacto de su suma
Merodeo los foros, esperando el momento de decir algo inteligente...

Se necesita paciencia

Komodo

Un entero no puede tener tantas cifras....


Novlucker

Creo que ese es el reto :rolleyes:

Saludos
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

ace332

#68
Creo que ya la tengo!  ;D


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

typedef char ent30[31];

void aleat30(ent30 z);
void sumarn30(ent30 a,ent30 b,ent30 suma,int *acarreo);

int main(void)
{
 ent30 a,b,suma;
 int acarreo;

 srand(time(0));
 aleat30(a);
 aleat30(b);

 sumarn30(a,b,suma,&acarreo);

 printf("   a = %31s\n   b = %31s\nsuma = %d%30s\n",a,b,acarreo,suma);
 return 0;
}

void aleat30(ent30 z)
{
 int i;
 for(i=0;i<30;i++)
 {
   z[i]='0'+rand()%10;
 }
 z[30]='\0';
}

#define CharADig(c) ((int)((c)-'0'))
#define DigAChar(d) ((char)(d)+'0')

void sumarn30(ent30 a,ent30 b,ent30 suma,int *ua)
{
 int i,ap=0;
 suma[30]='\0';
 for(i=29;i>=0;i--)
 {
   const int sumadig=CharADig(a[i])+CharADig(b[i])+ap;
   suma[i]=DigAChar(sumadig%10);
   ap=sumadig/10;
 }
 *ua=ap;
}


Reto #18 (Otro que tiene que ver con números grandes):

Calcular el factorial de un número n, 0<=n<=100. Sin usar tipos de datos de punto flotante (float, double, etc).
Y para los que puedan pensar que es una tarea, pues no, no lo es. :P  :¬¬

Og.

Regrese XD
Código (cpp) [Seleccionar]
#include <iostream>

using namespace std;

int fact(int val)
{
  if(val==0)
     return 1;
  else
     return val*fact(val-1);
}

int main(void)
{
   int N;
   cin >> N;
   cout << fact(N) << endl;
   return 0;
}


Reto #19

Escalando la piramide

supon que hay una piramide, y quieres saber cual es la cantidad maxima de piedras que puedes recolectar subiendo directamente a la sima.

Entrada

un numero N que dice el numero de pisos en la piramide.
N lineas con el numero de piedras que hay en cada punto de la piramide.
el ultimo piso de la piramide siempre sera de 1 solo bloque, el penultimo de 2 , el ante penultimo de 3 y asi hasta llegar al piso

Salida

Un entero que indique el numero maximo de piedras que se puedan juntar.

Ejemplo
3
1
2 1
1 0 1


esos datos se deben interpretar asi:



Salida

4
|-