ternas en programacion en c, me dice este problema

Iniciado por max123, 11 Mayo 2019, 14:51 PM

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

max123

/*10. Una terna es hermosa si se cumple que a < b < c y se cumple que b - a = c - b = d. Dados N números
crecientes y el valor d, determine la cantidad de ternas hermosas que hay en la secuencia.
Por ejemplo: la secuencia 2, 2, 3, 4, 5 y d=1. Hay 3 ternas hermosas
(2, 3, 4) ? 3 - 2 = 4 - 3 = 1
(2, 3, 4) ? 3 - 2 = 4 - 3 = 1
(3, 4, 5) ? 4 - 3 = 5 - 4 = 1
*/
no se como comenzar a plantearlo
#include<stdio.h>


int ingresar_orden();
void ingresar_vector(int n, int  vector[]);
void mostrar_vector(int n, int  vector[]);


int main(int argc, char *argv[]){
   
   int vector[100];
   int n;
   n=ingresar_orden();
   ingresar_vector(n,vector);
   mostrar_vector(n,vector);
   
   
   return 0;
}

/*------------------------------------------------------------------------------------------------------------------------*/
/*               FUNCION INGRESAR ORDEN DEL VECTOR
/*------------------------------------------------------------------------------------------------------------------------*/

int ingresar_orden(){
   
   int n;
   
   do{
        printf("\t\tINGRESAR EL ORDEN  :");
        scanf("%i",&n);
    }while(n<0);
   
   return n;
}


/*------------------------------------------------------------------------------------------------------------------------*/
/*               FUNCION INGRESAR VECTORES
/*------------------------------------------------------------------------------------------------------------------------*/

void ingresar_vector(int n, int  vector[]){
   int i;
   printf("\t\tINGRESAR LOS LOS ELEMNTOS  \n");
   for(i=0;i<n;i++){
      /*se utiliza i, para recorrer desde el casillero 0 hasta N-1*/
      fgetc(stdin);/*Limpia el buffer producido por el scanf anterior*/
      printf("\t\t\tINGRESAR EL ELEMENTO  PARA LA POSICION [%i]: ",i);
      scanf("%i",&vector);
      /*ubica el numero ingresado en el casillero i*/
   }
return;
}

/*------------------------------------------------------------------------------------------------------------------------*/
/*               FUNCION MOSTRAR VECTOR
/*------------------------------------------------------------------------------------------------------------------------*/

/*funcion para mostrar los vectores ingresados */
void mostrar_vector(int n, int  vector[]){
   int i;
   printf("\t\tLOS TIPOS DE ELEMENTOS INGRESADOS  SON :\n");
   printf("\n\n\t\tV = ( ");
   for(i=0;i<n;i++){
      /*se utiliza i, para recorrer desde el casillero 0 hasta N-1*/
      if(i<n-1){
         printf("%i, ",vector);   
      }
      else{
         printf("%i ",vector);   /*muestra el número ubicado en el casillero i*/
      }
      
   }
   printf(")\n\n");
return;
}

K-YreX

Si conoces tanto la secuencia como el valor d, necesitas tres bucles cada uno para ir avanzando por el array a un ritmo distinto e ir comprobando que la distancia entre los elementos a los que apunta cada índice de cada bucle es igual a d.
Te dejo que lo intentes programar y si tienes más dudas pon tus avances para ayudarte.

PD: Para la próxima pon tus códigos entre etiquetas de código GeSHi y hay un subforo de C/C++ por lo que puede que muevan este tema.
PD 2: Las funciones que no retornan nada (void) no necesitan llevar un <return> al final.
Código (cpp) [Seleccionar]

cout << "Todos tenemos un defecto, un error en nuestro código" << endl;