Sunteți pe pagina 1din 32

Mostrar los multiplos de 3 comprendidos entre los numeros 1 y 20 Cdigo:

#include <stdio.h> #include <conio.h> #include <iostream.h> int main () { clrscr(); for (int i=1;i<=20;i++) { cout<<i; if (i%3==0) cout<<" Es multiplo de 3" <<endl; else cout<<" No es multiplo de 3"<<endl; } getch(); return 0; }

Leer un numero de 3 digitos y sumarlos sus dgitos Cdigo:

#include <stdio.h> #include <conio.h> int main () { int numero, sum_dig=0; printf("Inserte un numero de 3 digitos: "); scanf("%d",&numero); if (numero>=100) { int num=numero; //salvamos en num, la variable numero while (numero!=0) { sum_dig=sum_dig+(numero%10); //para sacar el ultimo digito de numero numero=numero/10; //elimina el ultimo digito de numero } printf("La suma de los digitos de %d es : %d",num, sum_dig); } else printf("\a ERROR: El digito no tiene 3 digitos"); getch(); }

Dado un numero verificar: - Que tenga dos digitos - Verificar si sus digitos son pares - Promediar sus digitos Cdigo:

#include <stdio.h> #include <conio.h> int main () { int numero; printf("Inserte num. de dos digitos pares: "); scanf("%d",&numero); int aux=numero; if(numero<100 && numero>9) { int d1=numero%10; numero=numero/10; int d2=numero%10; if(d1%2==0 & d2%2==0) printf("El promedio d los digitos de %d es: %d",aux,(d1+d2)/2); } else printf("\aERROR: el numero no tiene dos digitos"); getch(); }

Dados seis numeros enteros determinar, el menor de ellos Cdigo:

#include<stdio.h> #include<conio.h> int main() { int a, b, c, d, e, f; printf("Inserte num.1: "); scanf("%d",&a); printf("Inserte num.2: "); scanf("%d",&b); printf("Inserte num.3: "); scanf("%d",&c); printf("Inserte num.4: "); scanf("%d",&d); printf("Inserte num.5: "); scanf("%d",&e); printf("Inserte num.6: "); scanf("%d",&f); int menor=a; if(b<menor) menor=b; if(c<menor) menor=c; if(d<menor) menor=d; if(e<menor) menor=e; if(f<menor) menor=f; printf("El menor de %d,%d,%d,%d,%d,%d ",a,b,c,d,e,f); printf("\nEs %d",menor); getch(); }
hallar la sumatoria de: 2! + 4! + 6! + 8! + ... Cdigo:

#include <stdio.h> #include <conio.h> int facto (int x) { int f=1; for (int i=1;i<=x;i++) {f=f*i;} return (f); } int main () { int n, serie=2, suma=0; printf ("Inserte cantidad de terminos a generar: "); scanf ("%d",&n); for (int i=1;i<=n;i++) { printf ("%d! + ",serie); suma=suma+(facto(serie)); serie=serie+2; } printf (" = %d",suma); getch(); }

Generar la serie: 1, 5, 3, 7, 5, 9, 7, ..., 23 Cdigo:

#include <stdio.h> #include <conio.h> int main () { int serie=1; bool sw=true; do { printf("%d, ",serie); if (sw) serie+=4; else serie-=2; sw=!sw; } while (serie<=23);

getch(); }

/*Dado el vector T de tamao n. Si el tamao es par invertir los elementos de la mitad de los elementos Ejemplo: v=[1][2][3][4][5][6] v(invertido)=[3][2][1][6][5][4] */ Cdigo:

#include<stdio.h> #include<conio.h> void llenar (int V [], int d) { for (int i = 1 ; i <= d ; i++) { printf ("Inserte pos.[%d]: ",i); scanf("%d",&V[i]); } } void mostrar (int V [], int d) { for (int i = 1 ; i <= d ; i++) { printf ("[%d]",V[i]); } } void invierte (int V [], int d) { int aux1; int fin1 = d / 2; for (int i = 1 ; i <= (d / 2) / 2 ; i++) { aux1 = V [i]; V [i] = V [fin1]; V [fin1] = aux1; fin1--; } fin1 = d; for (int j = (d / 2) + 1 ; j <= (d / 2) + 1 ; j++) { aux1 = V [j]; V [j] = V [fin1]; V [fin1] = aux1; fin1--; } } int main () { int V[20]; int d; printf ("Inserte dimen. del vector: "); scanf("%d",&d); llenar (V, d); printf ("\nVECTOR ORIGINAL: \n"); mostrar (V, d); printf ("\n\nVECTOR LUEGO DE LA INVERSION: \n"); invierte (V, d); mostrar (V, d); getch(); }

/*Dado un polinomio evualuarlo en el punto x (todo en un vector)*/ Cdigo:

#include <stdio.h> #include <conio.h>

void llenar (int V[20], int d) { for (int i = 1 ; i <= d ; i++) { printf ("Inserte pos.[%d]: ",i); scanf("%d",&V[i]); } } void mostrar (int V[20], int d) { for (int i = 1 ; i <= d ; i++) { printf ("[%d]",V[i]); } } int potencia (int b, int e) { int p = 1; for (int i = 1 ; i <= e ; i++) { p = p * b; } return (p); } void evalua (int V [], int d, int x) { int s = 0; for (int i = 1 ; i <= d ; i += 2) { s = s + (V [i] * potencia (x, V [i + 1])); } printf("\n\nX es igual a: %d",s); } int main () { int V[20]; int d, x; printf("Inserte dimen. del vector: "); scanf("%d",&d); printf ("Inserte valor de (x): "); scanf("%d",&x); llenar (V, d); printf("\nVECTOR: "); mostrar (V, d); evalua (V, d, x); getch(); }

Generar la matriz: [01][02][03][04] [08][07][06][05] [09][10][11][12] Cdigo:

#include<stdio.h> #include<conio.h> void llenar (int M[20][20], int f, int c) { int k=1; for (int i=1;i<=f;i++) { if (i%2!=0) { for (int j=1;j<=c;j++) { M[i][j]=k; k++; } }

else { for (int j=c;j>=1;j--) { M[i][j]=k; k++; } } } } void mostrar (int M[20][20], int f, int c) { for (int i=1;i<=f;i++) { printf("\n"); for (int j=1;j<=c;j++) { printf("[%d] ",M[i][j]); } } } int main () { int f, c; int M[20][20]; printf("Inserte filas de M: "); scanf("%d",&f); printf("Inserte cols. de M: "); scanf("%d",&c); llenar(M, f, c); mostrar(M, f, c); getch(); }

Generar la matriz: [01][02][03][04] [05][06][07][00] [08][09][00][00] [10][00][00][00] Cdigo:

#include <stdio.h> #include <conio.h> void llenar (int M[20][20], int d) { int cont=1; for (int i=1;i<=d;i++) { for (int j=1;j<=d;j++) { if ((i+j)<=(d+1)) {M[i][j]=cont; cont++;} else M[i][j]=0; } } } void mostrar (int M[20][20], int d) { for (int i=1;i<=d;i++) { printf("\n"); for (int j=1;j<=d;j++) { printf ("[%d] ",M[i][j]); } } } int main () { int d; int M[20][20];

printf("Insert dimen: "); scanf("%d",&d); llenar(M, d); mostrar(M, d); getch(); }


Dadas dos matrices A y B intercambiar los minimos de A con los maximos de B Cdigo:

