Ejercicio de en C

Iniciado por menaxd, 3 Junio 2017, 23:21 PM

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

menaxd

Hola comunidad, me han dado estos 2 ejercicios y no puedo resolverlos, por mas que trato el primero me sale pero de un valor dado , pero no se como calcularlo como el orden que esta pidiendo y del segundo me sale tambien, pero me piden en funciones y eso me complica si alguien me podrias aydudar se lo agradeceria demasiado. Buenas tardes

1. Para un vector x, se puede calcular su vector de frecuencias que contiene la frecuencia de cada elemento, es decir, cuantas veces se encuentra cada elemento en el vector x. Escriba un programa en C que encuentre el vector de frecuencias para un vector de 10 elementos.
Ejplo.-
Para el vector x = [ 8, 3, 6, 8, 3, 5, 5, 8, 8, 2 ],
el vector de frecuencias será: [ 4, 2, 1, 4, 2, 2, 2, 4, 4, 1 ]

2. Dado un arreglo A conteniendo los siguientes elementos almacenados en ese orden:
{ 22, -5, 67, -8, 45, 32, 101, -99, 73, 10 }
Escribir una función para cada una de las siguientes operaciones:
a) Determinar cuál es el mayor de los elementos
b) Ordenar el arreglo de menor a mayor por el método de selección
c) Ordenar el arreglo de mayor a menor por el método de intercambio (burbuja)
d) Dado un nuevo elemento n, insertarlo en el arreglo ordenado en la posición adecuada
A continuación

menaxd

Aca hay un fichero en C++ pero me pide en C

#include <stdio.h>
#include <iostream>
#define MAX 13
int main()
{
int vector[MAX] = {0,0,2,3,5,5,5,6,8,9,10,10,11};
int contador[MAX] = {};
int rep[MAX] = {};
int total[MAX] = {};


int i,j,k=0;
for(i=0;i<MAX;i++)
{
for(j=0;j<MAX;j++)
{

if (vector==vector[j])

contador++;
}
printf("El numero %d se repite %d veces\n",vector,contador);
}

for(i=0;i<MAX;i++)
{
if(vector != vector[i-1])
{
printf("%d,%d\n",vector,contador);
rep[k] = vector;
total[k] = contador;
k++;
}
}
//
printf("\n\n");
for(i=0;i<k;i++)
{
printf("el numero %d, se repite %d veces\n",rep,total);
}
printf("\n");
system("PAUSE");
}


menaxd

Acabo de hacer la 2 pero no me sale la alternativa d). Una ayuda un favor
#include <stdio.h>

int main(){

int vector[10] = {22, -5, 67, -8, 45, 32, 101, -99, 73, 10};
int i,j,min,pos,aux;
int mayor=0;

for (i=0; i<10; i++){
    if (vector[i]> mayor){
    mayor=vector[i];
    }
}
printf("El mayor valor del vector es : %d\n", mayor);




for(i=0;i<10;i++){
min = i;
for(j=i+1;j<10;j++){
if(vector[j] < vector[min]){
min = j;
}
  }

aux = vector[i];
vector[i] = vector[min];
vector[min] = aux;

}
        printf("De menor a mayor: " );
               
for(i=0;i<10;i++){
printf(" %i ", vector[i]);
}
                printf("\n");               
               


for(i=0;i<10;i++){
for(j=0;j<9;j++){
if(vector[j] > vector[j]);
                                aux = vector[j];
vector[j] = vector[j+1];
vector[j+1] = aux;
}
}


        printf("De mayor a menor : ");

for(i=9;i>=0;i--){
printf("%i ", vector[i]);
}
       
       

        return 0;

}


Y en la pregunta 1 tambien la hice pero no como me estan pidiendo alguien sabe que puedo modificar? Gracias de antemano.
#include <stdio.h>

int main()

{

    int numero[10],size=10,a=0,b=0,contador[10]={};
    printf("Los numeros del vector son:\n");
    for (a=0;a<size;a++)
    {
     printf("Numero %i: ",a+1);
     scanf("%i",&numero[a]);     
     }
    printf("La frecuencia de cada numero es:\n");
    for (a=0;a<size;a++)
    {
     for (b=0;b<size;b++)
     {
      if (numero[a]==numero[b])
      contador[a]++;
      }
     printf("%i %i\n",numero[a],contador[a]);
     }
return 0;
}