-VECTORES:

Fáciles

:  Realiza una función en C que dados los datos de un vector de 50

Elementos calcule la media de los elementos del vector impares y cuyo valor se

Encuentre entre 60 y 230. Realizar el correspondiente programa que llame a la función

Y muestre el resultado:


#include <stdio.H>

void rellenar_vector(int v[]);

int cálculo (int v[]);

int main(){

int v[50];

rellenar_vector(v);

int c=cálculo (v);

printf(“La media de números impares y que se encuentran entre 60 y 230 es: ”, c)

}

int cálculo(int v[]){

int i;

int suma=0, media=0, cont=0;

for (i=1; i<50; i=i+2){

if ( v[i] >=60 && v[i]<=230 ){

suma+= v[i];

cont++;

}}

media=suma/cont;

return media; }

Realiza una función que dado los datos de un vector de 40 elementos

calcule cuántos elementos del vector son divisibles por 5 y mayores que 25. Realizar

el correspondiente programa que llame a la función y muestre el resultado

#include <stdio.H>

void rellena_vector ();

int cálculo ();

int main(){

int r[40]

rellena_vector(r);

int c=cálculo (r);

printf(“Hay %i números divisibles por 5 y mayor que 25”, c); }

int cálculo(int a[]){

int i;

int cont=0;

for(i=0; i<40; i++){

if(a[i] >25 && a[i]%5==0){

cont++;

}}

return cont; } 

Realizar una función en C que dado un vector de números determine

aquel número del vector que se repite más veces y es mayor que 7:

void cálculo (int v[], int n){

int i, cont=0, contM=0, max=0;

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

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

if( v[i] >7 && v[i]=v[j] ){

cont++; } }

if(cont>contM){

max=v[i]

} cont=0; }

printf (“El numero que se repite más veces y es mayor que 7 es: %i” , max); } 

Dado un vector de enteros positivos, diseñar una función en C que

determine cuantos son divisibles al mismo tiempo por 3, 5 y 7:

void divisores (int v[TAM], int n) {

//n-número de elementos que tiene el vector introducido en main

int i;

int cont=0;

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

if (v[i]%3==0 && v[i]%5==0 && v[i]%7==0){

cont++; }}

printf (“Al mismo tiempo se dividen por 3, 5 y 7 %i de números introducidos”, cont); }

Dado un vector de enteros, diseñar una función en C que imprima por

pantalla la suma de los elementos impares positivos y divisibles por 5:

void salida(int v[TAM], int n){

//n-número de elementos que tiene el vector introducido en main

int i;

int suma=0;

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

if (v[i] > 0 && v[i]%5==0 && v[i]%2!=0){

suma += v[i];

}}

printf (“La suma de elementos impares positivos es: %i” , suma); }

Difíciles: Dado un vector de enteros diseñar un método que los ordene de menor a mayor sin utilizar un vector auxiliar:

#include <stdio.H>

void ordenarVector(int vector[], int tamano) {

  for (int i = 0; i < tamano – 1; i++) {

    for (int j = i + 1; j < tamano; j++) {

      if (vector[i] > vector[j]) {

        int aux = vector[i];

        vector[i] = vector[j];

        vector[j] = aux;

      }

    }

  }

}

void imprimirVector(int vector[], int tamano) {

  for (int i = 0; i < tamano; i++) {

    printf(“%d “, vector[i]);

  }

  printf(“\n”);

}