#include <stdio.h> #include <conio.h> void llenar (int M[20][20], int f, int c) { for (int i = 1 ; i <= f ; i++) { for (int j = 1 ; j <= c ; j++) { printf ("Inserte pos[%d][%d]: ",i,j); scanf("%d",&M[i][j]); } } } void mostrar (int M[20][20], int f, int c) { for (int i = 1 ; i <= f ; i++) { printf("\n"); for (int j = 1 ; j <= c ; j++) { printf ("[%d]",M[i][j]); } } } int menor (int M[20][20], int f, int c) { int men = M [1] [1]; for (int i = 1 ; i <= f ; i++) { for (int j = 1 ; j <= c ; j++) { if (M [i] [j] < men) men = M [i] [j]; } } return (men); } int maximo (int M[20][20], int f, int c) { int max = M [1] [1]; for (int i = 1 ; i <= f ; i++) { for (int j = 1 ; j <= c ; j++) { if (M [i] [j] > max) max = M [i] [j]; } } return (max); } void intercambiar (int A[20][20], int fa, int ca, int B[20][20], int fb, int cb) { int min_a = menor (A, fa, ca); int max_b = maximo (B, fb, cb); //para cambiar los minimos de A con los maximos de B for (int i = 1 ; i <= fa ; i++) { for (int j = 1 ; j <= ca ; j++) { if (A[i][j] == min_a) A[i][j]=max_b;

} } //para intercambiar los maximos de con los minimos de A for (int i = 1 ; i <= fb ; i++) { for (int j = 1 ; j <= cb ; j++) { if (B[i][j] == max_b) B[i][j]=min_a; } } } int main () { int A [20] [20]; int B [20] [20]; int fa, ca, fb, cb; printf ("Insert filas de printf ("Insert columnas printf ("Insert filas de printf ("Insert columnas

A: de B: de

"); scanf("%d",&fa); A: "); scanf("%d",&ca); "); scanf("%d",&fb); B: "); scanf("%d",&cb);

//lectura de matrices printf ("\nINSERTANDO DATOS EN MATRIS A: \n"); llenar (A, fa, ca); printf ("\nINSERTANDO DATOS EN MATRIS B: \n"); llenar (B, fb, cb); printf ("\nMATRICES ORIGINALMENTE INSERTADAS: "); mostrar (A, fa, ca); printf ("\n"); mostrar (B, fb, cb); printf ("\n"); //intercambiando elementos intercambiar (A, fa, ca, B, fb, cb); printf ("\nMATRICES DESPUES DEL INTERCAMBIO:"); mostrar (A, fa, ca); printf ("\n"); mostrar (B, fb, cb); getch(); }
/*Dada una matris cuadrada invertir su diagonal principal*/ Cdigo:

#include <stdio.h> #include <conio.h> void llenar (int M[20][20], int d) { for (int i = 1 ; i <= d ; i++) { for (int j = 1 ; j <= d ; j++) { printf ("Inserte pos[%d][%d]: ",i, j); scanf("%d",&M [i] [j]); } } } void mostrar (int M[20][20], int d) { for (int i = 1 ; i <= d ; i++) { printf("\n"); for (int j = 1 ; j <= d ; j++) { printf ("[%d]",M [i] [j]); } } } void invierte (int M[20][20], int d) { int fin = d;

for (int i { int aux = M [i] [i] M [d] [d] fin--; } }

= 1 ; i <= d / 2 ; i++) M [i] [i]; = M [d] [d]; = aux;

int main() { int M [20] [20]; int d; printf ("Inserte dimen. de la matris cuadrada: "); scanf("%d",&d); llenar (M, d); printf ("\nMATRIS ORIGINAL: "); mostrar (M, d); printf ("\n\nMATRIS CON LA DIAGONAL PRINCIPAL INVERTIDA: "); invierte (M, d); mostrar (M, d); getch(); }

/*Dada una matris cuadrada invertir su diagonal secundaria*/ Cdigo:

#include <stdio.h> #include <conio.h> void llenar (int M[20][20], int d) { for (int i = 1 ; i <= d ; i++) { for (int j = 1 ; j <= d ; j++) { printf ("Inserte pos[%d][%d]: ",i, j); scanf("%d",&M [i] [j]); } } } void mostrar (int M[20][20], int d) { for (int i = 1 ; i <= d ; i++) { printf("\n"); for (int j = 1 ; j <= d ; j++) { printf ("[%d]",M [i] [j]); } } } void invierte { int fin = d; for (int i = { int aux = M M [i] [d] = M [d] [i] = fin--; } } (int M[20][20], int d)

1 ; i <= d / 2 ; i++) [i] [d]; M [d] [i]; aux;

int main() { int M [20] [20]; int d; printf ("Inserte dimen. de la matris cuadrada: "); scanf("%d",&d); llenar (M, d); printf ("\nMATRIS ORIGINAL: "); mostrar (M, d);

printf ("\n\nMATRIS CON LA DIAGONAL SECUNDARIA INVERTIDA: "); invierte (M, d); mostrar (M, d); getch(); }

/*Dada dos matrices de diferentes tamanios R y S mostrar los elementos comunes de R en S*/ Cdigo:

#include <stdio.h> #include <conio.h> void llenar (int M[20][20], int f, int c) { for (int i = 1 ; i <= f ; i++) { for (int j = 1 ; j <= c ; j++) { printf ("Inserte pos[%d][%d]: ",i,j); scanf("%d",&M [i] [j]); } } } void mostrar (int M[20][20], int f, int c) { for (int i = 1 ; i <= f ; i++) { printf("\n"); for (int j = 1 ; j <= c ; j++) { printf ("[%d]",M [i] [j]); } } } void comunes (int R[20][20], int fr, int cr, int S[20][20], int fs, int cs) { printf("\n\nLos elementos comunes de R en S son: "); for (int i = 1 ; i <= fr ; i++) { for (int j = 1 ; j <= cr ; j++) { for (int k = 1 ; k <= fs ; k++) { for (int l = 1 ; l <= cs ; l++) { if (R [i] [j] == S [k] [l]) printf ("[%d]",R [i] [j]); } } } } } int main() { int R [20] [20]; int S [20] [20]; int fr, cr, fs, cs; printf("Inserte filas de scanf("%d",&fr); printf("Inserte columnas scanf("%d",&cr); printf("Inserte filas de scanf("%d",&fs); printf("Inserte columnas scanf("%d",&cs);

R: "); de R: "); S: "); de S: ");

printf("\nLLENANDO MATRIS R: \n"); llenar (R, fr, cr); printf("\nLLENANDO MATRIS S: \n"); llenar (S, fs, cs); printf("\nLA MATRIS R : ");

mostrar (R, fr, cr); printf("\n\nLA MATRIS S : "); mostrar (S, fs, cs); comunes (R, fr, cr, S, fs, cs); getch(); }
/*Intercambiar los datos de la columna 1 con la ultima columna*/ Cdigo:

#include <stdio.h> #include <conio.h> void llenar (int M[20][20], int f, int c) { for (int i = 1 ; i <= f ; i++) { for (int j = 1 ; j <= c ; j++) { printf ("Inserte pos:[%d][%d]: ",i,j); scanf("%d",&M [i] [j]); } } } void mostrar (int M[20][20], int f, int c) { for (int i = 1 ; i <= f ; i++) { printf("\n"); for (int j = 1 ; j <= c ; j++) { printf ("[%d]",M [i] [j]); } } } void intercambiar (int M[20][20], int f, int c) { for (int i = 1 ; i <= f ; i++) { int aux = M [i] [1]; M [i] [1] = M [i] [c]; M [i] [c] = aux; } } int main () { int M [20] [20]; int f, c; printf ("Inserte filas de la matris: "); scanf("%d",&f); printf ("Inserte columnas de la matris: "); scanf("%d",&c); printf ("\nLLENANDO MATRIS : \n"); llenar (M, f, c); printf ("\nLA MATRIS ORIGINAL : "); mostrar (M, f, c); printf ("\n\nLA MATRICES INTERCAMBIADA : "); intercambiar (M, f, c); mostrar (M, f, c); getch(); }
/* Contar el numero de digitos de cada elemento de una matris */ Cdigo:

