Foro de elhacker.net

Programación => Ejercicios => Mensaje iniciado por: Darvein en 26 Febrero 2008, 18:40 pm



Título: Ejercicios resueltos C++ [programacion estructurada]
Publicado por: Darvein en 26 Febrero 2008, 18:40 pm
>> ARITMETICA <<

Mostrar los multiplos de 3 comprendidos entre los numeros 1 y 20
Código:
#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;
}

Hallar A+B-C+100
Código:
#include <stdio.h>
#include <conio.h.>
int main ()
{
     int A, B, C;
     printf("Inserte valor para A: "); scanf("%d",&A);
     printf("Inserte valor para B: "); scanf("%d",&B);
     printf("Inserte valor para C: "); scanf("%d",&C);
     printf("\n%d + %d - %d + 100 = %d",A, B, C, (A+B+C-100));
     getch();
}

Obtener (a-b)(a+b)
Código:
#include <stdio.h>
#include <conio.h>
int main ()
{
    int a, b;
    printf("Inserte valor a: "); scanf("%d",&a);
    printf("Inserte valor b: "); scanf("%d",&b);
    printf("(%d-%d) (%d+%d) = %d",a, b, a, b,((a-b)*(a+b)));
    getch();
}


Leer un numero de 3 digitos y sumarlos
Código:
#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

Código:
#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();
}

Dado un numero verificar si es positivo, negativo o nulo
Código:
#include <stdio.h>
#include <conio.h>
int main ()
{
 int numero;
 printf("Inserte un numero: ");
 scanf("%d",&numero);
 if(numero==0)
  printf("El numero %d es NULO",numero);
 else
 {
  if(numero<0)
    printf("El numero %d es NEGATIVO",numero);
  else
    printf("El numero %d es POSITIVO",numero);
 }
 getch();
}

Dados seis numeros enteros determinar, el menor de ellos
Código:
#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();
}





Título: Re: Ejercicios resueltos C++ [programacion estructurada]
Publicado por: Darvein en 26 Febrero 2008, 18:41 pm
>> SERIES <<

hallar la sumatoria de:   2! + 4! + 6! + 8! + ...
Código:
#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
Código:
#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();
}

Generar 5,10,15,20,25,30,35....n
Código:
#include<stdio.h>
#include<conio.h>
int main ()
{
 int n, c=1, serie=5;
 printf("Cantidad de terminos: ");
 scanf("%d",&n);
 while(c<=n)
 {
  printf("%d,",serie);
  serie+=5; c++;
 }
 getch();
}

Si n=7 generar 7,6,5,4,3,2,1
Código:
#include<stdio.h>
#include<conio.h>
int main ()
{
 int n, c=1;
 printf("Cantidad de terminos: ");
 scanf("%d",&n);
 int serie=n;
 while(c<=n)
 {
  printf("%d,",serie);
  serie--; c++;
 }
 getch();
}


Título: Re: Ejercicios resueltos C++ [programacion estructurada]
Publicado por: Darvein en 26 Febrero 2008, 18:42 pm
>> VECTORES <<

/*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]
*/

Código:
#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)*/
Código:
#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();
}


Título: Re: Ejercicios resueltos C++ [programacion estructurada]
Publicado por: Darvein en 26 Febrero 2008, 18:44 pm
>> MATRICES <<

Generar la matriz:
    [01][02][03][04]
    [08][07][06][05]
    [09][10][11][12]
Código:
#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]
Código:
#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
Código:
#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 A: "); scanf("%d",&fa);
 printf ("Insert columnas de A: "); scanf("%d",&ca);
 printf ("Insert filas de B: "); scanf("%d",&fb);
 printf ("Insert columnas de 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*/
Código:
#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 = 1 ; i <= d / 2 ; i++)
 {
  int aux = M [i] [i];
  M [i] [i] = M [d] [d];
  M [d] [d] = aux;
  fin--;
 }
}

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*/
Código:
#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 = 1 ; i <= d / 2 ; i++)
 {
  int aux = M [i] [d];
  M [i] [d] = M [d] [i];
  M [d] [i] = aux;
  fin--;
 }
}

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*/
Código:
#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 R: ");
 scanf("%d",&fr);
 printf("Inserte columnas de R: ");
 scanf("%d",&cr);
 printf("Inserte filas de S: ");
 scanf("%d",&fs);
 printf("Inserte columnas de S: ");
 scanf("%d",&cs);
 
 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*/
Código:
#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 */
Código:
#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" */
Código:
#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();
}