int main() {

  int vector[] = {5, 2, 4, 1, 3};

  int tamano = sizeof(vector) / sizeof(vector[0]);

  printf(“Vector original: “);

  imprimirVector(vector, tamano);

  ordenarVector(vector, tamano);

  printf(“Vector ordenado: “);

  imprimirVector(vector, tamano);

  return 0;

 Escribir una función en C que dado un vector de números enteros devuelva la moda de estos

int moda (int v[TAM], int TAM){

int i, j;

for( i=0; i<TAM; i++){

for (j=0; j<TAM; j++){

if (v[i] = v[j] ){

cont++; } }

contM=cont;

if (cont > contM){

cont=contM;

moda=v[i]; } }

return moda; }

 Dado un vector de enteros calcular aquel número del vector que aparece

mayor número de veces.

#include <stdio.H>

int main(){

int v[100];

int i, n, cont=0, aux=0;

printf(“Cuantos números quieres introducir?”);

scanf(“%i”, &n);

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

scanf(“%i”, &v[i]);

}

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

for (j=0;j<n;j++){

if(v[i]==v[j]){

cont++;

}}if(cont>aux){

aux=cont;

num=v[i];

}cont =0;

}

printf ( “ El numero %i se repite %i veces “ , num, cont) ;}

Realizar una función en C que dado un vector de números determine para cada elemento del vector si es un número perfecto. Realizar el programa que llame a la función.

void perfecto(){

int v[100];

int d=0, i, j, n;

printf (“Cuantos elementos tendrá el vector:”);

scanf(“%i”,&n);

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

scanf(“%i”, &v[i]);

for(j=0; j<v[i]; j++ ){

if( v[i]%j==0){

d+=j;

} if (d==v[i]){

printf( “El numero %i es perfecto”, v[i]);

} else (“El numero %i no es perfecto”, v[i]);

}}

}



-EXAMEN 2024:

Realiza en función en C que dada un matriz de 40 filas y 20 columnas, calcule los elementos de la matriz pares y cuyo valor que se encuentren -5 y 23. Realizar el correspondiente programa que llame a la función y muestre el resultado:

#include <stdio.H>

int main() {

 int matriz[40][20];

    for (int i = 0; i < 40; i++) {

        for (int j = 0; j < 20; j++) {

            matriz[i][j] = i * 20 + j; // Puedes cambiar esta fórmula según tus necesidades

        }

    }

    for (int i = 0; i < 40; i++) {

        for (int j = 0; j < 20; j++) {

            if (matriz[i][j] % 2 == 0 && matriz[i][j] >= -5 && matriz[i][j] <= 23) {

                printf(“matriz[%d][%d]: %d\n”, i, j, matriz[i][j]);

            }

        }

    }

    return 0;

}

Escriba un programa en función en C que dado un vector, determine un valor cuyo valor deja a la mitad de ellos por debajo y la otra por arriba. Realiza la función sin modfcar el vector

#include

#include

void copiarYOrdenar(int original[], int copia[], int longitud) {

for (int i = 0; i < longitud; i++) {

copia[i] = original[i];

}

for (int i = 0; i < longitud – 1; i++) {

for (int j = 0; j < longitud – i – 1; j++) {

if (copia[j] > copia[j + 1]) {

// Intercambiar los elementos

int temp = copia[j];

copia[j] = copia[j + 1];

copia[j + 1] = temp;

}

}

}

}

int encontrarMediana(int vector[], int longitud) {

int copia[longitud];

copiarYOrdenar(vector, copia, longitud);

if (longitud % 2 == 0) {

return (copia[longitud / 2 – 1] + copia[longitud / 2]) / 2;

} else {

return copia[longitud / 2];

}

}

int main() {

int vector[] = {3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5};

int longitud = 11; // Longitud del vector

int mediana = encontrarMediana(vector, longitud);

printf(“El valor mediano es: %d\n”, mediana);

return 0;

}

Se desea informatizar en un club deportivo los datos de cada miembro: nombre, apellidos, teléfono, direcion, antigüedad en el club, dorsal y ciudad:

A) Diseña una estructura de datos que permita alamacenar los datos de 200 socios #include

b) Realiza una función que dada la lista de socios busque el socio con mayor antigüedad, de la ciudad de Córdoba y que imprima sus datos en pantalla.

A)#include

#include <string.H>

struct Socio {

    char nombre[50];

    char apellidos[50];