#include <stdio.h> #include <conio.h> void llenar (int M [20] [20], int f, int c)

{ for (int i = 1 ; i <= f ; i++) { for (int j = 1 ; j <= c ; j++) { printf ("Inserte pos[%d][%d]: ",i,j); scanf("%d",&M [i] [j]); } } } void mostrar (int M [20] [20], int f, int c) { for (int i = 1 ; i <= f ; i++) { printf("\n"); for (int j = 1 ; j <= c ; j++) { printf ("[%d]",M [i] [j]); } } } void cuenta (int M[20][20], int f, int c) { for (int i = 1 ; i <= f ; i++) { for (int j = 1 ; j <= c ; j++) { int contador = 0; int n=M[i][j]; while (n != 0) { n = n / 10; contador++; } printf("\n[%d] tiene: %d digito(s)",M[i][j],contador); } } } int main () { int M [20] [20]; int f, c; printf ("Inserte filas de la matris: "); scanf("%d",&f); printf ("Inserte columnas de la matris: "); scanf("%d",&c); printf ("\nLLENANDO MATRIS M: \n"); llenar (M, f, c); printf ("\nLA MATRIS: "); mostrar (M, f, c); printf ("\n\nCONTEO DE DIGITOS: "); cuenta (M, f, c); getch(); }
/*Hallar la fila y la columna del primer elemento "e" */ Cdigo:

#include <stdio.h> #include <conio.h> void llenarMatris (int M[20][20], int f, int c) { for (int i = 1 ; i <= f ; i++) { for (int j = 1 ; j <= c ; j++) { printf ("Inserte pos[%d][%d]: ",i,j); scanf("%d",&M [i] [j]); } }

} void mostrarMatris (int M[20][20], int f, int c) { for (int i = 1 ; i <= f ; i++) { printf ("\n"); for (int j = 1 ; j <= c ; j++) { printf ("[%d]",M [i] [j] ); } } } void busqueda (int M[20][20], int f, int c, int e) { int bn = 0; for (int i = 1 ; i <= f ; i++) { for (int j = 1 ; j <= c ; j++) { if (M [i] [j] == e) { printf("\nEl numero: %d se encuentra en la posicion: [%d][%d] de la matris",e, i, j); bn = 1; } } } if (bn == 0) printf("\nNo se encontro el numero %d en la matris :(",e); } int main () { int M [20] [20]; int f, c, numero; printf ("Inserte filas de la matris: "); scanf("%d",&f); printf ("Inserte columnas de la matris: "); scanf("%d",&c); printf ("\nLLENANDO MATRIS: \n"); llenarMatris (M, f, c); printf ("\nLA MATRIZ Z: "); mostrarMatris (M, f, c); printf ("\n\nInserte un numero: "); scanf("%d",&numero); busqueda (M, f, c, numero); getch(); }

/* Dada una matris y un vector, contar la cantidad de numeros primos de ambos */ Cdigo:

#include <stdio.h> #include <conio.h> void llenarMatris (int M[20][20], int f, int c) { for (int i = 1 ; i <= f ; i++) { for (int j = 1 ; j <= c ; j++) { printf ("Inserte pos[%d][%d]: ",i,j); scanf("%d",&M [i] [j]); } } } void mostrarMatris (int M[20][20], int f, int c) {

for (int i = 1 ; i <= f ; i++) { printf ("\n"); for (int j = 1 ; j <= c ; j++) { printf ("[%d]",M [i] [j] ) } } } void llenarVector (int V[20], int d) { for (int i = 1 ; i <= d ; i++) { printf ("Inserte pos.[%d]: ",i); scanf("%d",&V [i]); } } void mostrarVector (int V[20], int d) { for (int i = 1 ; i <= d ; i++) { printf ("[%d]",V [i]); } } int primosMatris (int M[20][20], int f, int c) { int cant = 0; for (int i = 1 ; i <= f ; i++) { for (int j = 1 ; j <= c ; j++) { int cc = 0; for (int k = 1 ; k <= M [i] [j] ; k++) { if (M [i] [j] % k == 0) cc++; } if (cc == 2) cant++; } } return (cant); }

int primosVector (int V[20], int d) { int cant = 0; for (int i = 1 ; i <= d ; i++) { int c = 0; for (int j = 1 ; j <= V [i] ; j++) { if (V [i] % j == 0) c++; } if (c == 2) cant++; } return (cant); }

int main() { int M [20] [20]; int V [20]; int f, c, d; printf ("Inserte filas de la matris: "); scanf("%d",&f); printf ("Inserte columnas de la matris: "); scanf("%d",&c);

printf ("Inserte dimension del vector: "); scanf("%d",&d); printf ("\nLLENANDO MATRIS: \n"); llenarMatris (M, f, c); printf ("\nLLENANDO EL VECTOR: \n"); llenarVector (V, d); printf ("\nLA MATRIS: "); mostrarMatris (M, f, c); printf ("\n\nEL VECTOR: \n"); mostrarVector (V, d); int primos = primosMatris (M, f, c) + primosVector (V, d); printf ("\n\nLA CANTIDAD DE NUMEROS PRIMOS QUE HAY EN LOS ARREGLOS ES: %d",primos); getch(); }

/*Dada la matrix de m*n y el vector de tamanio n, determinar que columna de la matris es igual al vector*/ Cdigo:

#include <stdio.h> #include <conio.h> void llenarMatris (int M[20][20], int f, int c) { for (int i = 1 ; i <= f ; i++) { for (int j = 1 ; j <= c ; j++) { printf ("Inserte pos[%d][%d]: ",i,j); scanf("%d",&M [i] [j]); } } } void mostrarMatris (int M[20][20], int f, int c) { for (int i = 1 ; i <= f ; i++) { printf ("\n"); for (int j = 1 ; j <= c ; j++) { printf ("[%d]",M [i] [j] ); } } } void llenarVector (int V[20], int d) { for (int i = 1 ; i <= d ; i++) { printf ("Inserte pos.[%d]: ",i); scanf("%d",&V [i]); } } void mostrarVector (int V[20], int d) { for (int i = 1 ; i <= d ; i++) { printf ("[%d]",V [i]); } }

void procedure (int M[20][20], int f, int c, int V[20], int d) { for (int i = 1 ; i <= f ; i++) { int sw = 1; for (int j = 1 ; j <= c ; j++)

{ for (int k = 1 ; k <= d ; k++) { if (M [j] [i] != V [k]) sw = 0; } } if (sw == 1) printf ("\n\nLa columna %d es igual al vector",i); } }

int main () { int M [20] [20]; int V [20]; int f, d; printf ("Inserte filas de la matris: "); scanf("%d",&f); printf ("Inserte dimension del vector: "); scanf("%d",&d); printf ("\nLLENANDO MATRIS: \n"); llenarMatris (M, f, d); printf ("\nLLENANDO EL VECTOR: \n"); llenarVector (V, d);

printf ("\nLA MATRIS: "); mostrarMatris (M, f, d); printf ("\n\nEL VECTOR: \n"); mostrarVector (V, d); procedure (M, f, d, V, d); getch(); }

/*Dada una matris Z almacenar en un vector A la suma por sus columnas y en un vector B la suma por sus filas */ Cdigo:

