#include <stdio.h>
int llenarvector(int n, int array[]);
void sumarelementos(int n, int array[]);
int main(){
int vector[100], *p_vector;
int i, num;
printf("Ingrese cantidad de elementos del vector: ");
scanf("%d",&num);
fflush(stdin);
p_vector = &vector[0];
llenarvector(num, p_vector);
sumarelementos(num, p_vector);
system("pause");
return 0;
}
int llenarvector(int n, int array[]){
int i;
for(i=0; i<n; i++){
printf("Ingrese numero %d: ",i+1);
scanf("%d",&array[i]);
}
printf("El vector ingresado es: \n");
for(i=0; i<n; i++){
printf("%d ",array[i]);
}
printf("\n");
}
void sumarelementos(int n, int array[]){
int i, suma=0;
for(i=0; i<n; i++){
suma = suma + array[i];
}
printf("La suma de los elementos del array es %d \n",suma);
}
Punt: Suma elementos vector con aritmetica de punteros
Vec y Mat: Vectores con pares y otro con impares
#include <stdio.h>
int main(){
int vector[50], par[50], impar[50], i, num;
printf("De cuantos elementos quiere el vector: ");
scanf("%d",&num);
fflush(stdin);
for(i=0; i<num; i++){
printf("Numero %d: ",i);
scanf("%d",&vector[i]);
fflush(stdin);
}
printf("\nPares: ");
for(i=0; i<num; i++){
if(vector[i]%2==0){
par[i] = vector[i];
printf("%d ",par[i]);
}
}
printf("\nImpares: ");
for(i=0; i<num; i++){
if(vector[i]%2!=0){
impar[i] = vector[i];
printf("%d ",impar[i]);
}
}
system("pause");
return 0;
}
WHILE: Contar caracteres en un array
#include <stdio.h>
int main(){
char palabra[30];
int i=0;
printf("Escriba una palabra: ");
gets(palabra);
while(palabra[i] !='\0'){
i++;
}
printf("La palabra tiene %d caracteres \n", i);
printf("La palabra al reves es: ");
while(i>=0){
printf("%c",palabra[i--]);
}
printf("\n");
system("pause");
return 0;
}
String: Palíndromo
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(){
char palabra[30];
int i, b, palindromo=1;
printf("Escriba una palabra: ");
gets(palabra);
b = strlen(palabra)-1; // recorrer desde el final
for(i=0; i<(strlen(palabra)/2); i++, b--){
if(palabra[i] != palabra[b]){
palindromo = 0;
}
}
if(palindromo == 0){
printf("La frase %s no es palindromo\n",palabra);
}
else{
printf("La frase %s es palindromo\n",palabra);
}
system("pause");
return 0;
}
Funciones: Desglose billetes
#include <stdio.h>
void contar(int cantidad, int valor[]);
int main(){
int valor[9] = {500, 200, 100, 50, 20, 10, 5, 2, 1};
int cantidad;
printf("Ingresa la cantidad de euros: ");
scanf("%d", &cantidad);
fflush(stdin);
contar(cantidad,valor);
system("pause");
return 0;
}
void contar(int cantidad, int valor[]){
int i=0, n;
while(cantidad>0){
n = cantidad/valor[i];
cantidad = cantidad%valor[i];
if(n>0){
printf("%d billetes/monedas de %d euros.\n",n,valor[i]);
}
i++;
}
}
String: Sustituir asterisco
#include <stdio.h>
#include <string.h>
int main(){
char cadena[50], subcadena[50], sustituir = '*';
int i = 0, j = 0, largocadena, largosubcadena;
printf("Escribe una frase: \n");
gets(cadena);
printf("Escribe la coincidencia que buscas: \n");
gets(subcadena);
largocadena = strlen(cadena);
largosubcadena = strlen(subcadena);
for(i=0; i<largocadena; i++){
if(cadena[i] == subcadena[0]){
for(j=1; j<largosubcadena; j++){
if(cadena[i+j] == subcadena[j]){
if(j == largosubcadena-1) cadena[i] = sustituir;
}
}
}
}
printf("\n%s \n%s \n",subcadena, cadena);
system("pause");
return 0;
}
Fich: Libros, actgrup
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct stFichaLibro //registro libro
{
char sTitulo[200];
char sAutor[100];
char sEditorial[50];
int iAnoEdicion;
int sIsbn;
int iNumeroPag;
};
/*Prototipos de las funciones que desarrollaremos*/
int Leer_fichero();
int Anadir_libro();
int Modificar_libro();
int Baja_libro();
void main()
{
int iOpcion=0;
do{
fflush(stdin);
system("cls");
printf("\n\n\t\t-- EJERCICIO FICHEROS: --\n\n"); //menu
printf("\t\t1. Leer fichero biblioteca\n");
printf("\t\t2. A\244adir libro a la biblioteca\n");
printf("\t\t3. Modificar libro de la biblioteca\n");
printf("\t\t4. Dar de baja libro de la biblioteca\n");
printf("\t\t5. Salir\n");
scanf("%d", &iOpcion);
switch(iOpcion){
case 1: Leer_fichero();break;
case 2: Anadir_libro();break;
case 3: Modificar_libro();break;
case 4: Baja_libro();break;
case 5: printf("Saliendo del programa...");break;
default: printf("Opci\242n no v\240lida"); getch();break;
}
}while (iOpcion!=5);
}
int Leer_fichero(){
int contador = 1;
FILE *fichero;
struct stFichaLibro libro1;
fflush(stdin);
system("cls");
printf("\n\n\t Opci\242n 1: LEER FICHERO \n\n");
/* Abrir el fichero "biblioteca.dat" en modo lectura*/
fichero = fopen("biblioteca.dat", "r");
if (fichero == NULL) {
printf("Error: No se ha podido crear el fichero biblioteca.dat");
} else {
// Leer la primera estructura libro del fichero
fread(&libro1, sizeof(libro1), 1, fichero);
/* Utilizar un bucle repetitivo WHILE mediante el cual mientras no
se llega al final del fichero se va imprimiendo por pantalla cada uno de los registros */
while (!feof(fichero)) {
printf("\t Libro %d", contador);
printf("\n\t=========");
printf("\n\tT\241tulo: %s", libro1.sTitulo);
printf("\n\tAutor: %s", libro1.sAutor);
printf("\n\tEditorial: %s", libro1.sEditorial);
printf("\n\tA\244o edici\242n: %d", libro1.iAnoEdicion);
printf("\n\tISBN: %d", libro1.sIsbn);
printf("\n\tN\243mero de p\240ginas: %d", libro1.iNumeroPag);
fread(&libro1, sizeof(libro1), 1, fichero);
printf("\n\n");
//Incrementamos el contador de libros almacenados en el fichero
contador++;
}
/* Cerrar el fichero "bibliteca.dat". */
fclose(fichero);
}
getch();
return 0;
}
int Anadir_libro( ) {
/* Declarar la variable fichero y la estructura libro*/
FILE *fichero;
struct stFichaLibro libro1;
//Abrimos el fichero "biblioteca.dat" en modo añadir.
fichero = fopen("biblioteca.dat", "a");
fflush(stdin);
system("cls");
printf("\n\n\tOpci\242n 2: A\245ADIR REGISTRO");
if (fichero == NULL) {
printf("Error: No se ha podido crear el fichero biblioteca.dat");
}
else {
/* Pedimos al usuario los datos del libro*/
fflush (stdin);
printf("\n\n\tT\241tulo: ");
scanf("%s", libro1.sTitulo);
printf("\n\tAutor: ");
scanf("%s", libro1.sAutor);
printf("\n\tEditorial: ");
scanf("%s", libro1.sEditorial);
printf("\n\tA\244o edici\242n: ");
scanf("%d", &libro1.iAnoEdicion);
printf("\n\tISBN: ");
scanf("%d", &libro1.sIsbn);
printf("\n\tN\243mero de p\240ginas: ");
scanf("%d", &libro1.iNumeroPag);
//Añadimos el registro al fichero
fwrite(&libro1, sizeof(libro1), 1, fichero);
/* Cerramos "empleados.dat". */
fclose(fichero);
printf("\n\n\tRegistro a\244adido correctamente");
}
getch();
return 0;
}
int Modificar_libro(){
/* Declaramos las variables fichero y fichero auxiliar*/
FILE *fichero;
FILE *ficheroAux;
struct stFichaLibro libro1;
int sISBN=0;
int iEncontrado=0;
//Abrir el fichero "biblioteca.dat" en modo añadir.
fichero = fopen("biblioteca.dat", "r");
//Abrir el fichero "bibliotecaAux.dat" en modo añadir.
ficheroAux = fopen("bibliotecaAux.dat", "a");
fflush(stdin);
system("cls");
fflush(stdin);
printf("\n\n\tOpci\242n 3: MODIFICAR REGISTRO");
printf("\n\n\n\tIndique el ISBN del libro a modificar: ");
scanf("%d",&sISBN);
fflush(stdin);
if (fichero == NULL) {
printf("Error: No existe el fichero biblioteca.dat");
}
else {
fread(&libro1, sizeof(libro1), 1, fichero);
/*bucle WHLE lo que hacemos es ir trasvasando todos los registros a un fichero auxiliar
hasta encontrar el que tiene el ISBN que ha indicado el usuario.
En dicho punto, se añade el nuevo fichero indicado por el usuario y se sigue trasvasando
la información hasta que se alcance el final del fichero*/
while (!feof(fichero)) {
if(libro1.sIsbn == sISBN)
{
/* Pedimos al usuario los nuevos datos del libro.*/
printf("\n\n\tT\241tulo: ");
scanf("%s", libro1.sTitulo);
printf("\n\tAutor: ");
scanf("%s", libro1.sAutor);
printf("\n\tEditorial: ");
scanf("%s", libro1.sEditorial);
printf("\n\tA\244o edici\242n: ");
scanf("%d", &libro1.iAnoEdicion);
printf("\n\tISBN: ");
scanf("%d", &libro1.sIsbn);
printf("\n\tN\243mero de p\240ginas: ");
scanf("%d", &libro1.iNumeroPag);
printf("\n\tLibro modificado correctamente");
fwrite(&libro1, sizeof(libro1), 1, ficheroAux);
iEncontrado=1;
}
else{
fwrite(&libro1, sizeof(libro1), 1, ficheroAux);
}
fread(&libro1, sizeof(libro1), 1, fichero);
}
}
//Cerrar ficheros
fclose(fichero);
fclose(ficheroAux);
if(iEncontrado==0)
{
/*En caso de no haber encontrado ningún libro coincidente con el ISBN
se muestra un mensaje al usuario y seelimina el fichero auxiliar ya que se tendrá
exactamente el mismo contenido que en el fichero normal*/
printf("No se ha encontrado ning\243n libro con el ISBN indicado.");
remove("bibliotecaAux.dat");
}
else{
/*En el caso de haber encontrado coincidencia, eliminaremos el fichero actual Biblioteca
se renombra el auxiliar de BibliotecaAux a Biblioteca ya que contendrá el total de registros
con los datos ya modificados */
remove("biblioteca.dat");
rename("bibliotecaAux.dat", "biblioteca.dat");
}
getch();
return 0;
}
int Baja_libro(){
/* Declarar las variables fichero y fichero auxiliar*/
FILE *fichero;
FILE *ficheroAux;
struct stFichaLibro libro1;
int sISBN=0;
int iEncontrado=0;
//Abrir el fichero "biblioteca.dat" en modo añadir.
fichero = fopen("biblioteca.dat", "r");
//Abrir el fichero "biblioteca.dat" en modo añadir.
ficheroAux = fopen("bibliotecaAux.dat", "a");
fflush(stdin);
system("cls");
fflush(stdin);
printf("\n\n\tOpci\242n 3: BAJA DE REGISTRO");
printf("\n\n\n\tIndique el ISBN del libro a dar de baja: ");
scanf("%d",&sISBN);
fflush(stdin);
if (fichero == NULL) {
printf("Error: No existe el fichero biblioteca.dat");
}
else {
fread(&libro1, sizeof(libro1), 1, fichero);
/*Con este bucle WHLE se trasvasan todos los registros a un fichero auxiliar
hasta encontrar el que tiene el ISBN que ha indicado el usuario. Se obvia el registro a dar de baha
y se sigue trasvasando la información hasta que se alcance el final del fichero*/
while (!feof(fichero)) {
if(libro1.sIsbn == sISBN)
{
printf("\n\tLibro dado de baja correctamente");
iEncontrado=1;
}
else{
fwrite(&libro1, sizeof(libro1), 1, ficheroAux);
}
fread(&libro1, sizeof(libro1), 1, fichero);
}
}
//Cerramos ambos ficheros
fclose(fichero);
fclose(ficheroAux);
if(iEncontrado==0)
{
/*En caso de no haber encontrado ningún libro coincidente con el ISBN
se muestra un mensaje al usuario y eliminaremos el fichero auxiliar
*/
printf("No se ha encontrado ning\243n libro con el ISBN indicado.");
remove("bibliotecaAux.dat");
}
else{
/*En el caso de haber encontrado coincidencia, eliminar el fichero actual Biblioteca y
renombrar
el auxiliar de BibliotecaAux a Biblioteca ya que contendrá el total de registros con los datos ya modificados
*/
remove("biblioteca.dat");
rename("bibliotecaAux.dat", "biblioteca.dat");
}
getch();
return 0;
}
Recursión: Matriz traspuesta
#include <stdio.h>
int traspuesta(int m[3][3], int i, int j, int f, int c);
void main(){
int mat[3][3]={3,6,2,3,2,3,7,5,3};
int i, j, f,c,s;
i=0;
j=0;
s=0;
f=3;
c=3;
s=traspuesta(mat,0,0,3,3);
}
int traspuesta(int m[3][3], int i, int j, int f, int c){
if (i<f && j<c){ // estamos dentro de la fila i y vamos traspuestando columnas j=j+1 hasta j==c
if (j==0) printf("%d",m[j][i]);
if (j==1) printf("%d",m[j][i]);
if (j==2) printf("%d\n",m[j][i]);
traspuesta(m, i, j+1, f, c);
}
else if (i<f && j==c){ // j==c -->hemos llegado al final de una fila --> fila+1 y reseteamos j=0
traspuesta(m, i+1, 0, f, c);
}
else if (i==f && j==0) { // hemos traspuestado todas las filas y columnas i==f
return;
}
}
Recursión: Suma recursiva de matriz
#include <stdio.h>
int suma(int m[3][3], int i, int j, int f, int c, int s);
void main(){
int mat[3][3]={3,3,3,3,4,3,3,3,3};
int i, j, f,c,s;
i=0;
j=0;
s=0;
f=3;
c=3;
s=suma(mat,0,0,3,3,0);
printf("suma=%d:",s);
}
int suma(int m[3][3], int i, int j, int f, int c, int s){
if (i<f && j<c){ // estamos dentro de la fila i y vamos sumando columnas j=j+1 hasta j==c
suma(m, i, j+1, f, c, s+m[i][j]);
}
else if (i<f && j==c){ // j==c -->hemos llegado al final de una fila --> fila+1 y reseteamos j=0
suma(m, i+1, 0, f, c, s);
}
else if (i==f && j==0) { // hemos sumado todas las filas y columnas i==f
return s;
}
}
Suscribirse a:
Entradas (Atom)