    char teléfono[15];

    char dirección[100];

    int antigüedad;

    int dorsal;

    char ciudad[50];

};

int main() {

    #define MAX_SOCIOS 200

    struct Socio socios[MAX_SOCIOS];

B)int numSocios;

    printf(“Ingrese el número de socios: “);

    scanf(“%d”, &numSocios);

    for (int i = 0; i < numSocios; i++) {

        printf(“\nIngrese los datos del socio %d:\n”, i + 1);

        printf(“Nombre: “);

        scanf(” %[^\n]”, socios[i].Nombre); // Leer hasta encontrar un salto de línea

        printf(“Apellidos: “);

        scanf(” %[^\n]”, socios[i].Apellidos);

        printf(“Teléfono: “);

        scanf(” %[^\n]”, socios[i].Teléfono);

        printf(“Dirección: “);

        scanf(” %[^\n]”, socios[i].Dirección);

        printf(“Antigüedad: “);

        scanf(“%d”, &socios[i].Antigüedad);

        printf(“Dorsal: “);

        scanf(“%d”, &socios[i].Dorsal);

        printf(“Ciudad: “);

        scanf(” %[^\n]”, socios[i].Ciudad);

    }

    int maxAntiguedad = -1;

    int indiceSocio = -1;

    for (int i = 0; i < numSocios; i++) {

        if (strcmp(socios[i].Ciudad, “Córdoba”) == 0 && socios[i].Antigüedad > maxAntiguedad) {

            maxAntiguedad = socios[i].Antigüedad;

            indiceSocio = i;

        }

    }

    if (indiceSocio != -1) {

        printf(“\nSocio con mayor antigüedad en Córdoba:\n”);

        printf(“Nombre: %s\n”, socios[indiceSocio].Nombre);

        printf(“Apellidos: %s\n”, socios[indiceSocio].Apellidos);

        printf(“Teléfono: %s\n”, socios[indiceSocio].Teléfono);

        printf(“Dirección: %s\n”, socios[indiceSocio].Dirección);

        printf(“Antigüedad: %d años\n”, socios[indiceSocio].Antigüedad);

        printf(“Dorsal: %d\n”, socios[indiceSocio].Dorsal);

        printf(“Ciudad: %s\n”, socios[indiceSocio].Ciudad);

    } else {

        printf(“\nNo hay socios de Córdoba en la lista o ninguno tiene antigüedad positiva.\n”);

    }

    return 0;

}



-INFORMATIZAR:

En una escuela de Primaria se desea informatizar los siguientes datos

para cada alumno: nombre, apellidos, dirección, teléfono, curso actual, nota media

del curso actual.

A) Define la estructura de datos para almacenar esta información para 100 alumnos

B) Realiza una función que dada la lista de alumnos de la escuela determine el alumno

de sexto con mayor nota e imprima sus datos por pantalla.

A) La estructura de datos:

#include <stdio.H>

#include <string.H>

typedef struct{

char nombre[15];

char apellidos[30];

char dirección[50];

int teléfono[9];

int curso;

float nota;

} datos

datos alumnos[100];

B)El alumno de sexto con mayor nota:

void búsqueda (datos alumnos [100], float nota, int curso){

int i, j;

float mayor=0.0;

int pos=0;

for(i=0;i <100; i ++){

for (j=1; j<100; j++){

if( alumno[i].Curso==6 && alumno[i].Nota>mayor ){

mayor=alumno[i].Nota;

pos=i;

} }

printf ( “El nombre del alumno con la nota maxíma del sexto curso es: %c”,

alumno[pos].Nombre);

}

En un concesionario se desea informatizar el stock de automóviles para

ello se necesita guardar los siguientes datos: número de bastidor, marca, modelo,

potencia, precio, fecha de entrada.

A) Define la estructura de datos para almacenar esta información para 20 automóviles

B) Realiza una función que dada la lista de automóviles busque un automóvil por su