#include <stdio.h> #include <conio.h> void llenarMatris (int M[20][20], int f, int c) { for (int i = 1 ; i <= f ; i++) { for (int j = 1 ; j <= c ; j++) { printf ("Inserte pos[%d][%d]: ",i,j); scanf("%d",&M [i] [j]); } } } void mostrarMatris (int M[20][20], int f, int c) { for (int i = 1 ; i <= f ; i++) { printf ("\n"); for (int j = 1 ; j <= c ; j++) { printf ("[%d]",M [i] [j] ); } } } void llenarVector (int V[20], int d) { for (int i = 1 ; i <= d ; i++)

{ printf ("Inserte pos.[%d]: ",i); scanf("%d",&V [i]); } } void mostrarVector (int V[20], int d) { for (int i = 1 ; i <= d ; i++) { printf ("[%d]",V [i]); } }

void vectorA (int M[20][20], int f, int c, int A[20], int d) { for (int i = 1 ; i <= f ; i++) { int suma = 0; for (int j = 1 ; j <= c ; j++) { suma = suma + M [j] [i]; } A [i] = suma; } } void vectorB (int M[20][20], int f, int c, int B[20], int d) { for (int i = 1 ; i <= f ; i++) { int suma = 0; for (int j = 1 ; j <= c ; j++) { suma = suma + M [i] [j]; } B [i] = suma; } } int main () { int Z [20] [20]; int A [20]; int B [20]; int f, c; printf ("Inserte filas de la matris: "); scanf("%d",&f); printf ("Inserte columnas de la matris: "); scanf("%d",&c); printf ("\nLLENANDO MATRIS: \n"); llenarMatris (Z, f, c); printf ("\nLA MATRIZ Z: "); mostrarMatris (Z, f, c); printf ("\n\nSUMA vectorA (Z, f, c, mostrarVector (A, printf ("\n\nSUMA vectorB (Z, f, c, mostrarVector (B, getch(); } POR COLUMNAS DE LA MATRIS (vector A): \n"); A, c); c); POR FILAS DE LA MATRIS (vector B): \n"); B, f); f);

Problemas propuestos C Bsico


Ejercicio 100 Escribir un programa que solicite una temperatura y sistema de medicin (celsius o farenheit) y que haga la conversin al otro sistema.(para pasar a farenheit y=5/9X-32) x=grados celsius Ejercicio 101 Escribir un programa para el arqueo de caja de una tienda. Se pide cuantas monedas de 1 centimo Cuantas monedas de 2 centimos Cuantas monedas de 5 centimos Cuantas monedas de 10 centimos Cuantas monedas de 20 centimos Cuantas monedas de 50 centimos Cuantas monedas de 1 Euro Cuantas monedas de 2 Euros Cuantos billetes de 5 Euros Cuantos billetes de 10 euros Cuantos billetes de 20 Euros Cuantos billetes de 50 Euros Cuantos billetes de 100 Euros Cuantos billetes de 200 Euros Cuantos billetes de 500 Euros y calcular la suma total en euros Ejercicio 102 Escribir un programa que solicite una cantidad entera en formato decimal y la convierta a binario y hexadecimal Ejercicio 103 Escribir un programa que solicite tres nmeros reales A, B y C y calcule Ax2+Bx+C=0 Ejercicio 104 Escribir un programa que solicite un ao e indique si es bisiesto o no Un ao es bisiesto si es mltiplo de 4 excluyendo aquellos que son mltiplo de 100 y no de 400. Ejercicio 105 Escribir un programa que calcule los 100 primeros nmeros primos Ejercicio 106 Escribir un programa que pregunte un nmero entero entre uno y 9 y genere la tabla de multiplicar de ese nmeroen el siguiente formato (p. ej el 7) 7x1=7 7 x 2 = 14 t x 3 = 21 7 x 4 = 28 7 x 5 = 35 ... 7 x 10 = 70 Ejercicio 124 Conociendo las monedas y billetes que estn en caja pedir el precio de compra de un producto y que el programa diga los cambios que hay que devolver(no solo el importe sino como distribuirlo en monedas y billetes) Para ello primero hay que preguntar que monedas y billetes tenemos y luego que cantidad hay que cobrar. Ejercicio 107 Realizar un programa que solicite una cantidad entera. Dada esa cantidad X debe solicitar X nmeros y ordenarlos de mayor a menor Ejercicio 108 Realizar un programa que solicite el nombre, direccin y telfono de 5 personas. Una vez metidos preguntar un nmero entre 1 y 5 para sacar la informacin de esa persona. El cero termina Ejercicio 119 Realizar un programa que solicite una mscara de subred y devuelva una ip vlida. Ejercicio 127 Comprobar que una codificacion de tarjeta de credito es valida,y si nos es valida t dice k numero tienes k cambiarle para hacerla valida. El numero se compone de tres partes principales: Los 4 primeros digitos componen el identificativo del banco que cede la tarjeta.hay un numero diferente para cada banco(esto se busca en internet).

El 5 digito es el tipo de tarjeta e indica que entidad financiera gestiona esta tarjeta.Las mas importantes son Visa(4),american Expres(3),Master card(5),Discover(6). los 10 digitos siguientes componen el numero de usuario e identifican a este de manera unica. Digito de control es el ultimo numero y se obtiene aplicando un algoritmo al resto del numero. El formato es el siguiente 1111 2333 3333 3334 algoritmo de codificacion: Se realiza en tres pasos. Si tenemos el numero de la tarjeta 4539 4512 0398 7356 y queremos comprobar que es vlido: 1.Multiplicamos por dos los numeros de las posiciones imapres(4-3-4-1-0-9-7-5) y dejarlos con un solo digito. 4*2=8 3*2=6 4*2=81*2=2 0*2=0 9*2=18-->1+8=9 7*2=14--->1+4=5 5*2=10--->1+0=1 2.Sumar los digitos de las posiciones pares y los nuevos de las posiciones impares. 5+9+5+2+3+8+6+ 8+6+8+2+0+9+5+1=80 3.Si el resultado es multiplo de 10 entonces el numero es valido.

Acceso a ficheros
Ejercicio 122 Escribir un programa que solicite palabras y las agrege a un fichero llamado c:\diccionario de forma que luego se puedan consultar las palabras una a una Ejercicio 109 Escribir un fichero que contenga 255 caracteres cualesquiera y los guarde en c:\exploit.exe Ejercicio 110 Comprobar si existe el fichero c:\exploit.exe y si existe que lo lea y lo conserve en un array Ejercicio 111 Escribir un programa que lea el archivo c:\exploit.exe y genere un archivo c:\ExploitCompleto.exe que ser un archivo ejecutable. Al ejecutarse hace: a) crea el archivo exploit.exe (lo tiene metido en un array) b) realiza una serie de comprobaciones (las que queramos) c) segn el resultado de esas comprobaciones (figuradamente versin del sistema operativo por ejemplo) ejecuta exploit.exe con el parmetro correspondiente a la versin obtenida Esas comprobaciones pueden ser sumar dos nmeros aleatorios y si es par usar un parmetro, si es impar usar otro. Naturalmente si en exploit.exe no hay un cdigo real no funcionar, pero quiz podais intentar meter all un cdigo real que haga algo Ejercicio 112 Realizar un keylogger que detecte las pulsaciones y las escriba a un fichero llamado log.txt utilizando las apis de windows

