Está en la página 1de 23

Práctica 05: Vectores, cadenas

y paso a funciones
Programa 1

Código:

/*

* Programa 1 Practica 5

* Manejo de vectores

* */

#include <stdio.h>

#define N 50

int main(int argc, char **argv)

float notas[N];

int n_al;

int i;

char opc;

int cerrar;

float s;

float media;

float max;
float min;

do{

printf("Introducir numero de alumnos: ");

scanf("%d", &n_al);

if(n_al<0 || n_al>N){

printf("Numero de alumnos no valido\n");

}while(n_al<0 || n_al>N);

i=0;

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

do{

printf("Intoduce la nota n%d: ", i+1);

scanf("%f", &notas[i]);

if(notas[i]<0||notas[i]>10){

printf("Nota incorrecta\n");

}while(notas[i]<0||notas[i]>10);

cerrar=0;

do{

printf("a)Media\nb)Nota maxima\nc)Nota minima\ns)Salir\nElige una opcion: ");

scanf(" %c", &opc);

switch (opc){

case 'a':
case 'A':

i=0;

s=0;

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

s=s+notas[i];

media=s/n_al;

printf("La media es %.2f\n", media);

break;

case 'b':

case 'B':

i=0;

max=0;

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

if(notas[i]>max){

max=notas[i];

printf("La nota maxima es %.2f\n", max);

i=0;

printf("Alumnos que han sacado la nota maxima:\n");

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

if(notas[i]==max){

printf("%d\n", i+1);

}
}

break;

case 'c':

case 'C':

i=0;

min=10;

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

if(notas[i]<min){

min=notas[i];

printf("La nota minima es %.2f\n", min);

i=0;

printf("Alumnos que han sacado la nota minima:\n");

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

if(notas[i]==min){

printf("%d\n", i+1);

break;

case 's':

case 'S':

cerrar=1;

break;

default:

printf("Opcion incorrecta\n");

}while(cerrar!=1);
return 0;

}
Programa 2

Código:
/*

* Programa 2 Practica 5

* Lectura y proceso de una frase

* */

#include <stdio.h>

#include <string.h>

#include <ctype.h>

#define N 100

int main(int argc, char **argv)

char frase[N];

int n;

int i;

char c_anterior;

int num_palabra;

int num_letra;

int num_vocal;

printf("Intoducir frase: ");


fgets(frase, N, stdin);

n=strlen(frase);

i=0;

num_palabra=1;

c_anterior=0;

num_letra=0;

num_vocal=0;

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

if(c_anterior==' ' && ((frase[i]>='A' && frase[i]<='Z') || (frase[i]>='a' && frase[i]<='z'))){


//Palabra nueva es un espacio seguido de una letra

num_palabra++;

c_anterior=frase[i];

if((frase[i]>='A' && frase[i]<='Z') || (frase[i]>='a' && frase[i]<='z')){

num_letra++;

if(frase[i]=='a' || frase[i]=='A' || frase[i]=='e' || frase[i]=='E' || frase[i]=='i' || frase[i]=='I' ||


frase[i]=='o' || frase[i]=='O' || frase[i]=='u' || frase[i]=='U'){

num_vocal++;

printf("Numero de palabras: %d, numero de letras: %d y numero de vocales: %d\n",


num_palabra, num_letra, num_vocal);

return 0;
}
Programa 3
Código:
/*

* Programa 3 Practica 5

* Paso de vectores a funciones

* */

#include <stdio.h>

#define N 100

void Pedir_Datos(int codigos[], float saldos[], int numcli);

void Movimientos(int codigos[], float saldos[], int n);

int Buscar_Clientes(int codigos[], float saldos[], int n, float limite, int buscados[]);

void Mostrar_Datos_Enteros(int vec[], int n);

void Mostrar_Datos_Reales(float v[], int n);

int main(int argc, char **argv)

int codigos[N];

float saldos[N];

int n;

char opc;

float lim;

int buscados[N];

int num_ricos;

do{

printf("Introduce el numero de clientes: ");

scanf("%d", &n);

if(n<0){

printf("Numero de clientes no valido\n");

}
}while(n<0);

Pedir_Datos(codigos, saldos, n);

do{

do{

printf("A) Ingresar y Sacar dinero.\nB) Buscar clientes.\nC) Ver datos.\nD) Salir del
programa.\nElige una opcion: ");

scanf(" %c", &opc);

if(opc!='A' && opc!='a' && opc!='B' && opc!='b' && opc!='C' && opc!='c' && opc!='D' &&
opc!='d'){

printf("Opcion incorrecta\n");

}while(opc!='A' && opc!='a' && opc!='B' && opc!='b' && opc!='C' && opc!='c' && opc!='D' &&
opc!='d');

switch(opc){

case 'A':

case 'a':

Movimientos(codigos, saldos, n);

break;

case 'B':

case 'b':

do{

printf("Introduce el limite de dinero: ");

scanf("%f", &lim); //Puede que se tenga que poner en la opcion B

if(lim<0){

printf("Limite de dinero no valido\n");

}while(lim<0);

num_ricos=Buscar_Clientes(codigos, saldos, n, lim, buscados);


printf("El numero de clientes que superan ese limite son %d\nY sus codigos son:\n",
num_ricos);

Mostrar_Datos_Enteros(buscados, num_ricos);

break;

case 'C':

case 'c':

printf("Los codigos de los clientes son:\n");

Mostrar_Datos_Enteros(codigos, n);

printf("El saldo de los clientes es:\n");

Mostrar_Datos_Reales(saldos, n);

break;

case 'D':

case 'd':

printf("Saliendo del programa\n");

break;

default:

printf("Error\n");

}while(opc!='d' && opc!='D');

return 0;

void Pedir_Datos(int codigos[], float saldos[], int numcli)

int i;

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

do{

printf("Introduce el codigo del cliente n%d: ", i+1);

scanf("%d", &codigos[i]);

if(codigos[i]<0){

printf("Codigo no valido\n");

}while(codigos[i]<0);

do{

printf("Introduce el saldo del cliente n%d: ", i+1);

scanf("%f", &saldos[i]);

if(saldos[i]<0){

printf("Saldo no valido\n");

}while(saldos[i]<0);

return;

void Movimientos(int codigos[], float saldos[], int n)

int i;

int code;

int valido;

int pos;

int opc;

float dinero;

printf("Introduce tu codigo: ");

scanf("%d", &code);
i=0;

valido=0;

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

if(codigos[i]==code){

pos=i;

valido=1;

printf("Codigo valido\nBienvenido cliente n%d\n", i+1);

if(valido!=1){

printf("Codigo introducido erroneo\n");

}else{

do{

printf("Opcion 1) Sacar dinero\nOpcion 2) Depositar dinero\nElige una opcion: ");

scanf("%d", &opc);

if(opc!=1 && opc!=2){

printf("Opcion incorrecta\n");

}while(opc!=1 && opc!=2);

switch(opc){

case 1:

do{

printf("Usted ha elegido la opcion de sacar dinero\nQue cantidad de dinero desea sacar de


su cuenta? ");

scanf("%f", &dinero);

if(dinero>saldos[pos] || dinero<0){

printf("Cantidad no valida\n");
}

}while(dinero>saldos[pos] || dinero<0);

saldos[pos]=saldos[pos]-dinero;

printf("Su nuevo saldo es %.2f\n", saldos[pos]);

break;

case 2:

printf("Usted ha elegido la opcion de depositar dinero\nQue cantidad de dinero desea


depositar? ");

scanf("%f", &dinero);

saldos[pos]=saldos[pos]+dinero;

printf("Su nuevo saldo es %.2f\n", saldos[pos]);

break;

default:

printf("Opcion incorrecta\n");

int Buscar_Clientes(int codigos[], float saldos[], int n, float limite, int buscados[])

int i;

int j;

i=0;

j=0;

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

if(saldos[i]>limite){

buscados[j]=codigos[i];

j++;
}

return j;

void Mostrar_Datos_Enteros(int vec[], int n)

int i;

i=0;

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

printf("%d\n", vec[i]);

return;

void Mostrar_Datos_Reales(float v[], int n)

int i;

i=0;

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

printf("%.2f\n", v[i]);

return;

}
Programa 4
Código:
/*

* Programa 4 Practica 5

* Paso de cadenas a funciones.

* */

#include <stdio.h>

#include <string.h>

#define N 100

void Rot13(char cad1[]);

int main(int argc, char **argv)

char cad[N];

printf("Introduce una frase para encriptar: ");

fgets(cad, N, stdin);

Rot13(cad);

printf("La cadena encriptada es %s", cad);

return 0;

}
void Rot13(char cad1[]){

int n;

int i;

int cont;

n=strlen(cad1);

i=0;

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

cont=0;

do{

if((cad1[i]>='a' && cad1[i]<'z') || (cad1[i]>='A' && cad1[i]<'Z')){

cad1[i]=cad1[i]+1;

}else if(cad1[i]=='z'){

cad1[i]='a';

}else if(cad1[i]=='Z'){

cad1[i]='A';

cont++;

}while(cont<13);

return;

También podría gustarte