número de bastidor e imprima por pantalla sus datos.

A) #include

#include <string.H>

typedef struct{

int num;

char marca[30];

char modelo [30];

int potencia;

float precio;

char fecha[10];

}registro;

registro stock[20];

B)void búsqueda (registro stock[20], int n, int num){

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

if (stock[i].Num==num ){

printf(“ la marca es: % s \n”,stock[i].Marca );

printf (“el modelo es %c \n”, stock[i].Modelo);

printf(“ la potencia es: %i \n”,stock.Potencia);

printf (“el precio es %f \n”, stock[i].Precio);

printf(“ la fecha es: % s \n”,stock[i].Fecha );

}}

Se desean informatizar los datos de una empresa de transportes la

gestión de sus vehículos y las rutas realizadas. Para ello desea almacenar la

siguiente información para cada vehículo: Matrícula, años de antigüedad, nombre del

conductor, tipo de vehículo, número de kilómetros en un mes y número de rutas

realizadas por el vehículo en un mes.

A) Diseñar una estructura de datos que permita almacenar en la memoria la

información descrita anteriormente para los 100 vehículos de la empresa.

B)Escribir una función en C que calcule cual es el vehículo con mayor números de

kilómetros en un mes visualizando en pantalla la siguiente información: Matrícula,

años de antigüedad, nombre del conductor, tipo de vehículo, número de kilómetros

en un mes y número de rutas realizadas por el vehículo en un mes. Además se debe

calcular el número de medio de rutas en un mes realizadas por los vehículos de la

empresa.

A)La estructura:

#include <stdio.H>

#include <string.H>

typedef struct{

char matrícula[8];

int antigüedad;

char nombre [10];

char tipo [10];

int km;

int rutas;

}vehiculo;

vehiculo coche[100];

B)Función:

void kilómetros(vehiculo coche[100], int km){

int i;

for (i=0; i<100; i++){

for(j=1; j<100; j++){

if(coche[i].Km > coche[j].Km){

pos=coche[i]; }}}

printf (“La matricula del coche que tiene mas kilómetros recorridos es : %c”,

coche[pos].Matricula);

}

void medioRutas (vehiculo coche[100], int rutas){

int i, num=0, media=0;

for (i=0; i<100; i++){

num+= coche[i].Ruta;

}

media=num/100

printf (“el numero medio de rutas es: %i”, media); }

Se desean informatizar los datos de una biblioteca con un número

máximo de 2000 libros. Sobre cada libro se desea informatizar los siguientes datos:

Título, autor, ISBN, tema, editorial y número de préstamos en el mes actual.

A) Diseñar una estructura de datos que permita almacenar en la memoria la

información descrita anteriormente para los 2000 libros de la biblioteca.

B) Escribir una función en C que calcule cual es el libro con mayor número de

préstamos en el presente mes, sobre este libro se visualizará por pantalla la siguiente

información: ISBN, titulo, autor, editorial, tema, número de préstamos.

A)La estructura de datos:

#include <stdio.H>

#include <string.H>

typedef struct{

char nombre [20];

char autor [40];

int ISBM;

char tema [10];

char editorial [15];

int num;

} libro;

libro biblioteca[2000];

B)Función:

void préstamo ( libro biblioteca[2000], int num){

int i, mayor=0, num=0, pos;

for (i=0; i<2000; i++){

if (biblioteca[i].Num>mayor){

mayor=num;

pos=i; }}

printf (“El titulo del libro que tiene más préstamos es: %c”, libro[pos].Nombre);

printf (“El numero del libro que tiene más préstamos es: %i”, libro[pos].Num);

printf (“El autor del libro que tiene más préstamos es: %c”, libro[pos].Autor);

printf (“El editorial del libro que tiene más préstamos es: %c”, libro[pos].Editorial);

Se desean informatizar los datos de los participantes en la competiciones

de salto de longitud realizadas a lo largo de un año, en un mes se realizan dos

pruebas, al año un total de 24. En la competición tienen fijado un salto mínimo a

superar para clasificarse para otras competiciones. Sobre los atletas se desean

almacenar los siguientes datos: Nombre del atleta, provincia, club, DNI, dirección,

E-mail y los saltos obtenidos (deben guardarse en una array de tamaño 24). Responda

a las siguientes cuestiones:

A) Diseñar una estructura de datos que permita almacenar en la memoria la