Comunicaciones
Ejercicio 113 Escribir un programa que escuche en el puerto 4500 Ejercicio 114 Escribir un programa que haga ping para encontrar un servidor que escuche en el puerto 4500 Ejercicio 115 Escribir un programa en que en el que un servidor escucha en el puerto 4500 y si un cliente intenta conectarse se le enva una paquete donde se le solicita que se identifique y queda a la escucha para recibir identificacin. Si el cliente es aceptado se le enva al cliente una aceptacin Si el cliente es rechazado se le enva al cliente una denegacin La estructura del paquete de comunicaciones es: cdigo: 5 dgitos (cdigo 1 = presentacin (quin soy), cdigo 2 = solicitud de identificacin (quin eres?) cdigo=3 = aceptacin ("aceptado") cdigo 4 = denegacin (rechazado) usuario (mximo 20 caracteres) clave (mximo 10 caracteres) ip_propia (20 caracteres) puerto_propio (5 caracteres) Ejercicio 116 Realizar una aplicacin de cliente que busque a un servidor mediante un ping y si lo encuentra le envie un paquetecon la siguiente informacin: cdigo = 1 Nombre de usuario (obligatoriamente 20 caracteres)

contrasea: (obligatoriamente 10 caracteres) ip_local: la ip del cliente puerto_local (el puerto donde escuchar la respuesta) y quede a la escucha para recibir aceptacin Ejercicio 126 Realizar una aplicacin que solicite usuario y contrasea y carpeta e intente realizar una sesin ftp con ese usuario y contrasea para subir todos los archivos que estn en esa carpeta. Si se llama a la aplicacin con el parmetro /D entonces en vez de subirlos baja todos los archivos que estn all a esa carpeta. Se considera que todos los archivos son texto.

Operaciones de bit
Ejercicio 117 escribir un programa al que solicita una mscara de subred en formato decimal. El programa devolver todas las subredes con la siguiente informacin: Direccin de red, rango de direcciones vlido, direccin de broadcast Ejercicio 118 Escribir un programa que solicita una mscara de subred y dos direcciones ip. El programa informar si ambas direccines estn en la misma subred o no

Seguridad
Ejercicio 120 Realizar un programa que solicite una clave y luego por iteraciones encuentre la clave Ejercicio 121 Realizar un programa que solicite una clave y luego buscando en un diccionario de palabras del ejercicio 122 intente encontrar la clave Ejercicio 123 Escribir un programa que solicite usuario y contrasea. La contrasea se cifra como querais y se vuelve a solicitar contrasea (para verificar).Se cifra y se compara con la anterior (es decir no se comparan las contraseas sino su resultado cifrado). Ejercicio 125 Escribir un programa que permita codificar/descodificar una determinada clave que se pasa como argumento.Si se pasa el parmetro /c hay que codificar. Si se pasa el parmetro /d hay que descodificar. Si no se pone se asume '/c'. Si no se pone clave no hace nada. El formato ser por tanto "aplicacin [/d /c] clave El sistema de cifrado ser base64

Las soluciones estn en esta pgina

http://foro.elhacker.net/ejercicios/soluciones_ejercicios_c-

t35174.0.html
Otros propuestos varios Examenes sin resolver del segundo trimestre: 1. Crear un programa en C que solicite nmeros enteros positivos distintos de 0 hasta que el usuario desee terminar, que ser cuando introduzca un nmero negativo. Por cada nmero introducido se deber visualizar:

y y

a. Si el nmero es primo: la suma de todos los primos anteriores a l, no incluyendole. b. Y si el nmero no es primo: sus 10 primeros mltiplos.

Para resolver el ejercicio, debers utilizar tres funciones fuera del main: una que te diga si un numero es primo o no; otra que te devuelva la suma de los nmeros primos; y otra que te imprima por pantalla los mltiplos del nmeo. Por ejemplo: Introduzca un nmero: 5 Es primo Suma de todos los primos anteriores: 6 Introduzca un nmero: 9 No es primo. Sus mltiplos: 9, 18, 27, 36, 45, 54, 63, 72, 81, 90

2 Examen Realiza un programa que rellene un vector de 12 elementos con nmeros enteros positivos introducidos por teclado por el usuario. A continuacin realiza las siguiente tareas mediante el uso de funciones, una por cada punto y en el orden indicado:

y y y y

Calcula la media aritmtica de los elementos mayores que 15 del vector e imprime por pantalla el resultado, adems de los nmeros que han sido utilizados para la media. Indica si la media de los elementos que ocupan posiciones pares es mayor, menos o igual que la media de los elementos que ocupan posiciones impares en el vector. Busca e imprime todos los divisores del elemento que ocupa la posicin 2 en el vector. Utiliza una funcin para intercambiar de posicin los elementos mayor y menor del vector. Despues imprime el vector en el main para ver el cambio.

Ejemplo:sea el vector 10 15 20 4 6 5 6 8 9 2 16 33 Los elementos para calcular la media son: 20 16 33 y la media es: 23 Media de elementos que ocupan posiciones pares: 11,16 Media de elementos que ocupan posiciones impares: 11,16 La media de los elementos que ocupan posiciones pares es igual que la suma de los elementos que ocupan posiciones impares. El elemento mayor es 33 y esta en la posicin 11 El elemento menor es 2 y esta en la posicin 9 Divisores de 20: 10 20 4 5 2 1) elaborar una funcin que reciba una matriz y el nmero de filas y de columna. La funcin debe devolver el nmero 1 si existe algn nmero primo en la matriz el nmero 2 si existe algn nmero perfecto. Se debe retornar el numero 0 de contrario. 2)elaborar una funcin que reciba dos arreglos a y b y un numero n que indica la mxima capacidad del arreglo b y permita concatenar los arreglos. La concatenacin debe quedar almacenada en el arreglo b. si la longitud del arreglo b no es suficiente para la concatenacin, los arreglos deben quedar con los datos originales y se debe retornar el numero -1. Si el proceso se pudo hacer, se debe devolver el numero 1. Por ejemplo si el contenido de a y b es: a) a -b -c - x -y -z - \0

b) 1 - 4 - b - z - \0

y la mxima capacidad de b es n=20, se debe devolver numero 1 y el arreglo b queda con los siguientes datos : b) 1 - 4 - b - z - a - b - c- x -y - z- \0 el arreglo a en ningn caso debe sufrir ninguna modificacin 3) Elaborar un programa que lea 9 numeros y los cargue un una matriz de 3 filas y 3 columnas. El programa debe calcular la trasnpuesta de la matriz leida. Se debe imprimir la transpuesta. Los datos se informan por columnas, por ejemplo si los datos son: 4,5,1,3,8,2,1,8,7 La matriz debe quedar cargada asi: 4 5 1 3 8 2 1 8 7

Propongo esta serie de ejercicios inventados al momento: Ejercicios matematicos Ejercicio n1: - Calcular la letra del DNI a partir de un numero introducido Algoritmo para sacar la letra del DNI Ejercicio n 2: - A partir del algoritmo del ejercicio anterior, crear numeros aleatorios validos para una letra del DNI previamente introducida. Ejercicio n 3:

- Crear una aplicacion que te pida un ao y verifique si el ao esbisiestoo no. Ejercicio n 4: - Crear una aplicacion que pida un numero y haga lasuccecin de Fibonacci. Ejercicio n 5: - Crear uina aplicacion que pida un numero de filas y respecto a estas, dibuje un triangulo como el siguiente: * *** ***** ******* ********* Ejercicio n 6: - Crear una alpicacion que pida un numero y lo devuelva en letras, por ejemplo: Numero introducido: 356 Resultado: trescientos cincuenta y seis Ejercicios con archivos: Ejercicio n 7: - Crear una funcion para hacer un diccionario de fuerza bruta de 4 filas y lo guarde todo en un fichero. Ejemplo de fuerza bruta aaaa aaab aaac aaad aaae .. .. .. zzzy zzzz ejercicio n 8: - Crear una funcion la cual se le introduzca el nombre de un archivo de texto y lo guarde, palabra por palabra, por ejemplo: Archivo fuente: Esto son ejercicios para aprender a programar en C# Archivo resultado: Esto son ejercicios para aprender a programar en C# Texto a ordenar: Leonardo de Pisa o Leonardo Pisano o Leonardo Bigollo, tambin llamado Fibonacci, fue un matemtico italiano, famoso por la invencin de la sucesin de Fibonacci, surgida como consecuencia del estudio del crecimiento de las poblaciones de conejos, y por su papel en la popularizacin del sistema de numeracin posicional en base 10 en Europa. Ejercicio n 9: - Crear una funcion la cual, a partir del Archivo resutlado del anterior ejercicio, lo ordene alfabeticamente y lo deje del mismo formato que el Archivo resultado (es decir, linea a linea). Creo que ya es suficiente, a medida que vaya apsando el tiempo, si nadie lo postea, posteare yo mismo las soluciones (estos ejercicios son facilitos, es lo unico que se me venia a la cabeza).