Título: Re: Ejercicios resueltos C++ [programacion estructurada]
Publicado por: Darvein en 26 Febrero 2008, 18:45 pm
>> MATRICES y VECTORES<<

/* Dada una matris y un vector, contar la cantidad de numeros primos de ambos */
Código:
#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*/

Código:
#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  */

Código:
#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 POR COLUMNAS DE LA MATRIS (vector A): \n");
 vectorA (Z, f, c, A, c);
 mostrarVector (A, c);
 printf ("\n\nSUMA POR FILAS DE LA MATRIS (vector B): \n");
 vectorB (Z, f, c, B, f);
 mostrarVector (B, f);
 getch();
}


Título: Re: Ejercicios resueltos C++ [programacion estructurada]
Publicado por: darkness7977 en 29 Febrero 2008, 00:47 am
hey...que bien y que casualidad recien en estos dias han iniciado la clase de progrmacion estructurada (apenas hoy comenzare a meterle mano al manual y al compilador) gracias por los codigos,me serviran para analizarlos ::) :D


Título: Re: Ejercicios resueltos C++ [programacion estructurada]
Publicado por: Darvein en 29 Febrero 2008, 19:03 pm
Citar
gracias por los codigos,me serviran para analizarlos

Tengo mas, luego los subire tengo sobre recurisividad, matrices, vectores, archivos, cadenas etc. xD

Que bueno saber que esos ejercicios le sirvio a alguien.


Título: Re: Ejercicios resueltos C++ [programacion estructurada]
Publicado por: AxXioma en 29 Febrero 2008, 20:01 pm
Gracias, buen aporte.


Título: Re: Ejercicios resueltos C++ [programacion estructurada]
Publicado por: Sonex en 1 Marzo 2008, 15:04 pm
Buenisimoo, muchas gracias   :)


Título: Re: Ejercicios resueltos C++ [programacion estructurada]
Publicado por: Darvein en 1 Marzo 2008, 20:42 pm
Citar
holas me podrias poner problemas de
prosesos secuenciales
if elfe
while
switch

Todo lo que mencionas estan en los ejercicos.
Aunque falta el switch, pero ya lo pondre :)


Título: Re: Ejercicios resueltos C++ [programacion estructurada]
Publicado por: Darvein en 1 Marzo 2008, 20:47 pm
Volví xD
Aqui tambien hay ejercicios propuestos

http://foro.elhacker.net/ejercicios/ejercicios_en_c-t34911.0.html


Título: Re: Ejercicios resueltos C++ [programacion estructurada]
Publicado por: goditozor en 3 Noviembre 2009, 06:23 am
hola amigo muy buenos ejercicios... tendras algunos de cadenas por alli?


Título: Re: Ejercicios resueltos C++ [programacion estructurada]
Publicado por: jares88 en 24 Enero 2010, 22:29 pm
Hola alguien puede mirar este programa para ver los errores de codificacion que tiene que no soy capaz de solucionar, el error tiene que estar por donde esta señalado.gracias


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

#define MAXPER 100
#define IMPED 1200
#define LIMING 30000
#define DIVIN 120000
#define FIN "XXXX"

/* se define la estructura del registro que mas adelante se utilizara*/
typedef struct
 {
  char nom[10],ape[10];
  float ing;
 }tPersona;

/*se definen los modulos que se van a ulilizar en el modulo principal*/
void recuperarPers(char[],tPersona[],int*);
int leerEntero(int,int);
void aniadirPers(tPersona[],int*,int);
void mostrarPers(tPersona[],int);
void eliminarPers(tPersona[],int*);
void calcImpuestos(tPersona[],int);
void grabarPers(char [],tPersona[],int);


void main()
 {
  tPersona pers[MAXPER];
  int np,opc;
  clrscr();
  /*llamada al modulo recuperarPers*/
  recuperarPers("PERSONAS.DAT",pers,&np);

  do
    {
     printf("1. A¤adir personas\n2. Mostrar personas\n3. Eliminar una persona\n4. Impuestos\n5. Salir\nIntroduce una opci¢n: ");
     /*llamada al modulo leerEntero que devuelve un numero del 1 al 5 que se le asocia a la variable opc*/
     opc=leerEntero(1,5);
     switch(opc)
      {
   case 1:
     {
      /*llamada al modulo aniadirPers*/
      aniadirPers(pers,&np,MAXPER);
      /*llamada al modulo grabarPers*/
      grabarPers("PERSONAS.DAT",pers,np);
     }
     break;
   case 2:
     {
      /*llamada al modulo mostrarPers*/
      mostrarPers(pers,np);
     }
     break;
   case 3:
     {
     /*llamada al modulo eliminarPers*/
      eliminarPers(pers,&np);
      /*llamada al modulo grabarPers*/
      grabarPers("PERSONAS.DAT",pers,np);
     }
     break;
   case 4:
     {
      /*llamada al modulo calcImpuestos*/
      calcImpuestos(pers,np);
     }
     break;
      }
    }
  while(opc!=5);
  getch();
 }
