devolver el numero de caractere

nalan_874
18 de Marzo del 2010
Wenas, a ver si me ayudais, tengo que hacer una funcion que me devuelva el numero de caracteres que tiene la palabra mas larga que contiene una cadena de caracteres. Mi codigo es el siguiente, pero no me da el resultado deseado, gracias de ante mano

largo_palabra = 0;
palabra_mas_larga = 0;

for (i = 0; i < *largo - 1; i++) {
if (txt[i] != '*') {
largo_palabra++;
}

auxiliar = largo_palabra;

if (palabra_mas_larga <= auxiliar) {
palabra_mas_larga = auxiliar;
}
}

zxsplinter
18 de Marzo del 2010
Justo despues de asignar el auxiliar creo que debes de reinicia tu variable " largo_palabra" a 0 ... para que asi cuente los caracteres de la siguiente palabra desde 0.

tengo mi duda tambien en como cuentas los caracteres por palabra ...

me gustaria saber cual es el texto que das como entrada y el resultado que te está arrojando

hasta luego y suerte

nalan_874
18 de Marzo del 2010
Te mando el programa que estoy haciendo para que lo veas mejor, gracias.

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

#define maximo 100
#define fila 10
#define columna 10

void Menu_Principal();
void Opcion_Incorrecta();
void Insercion_Especial_Texto(char mtrz_txt[][columna], char txt[], int *largo);
void Imprimir_Matriz_Texto(char mtrz_txt[][columna]);
void Borrar_Texto(char mtrz_txt[][columna], char txt[], int *largo);
void Contar_Caracteres(int *largo, char txt[]);
void Busqueda_Palabra(char txt[], int *largo);
void Encriptamiento_Texto();

int main()
{
int opcion, repetir, longitud;
char matriz_texto[fila][columna];
char texto[maximo];

repetir = 1;
longitud = 0;

do {

Menu_Principal();
scanf("%d", &opcion);
printf("n");

switch (opcion) {
case 1 :
Insercion_Especial_Texto(matriz_texto,texto, &longitud);
Imprimir_Matriz_Texto(matriz_texto);
break;
case 2 :
Borrar_Texto(matriz_texto, texto, &longitud);
Imprimir_Matriz_Texto(matriz_texto);
break;
case 3 :
Contar_Caracteres(&longitud, texto);
break;
case 4 :
Busqueda_Palabra(texto, &longitud);
break;
case 5 :
Encriptamiento_Texto();
break;
case 6 :
repetir = 0;
break;
default :
Opcion_Incorrecta();
break;
}
} while (repetir == 1);

return 0;
}

void Menu_Principal() {

system ("cls");
printf("n");
printf("n");
printf(" ******************************************n");
printf(" ** EDITOR DE TEXTO **n");
printf(" ******************************************nnn");
printf(" ******************************************n");
printf(" ** ELIGE UNA DE LAS SIGUIENTES OPCIONES **n");
printf(" ** **n");
printf(" ** 1 - Insercion especial Texto **n");
printf(" ** 2 - Borrar Texto **n");
printf(" ** 3 - Contar Caracteres **n");
printf(" ** 4 - Busqueda de palabra **n");
printf(" ** 5 - Encriptamiento de texto **n");
printf(" ** 6 - Salir **n");
printf(" ** **n");
printf(" ******************************************nnn");
printf(" Opcion: ");

}

void Opcion_Incorrecta() {

system ("cls");
printf("n");
printf("n");
printf(" ******************************************n");
printf(" ******************************************n");
printf(" ** **n");
printf(" ** OPCION INCORRECTA **n");
printf(" ** **n");
printf(" ** ELIGE UNA DE LAS OPCIONES DEL MENU **n");
printf(" ** **n");
printf(" ******************************************n");
printf(" ******************************************n");
printf("n");
printf("n");
system("pause");

}

void Insercion_Especial_Texto(char mtrz_txt[][columna], char txt[], int *largo) {

int i, f, c;

system ("cls");
printf("n");
printf("n");
printf(" ******************************************n");
printf(" ** INSERCION ESPECIAL DE TEXTO **n");
printf(" ******************************************nnn");
printf(" ******************************************n");
printf(" ** ESCRIBE UN TEXTO NO SUPERIOR A **n");
printf(" ** CIEN CARACTERES ACABADO EN PUNTO **n");
printf(" ******************************************n");
printf("n");
printf("n");
printf(" TEXTO : ");
fflush(stdin);
gets(txt);
*largo = strlen(txt);

// Para que se vean claros los espacios ponemos el caracter '*'.
i = *largo;
while (i < maximo) {
txt[i] = '*';
i++;
}
// Se pasan los caracteres de la cadena de caracteres
// a la matriz declarada.
i = 0;
while (i < maximo) {
for (f = 0; f < fila; f++) {
for (c = 0; c < columna; c++) {
if (txt[i] == ' ') {
mtrz_txt[f][c] = '*';
}
else {
mtrz_txt[f][c] = txt[i];
}
i++;
}
}
}

printf("n");
printf("n");
system("pause");

}