Ejercicio 1: Escribe un programa que calcule la letra del NIF a partir del nmero del DNI. La letra se obtiene calculando el resto de la divisin del nmero del DNI por 23. A cada resultado le corresponde una letra: 0=T; 1=R; 2=W; 3=A; 4=G; 5=M; 6=Y; 7=F; 8=P; 9=D; 10=X; 11=B; 12=N; 13=J; 14=Z; 15=S; 16=Q; 17=V; 18=H; 19=L; 20=C; 21=K; 22=E. Ejemplo: Dime tu DNI: 19901130 Tu NIF es: 19901130 - N

Ejercicio 2: Escribe un programa que convierta nmeros inferiores a 5000 escritos con cifras rabes en nmeros escritos con nmeros romanos. El valor de los diferentes nmeros romanos es el siguiente: I=1, V=5, X=10, L=50, C=100, D=500, M=1000. Para hacer ms fcil el ejercicio, puedes utilizar la notacin romana antigua, en que poda haber hasta cuatro smbolos iguales seguidos. Ejemplo: Dime un nmero: 3799 En nmeros romanos, 3799 se escribe MMMDCCLXXXXVIIII Ejercicio 3: Escribe un programa que pida dos aos y calcule el nmero de aos bisiestos que hay entre esos dos aos (incluyendo los dos aos) y el nmero de das total entre esos dos aos (incluyendo los dos aos). Ejemplo: Dime un ao: 1800 Dime otro ao: 1900 Entre 1800 y 1900 (ambos incluidos) hubo 24 aos bisiestos y en total 36889 das.

Ejercicio 4: Escribe un programa que te permita jugar a una versin simplificada del juego Master Mind. El juego consistir en adivinar una cadena de nmeros distintos. Al principio, el programa debe pedir la longitud de la cadena (de 2 a 9 cifras). Despus el programa debe ir pidiendo que intentes adivinar la cadena de nmeros. En cada intento, el programa informar de cuntos nmeros han sido acertados (el programa considerar que se ha acertado un nmero si coincide el valor y la posicin). Ejemplo: Dime la longitud de la cadena: 4 Intenta adivinar la cadena: 1234 Con 1234 has adivinado 1 valores. Intenta adivinar la cadena: 1243 Con 1243 has adivinado 0 valores. Intenta adivinar la cadena: 1432 Con 1432 has adivinado 2 valores. Intenta adivinar la cadena: 2431 Con 2431 has adivinado 4 valores. Felicidades

Ejercicio 5: Escribe un programa que sea capaz de jugar al Master Mind con las reglas del ejercicio anterior. Al principio, el programa debe pedir la longitud de la cadena (de 2 a 9 cifras). Despus, el programa debe ir intentando adivinar la cadena de nmeros. Ejemplo: Dime la longitud de la cadena: 4 Piensa una cadena de 4 cifras distintas. Es 2431 ? Dime cuntas cifras he acertado: 1 Es 1324 ? Dime cuntas cifras he acertado: 2 Es 4321 ? Dime cuntas cifras he acertado: 0 Es 1234 ? Dime cuntas cifras he acertado: 4 Calculadoar aritmtica -> Generador de nmeros de Fibonacci -> Generador de nmeros de lotera aleatrios -> Averiguar si un nmero es capicua o no. -> Calculos de: TBN, TBM, y reas de circulos -> Operaciones aritmticas con nmeros en coma flotante

1. Calcular la suma de los valores del intervalo [1 20], para cada operacin de sumatoria parcial determine. a. Si la misma es un nmero primo.

b. Factorial de la suma parcial. c. Sumatorias parciales iniciadas en tres. d. Una vez obtenida la sumatoria total, invierta el mismo y determine si es par o impar. 2. El dueo de una empresa desea planificar las decisiones financieras que tomara en el siguiente ao. La manera de planificarlas depende de lo siguiente: Si actualmente su capital se encuentra con saldo negativo, pedir un prstamo bancario para que su nuevo saldo sea de Bs. 10.000. Si su capital tiene actualmente un saldo positivo pedir un prstamo bancario para tener un nuevo saldo de Bs. 20.000, pero si su capital tiene actualmente un saldo superior a los Bs. 20.000 no pedir ningn prstamo. Posteriormente repartir su presupuesto de la siguiente manera: Bs. 5.000 para equipo de cmputo. Bs. 2.000 para mobiliario. y el resto la mitad ser para la compra de insumos y la otra para otorgar incentivos al personal. Desplegar que cantidades se destinaran para la compra de insumos e incentivos al personal y, en caso de que fuera necesario, a cuanto ascendera la cantidad que se pedira al banco. 3. Desarrolle un programa que calcule e imprima el pago de 43 trabajadores que laboran en la Compaa GACMAN. Los datos que se leern sern los siguientes: Las horas trabajadas. El sueldo por hora. El tipo de trabajador (obrero o empleado). Para calcular los pagos considerar lo siguiente: Los obreros pagan 10 % de impuesto Los empleados pagan 10 % de impuesto. Los trabajadores (obreros y empleados) que reciban un pago menor de Bs. 1.000 no pagan impuesto. Al final se desea: Total a pagar a cada obrero y empleado. Total pagado a obreros y empleados. Total de impuesto pagado. Total de impuesto pagado por los obreros y por empleados. Cantidad de trabajadores que no pagan impuesto.

* Algoritmo que te dice si una palabra es palindromo */ #include <stdio.h> #include <stdlib.h> #include <string.h> #define ES_PALIN printf("\n\nEs palindromo\n\n"); #define NO_PALIN printf("\n\nNo es palindromo\n\n"); #define FALSE 0 #define TRUE !FALSE typedefintBool; voides_palindromo(char*a) { Bool b=TRUE; intultPos=strlen(a)-1; inti; for(i=0;i<strlen(a);i++,ultPos--) { if(a[i]!=a[ultPos]) { b=FALSE; break; } } if(b)ES_PALIN elseNO_PALIN; } intmain() { char*a=(char*)calloc(20,sizeof(char)); printf("Palabra: ");scanf("%s",a); es_palindromo(a); free(a);a=NULL; system("pause"); return0;

Osea, ingresar un entero (el orden de la matriz), y que el programa devuelva la matriz 'espiral' de dicho orden. Alguna idea para generar dicha matriz?

