[ Foro de C ]

Capítulo 7: Funciones

14-Jul-2012 20:01
Rudi Merlos Carrion
4 Respuestas

Hola

En el ejercicio 7.4.v (Crear una funcion que devuelva la primera letra de una cadena de texto. Probar esta funcion para calcular la primera letra de la frase "Hola") he hecho este código:


#include <stdio.h>

char frase[200];

char caracter(char c){
    sscanf(frase, "%c", &c);
    return c;
}

main(){
    char x;
    printf("Escribe una frase: ");
    scanf(" %[^\n]", frase);
    printf("\nLa primera letra es: %c", caracter(x));
}



La duda la tengo en el ejercicio 7.4.vi (Crear una funcion que devuelva la ultima letra de una cadena de texto. Probar esta
funcion para calcular la ultima letra de la frase "Hola".)

La duda es simple...  estoy completamente atascado y no se por donde empezar. Supongo que será parecido al código anterior pero dandole la vuelta a la cadena, pero no se como.

Gracias


16-Jul-2012 15:07
Rudi Merlos Carrion

Lo conseguí!!!!!

Ejercicio 7.4.vi (Crear una función que devuelva la última letra de una cadena de texto. Probar esta
función para calcular la última letra de la frase "Hola".)


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

char frase[200];

char caracter(char c){
    int i, j, temp;
    j=strlen(frase)-1;
    temp = frase[i];
    frase[i] = frase[j];
    frase[j] = temp;
    sscanf(frase, "%c", &c);
    return c;
}

main(){
    char x;
    printf("Escribe una frase: ");
    scanf(" %[^\n]", frase);
    printf("\nLa Última letra es: %c", caracter(x));
    
    return 0;
}



17-Jul-2012 07:21
Nacho Cabanes (+84)

Haces un par de cosas raras...

En primer lugar, si debe recibir una cadena de texto, el parámetro no será "char c", sino un "char[] cadena" o un "char* cadena"

En segundo lugar, devolver la primera letra es devolver el carácter que hay en la posición 0: cadena[0]

En tercer lugar, usas variables globales, en vez de pasar la cadena como parámetro.

El primer programa podría ser algo como:


#include <stdio.h>

char primerCaracter(char* cadena){
    return cadena[0];
}

int main(){
    char frase[200];
    printf("Escribe una frase: ");
    gets(frase);
    printf("La primera letra es: %c", primerCaracter(frase));
    return 0;
}



Para el segundo ejercicio, las únicas diferencias son el nombre de la función (que debería ser "ultimoCaracter") y que accedes a la posición strlen-1, pero nuevamente, de forma mucho más simple que como tú lo has planteado:


char ultimoCaracter(char* cadena){
   return cadena[ strlen(cadena)-1 ];
}


10-Apr-2013 19:30
Jose Medrano

7.5 v


char PLCT(char texto[])

{
	return texto[0];      
}

main()
{
char texto[] = "Hola";
printf("La primera letra de nuestra cadena es:%c\n",PLCT(texto));
	
	system("pause");
}



7.5 vi


char PLCT(char texto[])

{
	int indice = strlen(texto)-1;
	return texto[indice];      
}

main()
{
	char texto[50];
	printf("Ingrese una cadena de texto: ");
	gets(texto);
	printf("La ultima letra de nuestra cadena es: %c \n", PLCT(texto));
	
	system("pause");
}



10-Apr-2013 23:49
Nacho Cabanes (+84)

Las soluciones son correctas, José.

Aun así, un par de sugerencias:

- Incluye un comentario al principio, que te ayude a saber cual era el propósito del ejercicio.

- Supongo que PLCT es la abreviatura de "Primera Letra de Cadena de Texto"; siendo así, la función de 7.5.vi debería llamarse ULCT.

En cuanto a lo de que tu post apareciera duplicado... todo es posible, el nuevo sistemas está aún en fase de pruebas... de hecho todavía ni siquiera permite hacer todo lo que permitirá dentro de poco.  ;-)






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)