información descrita anteriormente.

B) Escribir un función en C que visualice en pantalla cual es el atleta con mayor

número de saltos que superan el salto mínimo dado como parámetro a la función, así

como devuelva el número medio de saltos superados entre todos los atletas. Nota:

Considerar una función que calcule para un saltador el número de veces que ha

superado el salto mínimo.

C) Diseñar un programa en C que cree una variable competición e introduzca tantos

atletas como indique el usuario, para luego llamar al módulo del apartado II y

visualizar el número medio de saltos superados, posteriormente visualizar por

pantalla aquellos usuarios cuya provincia es “Jaén” y que los cinco primeros meses

de competición has superado el salto mínimo al menos tres veces.

A) Typedef struct {

  char nombre[50];

  char provincia[50];

  char club[50];

  char DNI[20];

  char dirección[100];

  char email[50];

  int saltos[24]; // Array para almacenar los saltos de cada mes

} Atleta;

B) int calcularSaltosSuperados(Atleta atleta, int saltoMinimo) {

  int saltosSuperados = 0;

  for (int i = 0; i < 24; i++) {

    if (atleta.Saltos[i] >= saltoMinimo) {

      saltosSuperados++;

    }

  }

  return saltosSuperados;

}

void mostrarAtletaMasSaltosSuperados(Atleta atletas[], int numAtletas, int saltoMinimo) {

  int maxSaltosSuperados = 0;

  int indiceAtletaMaximo = 0;

  for (int i = 0; i < numAtletas; i++) {

    int saltosSuperadosActual = calcularSaltosSuperados(atletas[i], saltoMinimo);

    if (saltosSuperadosActual > maxSaltosSuperados) {

      maxSaltosSuperados = saltosSuperadosActual;

      indiceAtletaMaximo = i;

    }

  }

  if (maxSaltosSuperados > 0) {

    printf(“El atleta con más saltos superados es: %s (%d saltos superados)\n”, atletas[indiceAtletaMaximo].Nombre, maxSaltosSuperados);

  } else {

    printf(“No hay atletas que hayan superado el salto mínimo\n”);

  }

  float mediaSaltosSuperados = 0;

  for (int i = 0; i < numAtletas; i++) {

    mediaSaltosSuperados += calcularSaltosSuperados(atletas[i], saltoMinimo);

  }

  mediaSaltosSuperados /= numAtletas;

  printf(“El número medio de saltos superados es: %.2f\n”, mediaSaltosSuperados);

}

C) #include

typedef struct {

  char nombre[50];

  char provincia[50];

  char club[50];

  char DNI[20];

  char dirección[100];

  char email[50];

  int saltos[24];

} Atle


-ARRAY

Diseñar una función en C que dado un array de enteros obtenga la

posición que ocupa la mediana del vector sin modificar el vector ni usar un vector

auxiliar, suponer que el vector no está ordenado así como no tiene elementos

repetidos y el número de elementos del array es impar

void mediana(int v[TAM], int n){

//n-número de elementos que tiene el vector introducido en main

int i, j, contMayor=0, contMenor=0;

int valMediana=0, posMediana=0;

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

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

if (v[i]>v[j]){

contMayor++;

}else{

contMenor++;

}}

if(contMenor==contMayor){

valMediana=v[i];

posMediana=i;

break;

} contMayor=0;

contMenor=0;

}

printf ( “La mediana es %i y está en la posición %i”, valMediana, posMediana);