public static void llenarmatrizcaracol(int mat[][],int n,int m) { int fil,col,aux,cont,k; //Nos creamos variables de tipo entero cont=1; //Inicializamos un contador for(k=0;k<m;k++) { col=k; for(fil=k;fil<=(m-1-k);fil++) { mat[fil][col]=cont; cont++; } fil=m-1-k; for(col=k+1;col<=n-1-k;col++) { mat[fil][col]=cont; cont++; } col=n-1-k; for(fil=m-2-k;fil>=k;fil--) { mat[fil][col]=cont; cont++; } fil=k; for(col=n-2-k;col>=k+1;col--) { mat[fil][col]=cont; cont++; } } return; }

Se desea disear un sistema de reconocimiento de imgenes para un satlite. El software asociado debe realizar distintos tipos de operaciones con imgenes almacenadas en matrices de m x n elementos. Cada punto de la imagen est representado por un color codificado mediante un entero en el rango 0-255.

y y y y

Disear un subalgoritmo que devuelva el valor ms bajo de la imagen. Disear un subalgoritmo que cree un vector con todos los colores utilizados en la imagen y otro vector con las veces que ha aparecido dicho color. Disear un algoritmo al que se le de una imagen y le sume el valor ms bajo (usar la funcin del primer apartado) a todos los elementos de la misma, excepto a aquellos que estn en el borde. Disear un subalgoritmo que lea una imagen y muestre en pantalla las coordenadas de aquellos puntos que, no siendo puntos del borde, tienen un color por debajo de la media.

Hacer un men en el programa principal con las opciones que se han indicado y llamar a los procedimientos a partir de ese men. Adems este men se podr ejecutar un nmero ilimitado de veces (hasta que el usuario introduzca 0). Adems deberemos implementar las siguientes funciones:

y y

Inicializar matriz, dado un nmero de filas y columnas (habr un Mximo de filas y columnas que ser constante). Mostrar matriz.

(Estos dos mdulos tambin pueden inclurse en el men).

/* Ejercicio 104 Escribir un programa que solicite un ao e indique si es bisiesto o no Un ao es bisiesto si es mltiplo de 4 excluyendo aquellos que son mltiplo de 100 y no de 400. - Los aos exactamente divisibles entre 4 son aos bisiestos. - Los aos exactamente divisibles entre 100 no son aos bisiestos. - Los aos exactamente divisibles entre 400 s son aos bisiestos. */

Realizar un programa en pascal ISO-10.206 que realice una estadstica, una eliminacin de palabras repetidas, un cifrado y descifrado de un texto ledo desde el fichero texto.txt Estadstica. Por cada lnea del texto almacenar en el fichero llamado informacion un registro cuyos campos indiquen: Primera palabra en la lnea. Nmero absoluto de lnea. Nmero de pgina donde est la lnea. Nmero de palabras en la lnea. ltima palabra en la lnea. Eliminacin de palabras repetidas. Guardar en el fichero sinrepetidas.txt el texto original sin palabras repetidas, dejando la primera ocurrencia. Cifrado. Leer el fichero sinrepetidas.txt. Cifrarlo mediante el mtodo de sustitucin simple (utilizar como alfabeto del criptosistema el cdigo ASCII). El resultado almacenarlo en un fichero de texto llamado cifrado.txt Descifrado. Leer cifrado.txt y almacenar el cdigo una vez descifrado en un fichero llamado descifrado.txt El programa debe tener un men donde el usuario pueda: 1. consultar la estadstica almacenada en el fichero informacion. 2. de las palabras que aparecen en texto.txt : a. verlas ordenadas alfabticamente b. conocer el nmero de ocurrencias de una palabra. 3. obtener por pantalla el cifrado de cualquier lnea de texto.txt

Dadas tres cadenas de caracteres, dos sumandos y la tercera que representa el resultado de dicha suma, hacer un programa que reciba estas tres cadenas y encuentre los valores para cada una de las letras de las cadenas para que la suma sea correcta. Es importante anotar que las letras solamente pueden tomar valores entre 0 y 9 y que no puede haber dos letras con el mismo valor. Tambien es necesario tener en cuenta que existe la posibilidad de que al sumar dos digitos, estos generen un acarreo. Por lo tanto a cada par de letras sumadas (menos al primer par) debe sumarseles 0 o 1 dependiendo de si existe o no acarreo. Ejemplo: C4 C3 C2 C1 S E N D M O R E ____________ M O N E Y El programa debe mostrar como resultado, los valores para cada letra, de tal manera que los resultados de la suma sean correctos. Para el ejemplo los resultados serian: C1=1, C2=1, C3=0, C4=1, M=1, S=9, O=0, E=5, N=6, R=8, D=7, Y=2

3.algoritmo que lea un numero entero positivo y determine el numero de digitos decimales necesarios para la representacion de dicho valor.

*Escribir un programa que permita agregar n enteros a una lista de nmeros aceptada por teclado. El programa pregunta si debe agregar al principio, al final o en el medio y agrega el elemento a la lista.*/

Citar Acceso a ficheros

Ejercicio 122 Escribir un programa que solicite palabras y las agrege a un fichero llamado c:\diccionario de forma que luego se puedan consultar las palabras una a una

Vale, lo q yo he hecho es un programa que pide al usuario la longitud mnima y maxima de la contrasea y crea todas las palabras posibles. Ejemplo: min=1, max=2 pues crea un archivo en el que guarda en cada linea todas las palabras posibles desde la cadena a hasta la zz de la forma: Citar a b c ... ab ac ad ... y as hasta zz

Crear un programa en C que despliegue el cuadro latino dado un numero "n". Definicin Un cuadro latino es un arreglo de "n" smbolos en "n2"celdas arregladas en un cuadrado de filas y columnas, tal que todo smbolo aparece una sola vez en cada fila y en cada columna. El trmino "n" se conoce como el orden del cuadro latino. Pos pa entenderlo mejor: si n= 3 el cuadro quedaria asi: 1 2 3 3 1 2 2 3 1 Esta en funcion de las diagonales : para n 1)paso 1 1 ... 1 2)paso 1 2 1 2 3) 1 2 1 3 2 3 ->arrancas de aca 3 2 ->obs arrancas por aca 3 ... ... 3 2 1 ->n-esima posicion ->n-esima posicion

2->obs arrancas por aca ... 2 1

->n-esima posicion

Te das cuenta como colocarlos...de hehco que los pones en un arreglo. Si deseas solo colocarlos...creo q puedes deducir la ley de formacion(no esta dificil eh) ayuda: 1 n n-1 n-2 .... 2 pa ponerle limites "n" debe ser mayor de 1 (obvio) y menor de 21 para que no salga tan grusea la matriz #include<stdio.h> #include<stdlib.h> #include<string.h> #include<conio.h> void main() { clrscr(); int c,x,y; int a,a1,a2,a3; int b[20][20]={0}; char respuesta[20]; char s='A'; while (s!='s' && s!='S') {