/* cuerpo del modulo recuperarPers(lee el numero de personas y la lista de personas)*/
void recuperarPers(char PERSONA.DAT[],tPersona pers[],int *pnp)
 {
  FILE *fpers;
  /*se abre el archivo para saber si ya hay algo escrito en el*/
  fpers=fopen("PERSONAS.DAT","r");
  if (fpers==NULL)
    {
     *pnp=0;
    }
  else
    {
     /*si no esta vacio el archivo lee el numero de personas y la lista de personas y las lleva al modulo principal*/
     fread(*pnp,sizeof(int),1,fpers);
     fread(pers,sizeof(tPersona),*pnp,fPers);
     fclose(fPers);
    }
 }


/* cuerpo del modulo leerEntero(limita el intervalo de numero que el usuario puede escoger*/
int leerEntero(int MINIMO,int MAXIMO)
 {
  int n;
  printf("\nIntroduce una opci¢n: ");
  scanf("%d",&n);
  while(n<MINIMO||n>MAXIMO)
    {
     printf("\nError, debe estar en el intervalo [%d,%d]: ",MINIMO,MAXIMO);
     scanf("%d",&n);
    }
  /*devuelve "n" al modulo principal*/
  return(n);
 }

#define MAXPER 100
#define FIN "XXXX"
/* se define el modulo que va a ser ulilizado dentro del modulo aniadirPers*/
float leerNoNegativo()
/*cuerpo del modulo aniadirPers(a¤ade personas a la lista)*/
void aniadirPers(tPersona pers[],int *pnp,int MAXPER)
 {
  char apellido[];
  /*solo se podra a¤adir una persona mas si la lista no esta llena*/
  if(*pnp<MAXPER)
    {
     printf("PERSONA %d:",*pnp);
     printf("\nApellido: ");
     /* introducir el apellido a la lista*/
     flushall();
     gets(apellido);
     strupr(apellido);
     /* si el apellido es = a FIN no se a¤ade a la lista y se sale de ella*/
     while(apellido!=FIN && *pnp<=MAXPER)
       {
   /*se le asocia el apellido introducido por el usuario al registro definido anteriormente*/
   pers[*pnp].ape=apellido;
   printf("\nNombre:");
   /*se introduce el nombre*/
   flushall();
   gets(pers[*pnp].nom);
   strupr(pers[*pnp].nom);
   printf("\nIngresos:");
   /*se llama al modulo leerNoNegativo y se asocia a la parte de ingresos del registro*/
   pers[*pnp].ing=leerNoNegativo();
   *pnp=*pnp+1;
   /* te vuelve a pedir otro apellido y empezar el ciclo solo si no se supera el maximo de personas*/
   if(*pnp<MAXPER)
     {
      printf("\nPersona %d:",*pnp);
      printf("\nApellido: ");
      flushall();
      gets(apellido);
      strupr(apellido);
     }
   else
     {
      printf("\nSe ha alcanzado el n£mero m ximo de personas.");
     }
       }
  else
    {
     printf("\nSe ha alcanzado el n£mero m ximo de personas.");
    }
 }
/* cuerpo del modulo leerNoNegativo( lee el numero si es negativo te pide otro asta que sea positivo)*/
float leerNoNegativo()
 {
  float n;
  scanf("%f",&n);
  while(n<0)
    {
     printf("\nError: el n£mero ha de ser mayor o igual que cero.");
     scanf("%f",&n);
    }
  return(n);
 }
/* cuerpo del modulo mostrarPers(muestra por pantalla la lista de personas)*/
void mostrarPers(tPersona pers[],int np)
 {
  int iP;
  clrscr();
  printf("Id.  APELLIDO   NOMBRE     INGRESOS\n===================================");
  for(iP=0;iP<=np-1;iP=iP+1)
    {
     /*muestra por pantalla lo que esta almacenado en el registro*/
     printf("\n  %2d. %11s%11s%f.2",iP+1,pers[iP].ape,pers[iP].nom,pers[iP].ing);
     if((iP+1%20)=0)
       {
   getch();
   clrscr();
       }
    }
 }
/* se define el modulo leerEntero que sera utilizado dentro del modulo eliminarPers*/
int leerEntero(int,int);

/*cuerpo del modulo eliminarPers(sirve para eliminar nombres de la lista y sus datos asociados en el registro)*/
void eliminarPers(tPersona pers[],int *pnp)
 {
  int nOrd,iP;
  printf("\nIntroduce el n£mero de orden de la persona a eliminar (0-cancelar): ");
  nOrd=leerEntero(0,*pnp);
  /* si el nOrd(numero de orden en la lista) es distinto de 0 se elimina el nombre que este en ese numero de orden*/
  if(nOrd!=0)
    {
     for(iP=nOrd;iP<=*pnp,iP=iP+1)
       {
   /*la persona de esa posicion toma el nombre del siguiente y se borra el seleccionado*/
   pers[iP-1]=pers[iP];
       }
     *pnp=*pnp-1;
    }
 }
#define IMPED 1200
#define LIMING 30000
#define DIVIN 120000

/*cuerpo del modulo calcImpuestos(calcula los impuestos que se utilizaran para cada familia)*/
void calcImpuestos(tPersona pers[],int np)
 {
  int iP,fin,nDed;
  float ingFam,ingAj,impFam,porc;
  if(np>0)
    {
     clrscr();
     printf("FAMILIA     IMPUESTOS\n=====================)");
     iP=0;
     do
       {
   /*se igualan las variables a 0*/
   fin=0;
   nDed=0;
   ingFam=0;
   do
     {
      /*si los ingresos de una persona son nulos se a¤ade una deduccion a la familia*/
      if(pers[iP].ing=0)
        {
         nDed=nDed+1;
        }
      /* si tiene algun ingreso se le suma al ingreso familiar*/
      else
        {
         ingFam=ingFam+pers[iP].ing;
        }
      if(iP=np-1)
        {
         /* se iguala a 1 la variable fin si ya no hay mas personas sobre las que calcular los impuestos para salir del bucle*/
         fin=1;
        }
      /* si no es la ultima persnoa se compara el siguiente apellido para ver si es de la misma familia*/
      else
        {
         if(pers[iP].ape!=pers[iP+1].ape
      {
       fin=1;
      }
      /* se pasa al siguiente nombre de la lista*/
      iP=iP+1;
     }
   /*cuando se termina con una familia (fin=1) se procede a hacer los calculos */
   while(fin==1);
   /*ingreso ajustado teniendo en cuenta el numero de deducciones de la familia*/
   ingAj=ingFam-IMPDED*nDed;
   if(ingAj>0)
     {
      /*se comparan los ingresos ajustados con el limite de ingresos para hacer los calculos dependiendo de ello*/
      if(ingAj>LIMING)
        {
         porc=(LIMING/DIVING);
        }
      else
        {
         porc=(ingAj/DIVING);
        }
      impFam=porc*ingAj;
     }
   else
     {
      impFam=0;
     }
       }
     while(iP<=np-1);
    }
 }
/*cuerpo del modulo grabarPers(graba los cambios que se producen)*/
void grabarPers(char nomArch[],tPersona pers [],int np)
 {
  FILE *Fpers;
  /*se abre el archivo en modo escritura*/
  fPers=fopen(nomArch"w");
  /*se guarda el tama¤o y la lista*/
  fwrite(&np,sizeof(int),1,fPers);
  fwrite(pers,sizeof(tPersonas),np,fPers);
  /*se cierra el archivo*/
  fclose(fPers);
 }


Título: Re: Ejercicios resueltos C++ [programacion estructurada]
Publicado por: rvilla777 en 2 Abril 2010, 16:27 pm
Hola tengo una duda en este ejercicio
#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();
}

Para que se usa el %10??, gracias.


Título: Re: Ejercicios resueltos C++ [programacion estructurada]
Publicado por: ^Tifa^ en 5 Abril 2010, 07:49 am
Citar
Para que se usa el %10??, gracias.

Realmente no es %10 sino %  exclusivamente, ese es el operador Modulus en C/C++ sirve para evaluar el residuo de una division (Si el residuo de la division es par pues el resultado es cero, si el residuo de la division es impar pues el resultado es otro numero distinto a cero).

Por lo que, al hacer:

int d1=numero%10;

Lanzaria el residuo final de numero / 10   Si resulta que el residuo es equivalente a un numero par.. lanzara cero, pero si el residuo es equivalente a un numero impar lanzara el resultado o residuo real (cualquier numero diferente a Cero).