Solucion-Dir 7

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 6

Algunas soluciones de la dirigida 7

1. Podemos resolver el problema, por ejemplo de dos maneras

#include <stdio.h>

int main()
{
int x, y, *a, *b, temp;

printf("Ingresa los valores de x y y \n");


scanf("%d%d", &x, &y);

printf("antes del intercambio \nx = %d\ny = %d\n", x, y);

a = &x;
b = &y;

temp = *b;
*b = *a;
*a = temp;

printf("Despues del intercambio\nx = %d\ny = %d\n", x, y);

return 0;
}

Otra forma es la siguiente

/* Program para intercambiar dos numeros dados


*/

#include<stdio.h>

void intercambio(int *num1, int *num2) {


int temp;
temp = *num1;
*num1 = *num2;
*num2 = temp;
}

int main() {
int num1, num2;

printf("Ingresa el primer numero:\n ");


scanf("%d", &num1);
printf("Ingresa el segundo numero:\n ");
scanf("%d", &num2);

intercambio(&num1, &num2);

printf("Primer numero : %d\n", num1);


printf("Segundo numero : %d\n", num2);
return 0;
}

2. Escribe un programa que encuentre el menor y mayor elemento de un arreglo numérico.

/* Encuentra el mayor menos valor de un array numerico */

#include <stdio.h>

#define N 10

void max_min(int a[], int n, int *max, int *min);

int main(void)
{

int b[N], i, mayor, menor;


printf("Ingresa los %d numeros:", N);
for (i = 0; i < N; i ++)
scanf("%d", &b[i]);
max_min(b, N, &mayor, &menor);
printf("Mayor: %d\n", mayor);
printf("Menor: %d\n", menor);
return 0;
}

void max_min(int a[], int n, int *max,int *min)


{
int i;
*max = *min = a[0];
for (i = 1; i < n; i ++){
if (a[i] > *max)
*max = a[i];
else if (a[i] < *min)
*min = a[i];
}
}

3. Escribamos un programa que realiza las operaciones matemáticas usuales, con dos números ingresados por
el usuario.

/*
* Operaciones con punteros
*/

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
double Sum(double x, double y){return x + y;}
double Sub(double x, double y){return x - y;}
double Mul(double x, double y){return x * y;}
double Div(double x, double y){return x / y;}

// Arreglo de 5 punteros a funciones que toma doubles como parametro


// y retorna double :
double (*funcTabla[5])(double, double)
= { Sum, Sub, Mul, Div, pow }; // Lista a inicializar.

//Un array de punteros a cadenas para la salida:


char *msgTabla[5] = { "Suma", "Diferencia", "Producto", "Cociente", "Potencia" };

int main( )
{
int i;
double x = 0, y = 0;
// Una variable indice

printf( "Ingresa dos operandos para alguna operacion: :\n" );


if ( scanf( "%lf %lf", &x, &y ) != 2 )
printf( "Entrada invalida.\n" );
for ( i = 0; i < 5; ++i )
printf( "%10s: %6.2f\n", msgTabla[i], funcTabla[i](x, y) );
return 0;
}

4. Escribamos un programa en C, que inserte una subcadena en una cadena.

/* Programa para ingresar una subcadena


* dentro de una cadena
*/

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

void insert_subcadena(char*, char*, int);


char* subcadena(char*, int, int);

int main()
{
char text[100], subcadena[100];
int posicion;

printf("Ingrese algun texto\n");


fgets(text,sizeof(text),stdin);

printf("Ingrese la subcadena a ingresar\n");


fgets(subcadena, sizeof(subcadena), stdin);

printf("Ingrese la posicion donde quiera poner la subcadena\n");


scanf("%d", &posicion);

insert_subcadena(text, subcadena, posicion);

printf("%s\n",text);

return 0;
}

void insert_subcadena(char *a, char *b, int posicion)


{
char *f, *e;
int longitud;

longitud = strlen(a);

f = subcadena(a, 1, posicion - 1 );
e = subcadena(a, posicion, longitud-posicion+1);

strcpy(a, "");
strcat(a, f);
free(f);
strcat(a, b);
strcat(a, e);
free(e);
}

char *subcadena(char *cadena, int posicion, int longitud)


{
char *pointer;
int c;

pointer = malloc(longitud+1);

if( pointer == NULL )


exit(EXIT_FAILURE);

for( c = 0 ; c < longitud ; c++ )


*(pointer+c) = *((cadena+posicion-1)+c);

*(pointer+c) = ’\0’;

return pointer;
}

5. Escribamo un programa en C, que ordene una cadena en orden alfabético. El programa sólo acepta cadenas
en letras minúsculas.

/*
* Programa que ordena una matriz alfabeticamente
*/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void ordenar_cadena(char*);

int main()
{
char cadena[100];

printf("Enter some text\n");


fgets(cadena, sizeof(cadena), stdin);

ordenar_cadena(cadena);
printf("%s\n", cadena);

return 0;
}

void ordenar_cadena(char *s)


{
int c, d = 0, longitud;
char *pointer, *resultado, ch;

longitud = strlen(s);

resultado = (char*)malloc(longitud+1);

pointer = s;

for ( ch = ’a’ ; ch <= ’z’ ; ch++ )


{
for ( c = 0 ; c < longitud ; c++ )
{
if ( *pointer == ch )
{
*(resultado+d) = *pointer;
d++;
}
pointer++;
}
pointer = s;
}
*(resultado+d) = ’\0’;

strcpy(s, resultado);
free(resultado);
}

6. Escribe un programa en C, que muestra una cadena invertida, a partir de una cadena ingresada por el usuario.
Yo uso la gets(). . . . La explicacion del uso de fgets() se hará en la clase.

/*
* Programa para revertir una cadena en C
*/

#include<stdio.h>

int cadena_longitud(char*);
void reverse(char*);

main()
{
char cadena[100];

printf("Ingresa una cadena \n");


//gets(cadena);
fgets(cadena, sizeof(cadena), stdin);
reverse(cadena);

printf("La reversa de la cadena ingresada es \"%s\".\n", cadena);

return 0;
}

void reverse(char *cadena)


{
int longitud, c;
char *inicio, *end, temp;

longitud = cadena_longitud(cadena);
inicio = cadena;
end = cadena;

for (c = 0; c < longitud - 1; c++)


end++;

for (c = 0; c < longitud/2; c++)


{
temp = *end;
*end = *inicio;
*inicio = temp;

inicio++;
end--;
}
}

int cadena_longitud(char *pointer)


{
int c = 0;

while( *(pointer + c) != ’\0’ )


c++;

return c;
}

También podría gustarte

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy