Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: xequielcasaretto en 16 Mayo 2016, 22:20 PM

Título: Agregar un punto al final de una cadena.
Publicado por: xequielcasaretto en 16 Mayo 2016, 22:20 PM
Buenas gente! este será mi primer post(pero no el último) les pido una mano con este ejercicio.
Me piden que luego de ingresar una cadena (puede tener mezcladas minusculas y mayusculas y mas de un espacio entre palabra y palabra) le haga los arreglos necesarios para:
-La primer palabra de la cadena debe estar en mayuscula.
-La primer palabra luego de un punto debe estar en mayuscula.
-La cadena debe finalizar con un punto (si ya lo tiene no hace falta que lo ponga)

He aquí mi "programa" que cumple todo menos con lo de agregar el punto al final (tengo que admitir que lo que hice fue bastaaaante cabeza de tacho y lo forcé, pero no es la idea:
JELPMEEE!!
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#define p printf
#define s scanf
void oracion(char*, char*);


int main()
{
    int N;
    char *t1, *t2;

    p("Ingrese la cantidad de caracteres de la oracion: ");
    s("%d",&N);

    t1=(char*) malloc((N+1)*sizeof(char));
    t2=(char*) malloc((N+2)*sizeof(char));
    if(t1==NULL || t2==NULL)
        {
            p("\n No hay suficiente memoria");
            getch();
            exit(1);
        }
    p("\n Ingrese la oracion: ");
    fflush(stdin);
    gets(t1);

    oracion(t1,t2);

    p("\n La oracion ingresada con los arreglos es: %s. ",t2);

    free(t1);
    free(t2);
    getch();



}

void oracion (char *a, char *b)
{
    int i=0;

    while(*a)
    {
        while(*a==' ') a++;

            while((*a) && *a!=' ' && *a!='.')
            {
                if(i==0)
                {
                    if(*a>='a' && *a<='z') *b=*a-32;
                    else *b=*a;

                }
                else
                {
                    if(*a>='A' && *a<='Z') *b=*a+32;
                    else *b=*a;
                }
                a++;
                b++;
            }
        if(*a==' ')
        {
            i=1;
            *b=*a;
            a++;
            b++;

        }
        else
        {
            i=0;
            *b=*a;
            b++;
            *b=' ';
            a++;
            b++;

        }
    }
    *a=*b;
    b--;
    *b='.';
    }


Gracias!!  ;D


Título: Re: Agregar un punto al final de una cadena.
Publicado por: ivancea96 en 16 Mayo 2016, 22:28 PM
En el peor de los casos, cuando acabes con lo que tienes hecho, ve al final de la cadena, retrocede hasta encontrar una letra, y coloca el punto.