void Imprimir_Matriz_Texto(char mtrz_txt[][columna]) {

int f, c;

system ("cls");
printf("n");
printf("n");
printf(" ******************************************n");
printf(" ** INSERCION ESPECIAL DE TEXTO **n");
printf(" ******************************************nnn");
printf(" ******************************************n");
printf(" ** EL TEXTO INTRODUCIDO EN LA MATRIZ **n");
printf(" ** QUEDA DE LA SIGUIENTE FORMA **n");
printf(" ******************************************n");
printf("n");
printf("n");

// Escribe los caracteres en la matriz.
for (f = 0; f < fila; f++) {
printf("n");
for (c = 0; c < columna; c++) {
printf("%c", mtrz_txt[f][c]);
}
}

printf("n");
printf("n");
system("pause");

}

void Borrar_Texto(char mtrz_txt[][columna], char txt[], int *largo) {

int f, c, i;

system ("cls");
printf("n");
printf("n");
printf(" ******************************************n");
printf(" ** BORRADO DEL TEXTO ESPECIAL **n");
printf(" ******************************************nnn");
printf(" ******************************************n");
printf(" ** PROCEDEMOS AL BORRADO **n");
printf(" ** DEL TEXTO DE LA MATRIZ **n");
printf(" ******************************************n");
printf("n");
printf("n");

// Borramos la matriz_texto llenandola de '*'.
for (f = 0; f < fila; f++) {
for (c = 0; c < columna; c++) {
mtrz_txt[f][c] = '*';
}
}

// Borramos el texto llenandolo de '*'.
for (i = 0; i < *largo; i++) {
txt[i] = '*';
}

// Borramos la longitud del texto anterior.
*largo = 0;

printf("n");
printf("n");
system("pause");

}

void Contar_Caracteres(int *largo, char txt[]) {

char caracter;
int contar, i;

system ("cls");
printf("n");
printf("n");
printf(" ******************************************n");
printf(" ** CONTAR CARACTERES **n");
printf(" ******************************************nnn");
printf(" ******************************************n");
printf(" ** CONTAMOS LAS VECES QUE APARECE EL **n");
printf(" ** CARACTER QUE CLICKAMOS EN EL TEXTO **n");
printf(" ******************************************n");
printf("n");
printf("n");
printf(" EL TEXTO MIDE: %d CARACTERES.",*largo);
printf("n");
printf("n");
printf(" ESCRIBE EL CARACTER A CONTAR: ");
scanf("%s", &caracter);

contar = 0;
for (i = 0; i < *largo; i++) {
if (txt[i] == caracter) {
contar++;
}
}

printf("n");
printf(" EL CARACTER APARETE: %d"" VECES.", contar);
printf("n");
printf("n");
system("pause");

}

void Busqueda_Palabra(char txt[], int *largo) {

int i, largo_palabra, palabra_mas_larga, auxiliar;


system ("cls");
printf("n");
printf("n");
printf(" ******************************************n");
printf(" ** BUSQUEDA DE PALABRAS **n");
printf(" ******************************************nnn");
printf(" ******************************************n");
printf(" ** BUSCAMOS LA PALABRA MAS LARGA **n");
printf(" ** Y CONTAMOS SU NUMERO DE CARACTERES **n");
printf(" ******************************************n");
printf("n");
printf("n");

i = 0;
largo_palabra = 0;
auxiliar = 0;
palabra_mas_larga = 0;

while (txt[i] != '.') {
if (txt[i] != '*') {//antonio;alfaro;
largo_palabra++;//7;6
}
if (txt[i] == '*') {
palabra_mas_larga = largo_palabra;//aux = 7;aux = 6
largo_palabra = 0;//0;0
}
if (largo_palabra > palabra_mas_larga) {//7>=0;6>=7;
palabra_mas_larga = largo_palabra;//p=7;
}
i++;
}

printf(" LA PALABRA MAS LARGA ES DE: %d"" LETRAS.", palabra_mas_larga);

printf("n");
printf("n");
system("pause");

}

void Encriptamiento_Texto() {

system ("cls");
printf("n");
printf("n");
printf(" ******************************************n");
printf(" ** ENCRIPTAMIENTO DEL TEXTO **n");
printf(" ******************************************nnn");
printf(" ******************************************n");
printf(" ** ENCRIPTAMOS EL TEXTO ANTERIOR **n");
printf(" ** TAL Y COMO NOS INTERESA **n");
printf(" ******************************************n");
printf("n");
printf("n");
printf(" TEXTO: ");

printf("n");
printf("n");
system("pause");

}