ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Problemas Lenguaje C


Enviado por   •  23 de Agosto de 2012  •  11.464 Palabras (46 Páginas)  •  805 Visitas

Página 1 de 46

Problema: Primos

Los organizadores de la limpiada de Informática últimamente se han interesado por los números primos. Un número primo es aquel que sólo se puede dividir entre 1 y él mismo sin dejar residuo (el número 1 no es primo), por ejemplo el 2, 3, 5, 7, 11, 13, etc.

A los organizadores les interesa hacer un programa que sea capaz de encontrar todos los números primos que hay en un rango, por ejemplo todos los primos que hay entre 50 y 1500.

Problema:

Tiene que hacer un programa que sea capaz de encontrar todos los números primos en un cierto rango dado por el usuario (como el de arriba: de 50 a 1500) y siempre estará entre 1 y 10000.

Entrada:

Tu programa deberá pedir dos números que se ingresen desde el teclado. El primero será el límite inferior del rango en el que tienes que encontrar los primos (50 en el ejemplo anterior), y el segundo el límite superior del rango (1500).

Salida:

Tu programa deberá escribir en pantalla todos los números primos que haya encontrado en el rango indicado por el usuario. Los primos que encuentres los deberás escribir ordenados de menor a mayor.

Ejemplo:

En este ejemplo se muestra los datos de entrada solicitados y la salida correspondiente al rango de 7 (como límite inferior) a 35 (como límite superior).

Los datos de entrada se conforman de dos líneas con un número cada una. Como se describe en la sección Entrada, estos números representan el límite inferior y superior del rango de búsqueda (de 7 a 35).

En la salida por pantalla debes escribir todos los números primos que estén en el rango que se indicó en la entrada, escribiendo un número en cada línea, ordenadamente de menor a mayor.

Entrada

(Teclado) Salida

(Pantalla)

7

35 7

11

13

17

19

23

29

31

#include <iostream>

#include <math.h>

using namespace std;

int inf, sup, n, m, flag;

int main()

{

cin >> inf;

cin >> sup;

if ((inf<1) || (sup>10000) || (inf>sup))

cout << "Datos no válidos";

else

{

if (inf%2==0)

inf++;

for (n=inf;n<=sup;n+=2)

{

flag = 0;

m = 3;

while ((flag==0) && (m<=ceil(sqrt(n))))

{

if (n%m==0)

flag = 1;

m+=2;

}

if (flag==0)

cout << n << endl;

}

}

return 0;

}

Problema: Sumandos

Problema:

Se tiene una lista de números enteros diferentes {x1, x2, … , xn}, debes escribir un programa que encuentre dos números xi, xj de la lista tales que xi + xj = M, donde M es un número entero que también se conoce.

Los números de la lista serán enteros entre –1000 y 1000 y la lista tendrá entre 3 y 1000 números. El número M es un número entero entre –2000 y 2000.

Entrada:

Tu programa deberá leer del teclado los siguientes datos, los números N y M, que indican la cantidad de números en la lista y el número que se desea obtener por medio de sumas. Posteriormente, los N números de la lista.

Salida:

Tu programa deberá escribir en la pantalla de la PC el número total de formas de obtener M por medio de sumas de dos números en la lista.

Ejemplo:

Entrada Salida

8

10

–2

7

4

4

6

3

12

10 4

NOTA: Las soluciones posibles para el ejemplo anterior, considerando que N = 8 y M = 10 son:

–2 + 12

7 + 3

4 + 6

4 + 6

Nota que la forma (4 + 6) se toma en cuenta dos veces ya que la lista contiene 2 números cuatro.

#include <iostream>

using namespace std;

int n, m, i, j, k, datos[1000], flag;

int main()

{

cin >> n;

cin >> m;

if ((n<3) || (n>1000) || (m<-2000) || (m>2000))

cout << "Datos no válidos";

else

{

i = 1;

flag = 0;

while ((i<=n) && (flag==0))

{

cin >> datos[i];

if ((datos[i]<-1000) || (datos[i]>1000))

flag = 1;

i++;

}

if (flag==0)

{

k = 0;

for (i=1;i<n;i++)

for (j=i+1;j<=n;j++)

if (datos[i]+datos[j]==m)

k++;

cout << k;

}

else

cout << "Datos no válidos";

}

return 0;

}

Problema: Ordena

Problema:

Cree un programa que lea desde el teclado una lista de N dígitos e imprima en pantalla el número entero más pequeño que se pueda formar utilizando una sola vez todos y cada uno de esos mismos dígitos.

Entrada:

En la primera línea, el número N, tal que 0<=N<=100. En la segunda línea, la lista de dígitos separados por un espacio entre ellos.

Salida:

En una línea y separados por un espacio los dígitos ordenados de tal manera que formen el número entero más pequeño posible.

Ejemplo:

Entrada Salida

10

9 0 5 6 3 8 2 1 3 4 1 2 3 3 4 5 6 8 9

NOTA: Recuerda que el cero solo cuando está a la izquierda no tiene valor

#include <iostream>

using namespace std;

int n, lista[100], i, j, flag, aux;

int main()

{

cin >> n;

if ((n>=0) && (n<=100))

{

for (i=0;i<n;i++)

...

Descargar como (para miembros actualizados) txt (45 Kb)
Leer 45 páginas más »
Disponible sólo en Clubensayos.com