textcolor(LIGHTGRAY); gotoxy(2,2);cprintf("Introduzca un nmero para crear el cuadrado latino"); gotoxy(2,3);cprintf("Nmero (2-19):"); fflush(stdin); scanf("%[^\n]",respuesta); a=atoi(respuesta); a1=strlen(respuesta); a2=0; for (x=0;x<a1;x++) { for (y=48;y<=57;y++) { if (respuesta

==char(y))

a2++; } } while ((a2!=a1) || (a>19 || a<=1) || respuesta[0]=='0') { gotoxy(2,5);cprintf("EL DATO INTRODUCIDO ES INCORRECTO"); gotoxy(2,6);cprintf("EL DATO TIENE QUE SER UN NMERO NATURAL MAYOR QUE 1 Y MENOR QUE 20"); gotoxy(2,7);cprintf("PRESIONE ENTER"); getch(); clrscr(); textcolor(LIGHTGRAY); gotoxy(2,2);cprintf("Introduzca un nmero para crear el cuadrado latino"); gotoxy(2,3);cprintf("Nmero (2-19):"); fflush(stdin); scanf("%[^\n]",respuesta); a=atoi(respuesta); a1=strlen(respuesta); a2=0; for (x=0;x<a1;x++) { for (y=48;y<=57;y++) { if (respuesta


a2++; } }

==char(y))

} int z=2; for(x=0;x<a;x++) { z--; for(y=0;y<a;y++) { if (z>a) z=1; b


z++; }

[y]=z;

} c=a*4/2; int d=a/2; clrscr(); textcolor(GREEN); gotoxy(24,10-d); cprintf(" CUADRADO LATINO DE ORDEN \"n\""); gotoxy(24,11-d); cprintf(" n = %d ",a); for(x=0;x<a;x++) { textcolor(LIGHTRED);

if (x==0) { gotoxy(40-c,12-d+x); cprintf(""); } if (x==a-1) { gotoxy(40-c,14-d+x); cprintf(""); } gotoxy(40-c,13-d+x); cprintf(""); for( y=0;y<a;y++) { textcolor(LIGHTBLUE); cprintf("%3d ",b

[y]);

} textcolor(LIGHTRED); cprintf(" "); if (x==0) { gotoxy(40+c,12-d+x); cprintf(" "); } if (x==a-1) { gotoxy(40+c,14-d+x); cprintf(" "); } } textcolor(YELLOW); gotoxy(3,24); cprintf("CONTINUAR = ENTER s=getch(); textcolor(LIGHTGRAY); clrscr(); } }

SALIDA = S");

Este es un ejercicio de C,bastante simple k puede tener sus utilidades. Consiste en comprobar k una codificacion de tarjeta de credito es valida,y si nos es valida t dice k numero tienes k cambiarle para hacerla valida,no sirev para sacar dinero por supuesto,pero hay muchas paginas k t piden el numero de tarjeta solo para comprobar k eres mayor de edad,asi k con este programita n tendras k meter tu numero de cuenta. la codificacion es la siguiente: El numero se compone de tres partes principales: Los 4 primeros digitos componen el identificativo del banco que cede la tarjeta.hay un numero diferente para cada banco(esto se busca en internet). El 5 digito es el tipo de tarjeta e indica que entidad financiera gestiona esta tarjeta.Las mas importantes son Visa(4),american Expres(3),Master card(5),Discover(6). los 10 digitos siguientes componen el numero de usuario e identifican a este de manera unica. Digito de control es el ultimo numero y se obtiene aplicando un algoritmo al resto del numero. El formato es el siguiente 1111 2333 3333 3334 algoritmo de codificacion: Se realiza en tres pasos. Si tenemos el numero de la tarjeta 4539 4512 0398 7356 y keremos comprobar k es valido: 1.Multiplicamos por dos los numeros de las posiciones imapres(4-3-4-1-0-9-7-5) y dejarlos con un solo digito. 4*2=8 3*2=6 4*2=81*2=2 0*2=0 9*2=18-->1+8=9 7*2=14--->1+4=5 5*2=10--->1+0=1

Vectores e Funes e Procedimentos 1. Uma empresa de viagens possui vrios autocarros que efectuam percursos de longa distncia. Cada autocarro pode transportar at 50 passageiros, os quais apenas podem entrar no ponto de partida do autocarro mas podem ter vrios destinos (1,2,3,4), pois so efectuadas vrias paragens at ser atingido o destino final (4). Pretende-se um programa que auxilie a empresa a determinar a receita proporcionada pelos bilhetes dos passageiros transportados por um dado autocarro, bem como a percentagem de passageiros que vo desde a origem at ao destino final (4). Para a resoluo do problema considere a seguinte estrutura de dados: var autocarro:array[1..50] of integer; onde so armazenados os destinos de cada um dos passageiros. a) Elabore uma procedimento que obtenha o numero de passageiros transportados por um dado autocarro e que efectue a leitura do destino (1, 2 ,3 ou 4) de cada um dos passageiros; b) Elabore uma funo que obtenha o destino de um passageiro e que calcule o preo do bilhete que seguinte tabela: Destino 1 2,55 2 3,50 3 4,50 4 5,00 Preo ele deve pagar, de acordo com a

c) Um procedimento que mostra o nmero de passageiros transportados e a informao referente aos seus destinos. d) Elabore uma funo que calcule e devolva a percentagem de passageiros que vai at ao destino final. e) Utilizando as funes e os procedimentos elaborados nas alneas anteriores, elabore um programa que obtenha o nmero de passageiros que o autocarro vai transportar, calcule a receita total e a percentagem de passageiros que vo at ao destino final. Dever ser tambm indicado no monitor os lugares ocupados pelos passageiros que vo sair no primeiro destino (1).

algoritmo que al ingresar un numero por pantalla,al numero ya ingresado le suma su numero invertido,y palindrome(que se pueda leer de igual forma de izquieda a derecha . eje:

este resultado tiene q ser

1234=4321 , si el resultado es palindrome imprimir por pantalla 1paso, siino ver en cuantos pasos es posible llegar a un numero palindrome ,esto realizarlo en cualquier base, dde la 10 hasta la base 2. cualquie duda escribanme. yo lo hice pero no se porq no me compilo. me salia en pantalla pow:domain #include<stdio.h> #include<math.h> int funinv(int); int funsuma(int); int funacum(int); int basex; int funcionbasex(int,int); int funbase(int,int); main() { unsigned long int n,boolean,pasos,v,band,basex,num;

do{ printf("ingrese un numero:"); scanf("%d",&n); }while(n<0); num=n; for(basex=9;basex>=2;basex--) { band=1; while(num!=0) {

v=num%10; num=num/10; if(v>=basex) { printf("base %d: ? pasos",basex); band=0; } } /*printf("band:%d",band);*/ /*hasta aqui compila bien*/ while(band==1) { pasos=0;

do{ n=funacum(n); printf("funacumda:%d",n); boolean=funsuma(n); pasos=pasos+1; }while(boolean==0);

printf("Base %d:%d pasos",basex,pasos); } } } /*------------------------------------------------------------------------*/ int funinv(int n) { int inv,num1,r; num1=n; /*FUNCION PARA INVERTIR UN NUMERO*/

if(n>=10) { inv=0; while(n!=0) { r=n%10; n=n/10; inv=(r+(inv*10)); } }

if((num1>=0)&&(num1<10)) { inv=num1;

} return(inv); } /*---------------------------------------------------------------------------*/ int funsuma(int suma) { int flag; /*VERIFICACION DEL NUMERO PALINDROME*/

if(suma==funinv(suma)) { flag=1; } else if(suma!=funinv(suma)) { flag=0; } return(flag); } /*-------------------------------------------------------------------*/ int funacum(int n) { int adicion,a,sumabase; a=funinv(n); sumabase=(funbase(n,basex)+funbase(a,basex)); adicion=funcionbasex(sumabase,basex); return(adicion); } /*------------------------------------------------------------------------*/ /*FUNCION PARA PASAR DE BASE 10 A BASE X*/ int funcionbasex(int n,int basex) { int inv,num1,h; num1=n; if(n>=10) { inv=0; while(n!=0) { h=n%basex; n=n/basex; inv=h+inv*10; } } if((num1>=0)&&(num1<10)) { inv=num1; } inv=funinv(inv); return(inv); /*SUMAS SUCESIVAS PARA VER LA COMPROBACION DE LOS PASOS*/

} /*------------------------------------------------------------------------------*/ /*FUNCION PARA PASAR DE BASE x A BASE 10*/ int funbase(int q,int base1) { int cont, i,sum,T[100],a; cont=0; while(q!=0) { T[cont]=q%10; q=q/10; cont=cont+1; } sum=0; for(i=0;i<=cont-1;i++) { a=pow(base1,i); sum=(sum+(T*a)); } return(sum); }

http://foro.elhacker.net/ejercicios/ejercicio_de_c-t40275.0.html#ixzz1Q6HNvaeH

S-ar putea să vă placă și