Autor
|
Tema: Problema con contador de palabra en C (Leído 7,212 veces)
|
Blaster
Desconectado
Mensajes: 190
|
Alguien me puede echar una mano con este codigo que no me compila me tira este error: error: lvalue required as increment operand
Y aqui esta el codigo que llevo: #include <stdio.h> #include <stdlib.h> #include <string.h> int main(void) { char frase[] = "Hola como estas Hola como te va Hola amigo"; char palabra[] = {"Hola"}; int lon = strlen(palabra); int i, j = 0; while(*frase != '\0'){ i = 0; while(*frase != ' ' || *frase != '\0'){ frase++; // Error en esta linea i++; } if(strncmp(frase - lon, palabra, lon)==0) j++; if(*frase != '\0') frase++; // Y aqui } printf("La palabra Hola se repite %d veces", j); return 0; }
Saludos
|
|
« Última modificación: 30 Mayo 2013, 21:11 pm por mcKicrO »
|
En línea
|
|
|
|
amchacon
Desconectado
Mensajes: 1.211
|
No lo puedo probar pero intenta cambiar los corchetes por un *: char frase[] = "Hola como estas Hola como te va Hola amigo";
char* frase = "Hola como estas Hola como te va Hola amigo";
|
|
|
En línea
|
|
|
|
Blaster
Desconectado
Mensajes: 190
|
amchacon he probado la forma que me indicaste me lanza uno peor de igual forma estoy buscado por la red informacion al respecto
Saludos
|
|
|
En línea
|
|
|
|
Blaster
Desconectado
Mensajes: 190
|
Hola he intentado hacerlo de esta forma pero sigue sin funcionar este me compila pero al ejecutarlo me indica que mi programa quiere leer una area de memoria que no esta disponible como puedo correjirlo #include <stdio.h> #include <stdlib.h> #include <string.h> int main() { char frase[] = "Hola como estas Hola como te va Hola amigo"; char palabra[] = { "Hola" }, auxiliar[10]={0}; int lon = strlen(palabra); int i, j = 0; do{ while(frase[i] != '32') { auxiliar[i] = frase[i]; i++; } auxiliar[i]='\0'; if(i == lon && strcmp(auxiliar, palabra) == 0) j++; if(frase[i] != '\0') i++; }while(frase[i] != '\0'); printf("La palabra Hola se repite %d veces", j); return 0; }
Saludos
|
|
« Última modificación: 31 Mayo 2013, 03:41 am por mcKicrO »
|
En línea
|
|
|
|
leosansan
Desconectado
Mensajes: 1.314
|
Pues a mí si me compila, pero con unas pequeñas variaciones #include <stdio.h> #include <stdlib.h> int main() { char frase[] = "Hola como estas Hola como te va Hola amigo"; char palabra[] = "Hola" , aux[10]={0},aux0[10]=""; int i=0, j = 0; do { if(frase[i]=='H' && frase[i+3]=='a') j++; i++; }while(frase[i] != '\0'); printf("La palabra %s se repite %d veces con do-while\n" , palabra, j); /************ otra forma************/ char *p; i=0; for (p = frase; (p = strstr(p, "Hola")) != NULL; p += 2) i++; printf("La palabra %s se repite %d veces con strstr.\n",palabra, j); /************ otra forma************/ int k=0; i=0, j = 0; for (i=0;frase[i] != '\0' ;i++) { if (frase[i] != ' ') aux[k] = frase[i]; k++; if (frase[i] == ' ') { aux[k-1]='\0'; k=0; if (strcmp (palabra,aux)==0) j++; strcpy(aux,aux0); } } printf("La palabra %s se repite %d veces con strcmp", palabra,j); return 0; }
Saluditos!. .... ..
|
|
|
En línea
|
|
|
|
Blaster
Desconectado
Mensajes: 190
|
leosansan me podrias indicar los errores que hay en el ultimo codigo que postee ya no lo puedo ver te lo agradeceria mucho excelente los codigos que posteaste Saludos
|
|
|
En línea
|
|
|
|
xiruko
Desconectado
Mensajes: 438
|
Prueba con: char frase[] = "Hola como estas Hola como te va Hola amigo"; char *p = frase;
Y haz con 'p' todo lo que hacías con 'frase'. Saludos.
|
|
|
En línea
|
|
|
|
leosansan
Desconectado
Mensajes: 1.314
|
int i, j = 0; do{ while(frase[i]!= '32') { ......................................................................
Perdona que no haya mirado mucho el código, pero de entrada tienes un despiste mortal de necesidad, no has inicializado la variable i y a partir de ahí paré de mirar, sorry. Cuando pille más tiempo lo miraré más detalladamente.
Saluditos! ... ..
|
|
|
En línea
|
|
|
|
xiruko
Desconectado
Mensajes: 438
|
Perdona que no haya mirado mucho el código, pero de entrada tienes un despiste mortal de necesidad, no has inicializado la variable i y a partir de ahí paré de mirar, sorry. Cuando pille más tiempo lo miraré más detalladamente.
De hecho en esta misma línea que comentas: while(frase!= '32') O bien pones esto: O bien pones esto: Saludos!
|
|
|
En línea
|
|
|
|
daryo
|
bue ya que postee mire tu code frase++;
no es la forma correcta de recorrer los arrays esto puede funcionar con una variable numerica pero no con una cadena. supongo que intentas moverse un caracter pero lo que haces es en caso de ser variable numerica sumarle uno para recorrer un array es asi char cadena[2]; for (int num=0;num<2;num++) { cadena[num]; }
|
|
« Última modificación: 31 Mayo 2013, 23:57 pm por daryo »
|
En línea
|
buenas
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Ayuda con Seleccionar Palabra por Palabra
Programación Visual Basic
|
RickJack
|
6
|
5,403
|
15 Septiembre 2008, 23:47 pm
por RickJack
|
|
|
Problema con contador en C
« 1 2 »
Programación C/C++
|
-/lnkx/-
|
12
|
20,223
|
7 Diciembre 2011, 18:53 pm
por A.ABAENA
|
|
|
Como hacer /una/palabra/ en vez de ?1=una&2=palabra
« 1 2 3 »
PHP
|
dimitrix
|
20
|
9,705
|
14 Enero 2010, 00:24 am
por dimitrix
|
|
|
Problema contador en C
« 1 2 3 »
Programación C/C++
|
People95
|
22
|
8,628
|
4 Marzo 2014, 04:26 am
por leosansan
|
|
|
Problema con contador en batch.
Scripting
|
Ezko
|
2
|
4,047
|
11 Mayo 2018, 18:58 pm
por Ezko
|
|