Autor
|
Tema: No entiendo que esta mal(en C) (Leído 3,087 veces)
|
oxi12pek
Desconectado
Mensajes: 15
|
Hola a todos!!! Soy nuevo en este foro y lo que mayormente me a impulsado a hacerme parte de el es la frustracion cuando no se porque el programa que e creado no funciona como querria. En este caso e creado este programa que lee dos palabras y comprueba si son o no anagramas. Todo va como la seda hasta que llega el momento donde la funcion equal_array devuelve true o false. Ayuda por favor. Frustraccion... . Aqui os dejo el programa copiado tal y como lo tengo: #include<stdio.h> #include<stdbool.h> #define N 26 bool equal_array(int counts1[N],int counts2[N]) { int i,x=0; printf("Contador final: "); for(i=0;i<N;i++){ counts1 -=counts2; printf("%d ",counts1); } printf("\n"); for(i=0;i<N;i++){ if(counts1!=0){ x++;} } printf("X: %d",x); printf("\n"); if(x=0) return true; if(x>0)return false; }
int main(void) { char x; int a[N],b[N]; int i,j; printf("Escribe dos palabras y sabras si son anagramas on no\n"); //ARRAYS A CERO// for(i=0;i<N;i++){ a=0; b=0; } //LECTURA DE LA PRIMERA PALABRA// printf("Escribe la primera palabra: "); for(i=0;i<N;i++){ scanf("%c",&x); if((x>='A')&&(x<='Z')) a[x-65]++; if((x>='a')&&(x<='z')) a[x-97]++; if(x=='\n') break; } //COMPROBACION LECTURA DE LA PRIMERA PALABRA// printf("Contador de la primera palabra: "); for(i=0;i<N;i++) printf("%d ",a); printf("\n"); read_word(a);
//LECTURA DE LA SEGUNDA PALABRA// printf("Escribe la segunda palabra: "); for(i=0;i<N;i++){ scanf("%c",&x); if((x>='A')&&(x<='Z')) b[x-65]++; if((x>='a')&&(x<='z')) b[x-97]++; if(x=='\n') break; } //COMPROBACION LECTURA DE LA SEGUNDA PALABRA// printf("Contador de la segunda palabra: "); for(i=0;i<N;i++) printf("%d ",b); printf("\n");
//FINAL:COMPROBACION DE SI ES O NO ANAGRAMA// printf(" if(equal_array(a,b)==true) printf("Las palabras son anagramas\n"); else printf("Las palabras no son anagramas\n");
}
|
|
|
En línea
|
Algun dia lo sere...
|
|
|
$Edu$
Desconectado
Mensajes: 1.842
|
Que error te da?
//FINAL:COMPROBACION DE SI ES O NO ANAGRAMA// printf("
Eso no esta incompleto?
|
|
|
En línea
|
|
|
|
rir3760
Desconectado
Mensajes: 1.639
|
Otro error se encuentra en la función "equal_array": if(x=0) return true; if(x>0)return false;
Utilizas el operador de asignación "=" cuando debería ser el de comparación "==", debido a ello el valor de retorno de la función es "no definido". Edito: Considerando lo que hace la funcion "equal_array" su codigo es excesivamente largo, ella se puede reducir a: bool equal_array(int a[],int b[]) { int i; for (i = 0; i < N && a[i] == b[i]; i++) ; return i == N; }
Un saludo
|
|
« Última modificación: 2 Noviembre 2012, 16:27 pm por rir3760 »
|
En línea
|
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly. -- Kernighan & Ritchie, The C programming language
|
|
|
oxi12pek
Desconectado
Mensajes: 15
|
UI ese printf se me a colado.Lo siento. En cuanto a la funcion equal_array podrias explicar un poco tu version, es que no lo veo muy claro. Muchas gracias, ya funciona. Como se nota que soy un misero nobato... Soys unos maquinas gracias!!!
|
|
|
En línea
|
Algun dia lo sere...
|
|
|
Blaster
Desconectado
Mensajes: 190
|
Aqui tienes uno mio: #include <stdio.h> #include <stdlib.h> #include <string.h> int anagrama(char cad[], int j) { char str1[100]; int k,l; l=0; for(k=0; k<strlen(cad); k++) if (k!=j) { str1[l] = cad[k]; l++; } return 0; } int main(){ char cadena1[100], cadena2[100], letra; int i,j; printf("Introduzca las dos cadenas: "); scanf("%s" "%s" ,cadena1 , cadena2 ); printf("Las cadenas no son anagramas\n"); else { for(i=0; i<strlen(cadena1); i++) { for (j =0; j < strlen(cadena2 ); j ++) { if (cadena1[i] == cadena2[j]) { anagrama(cadena2,j); break; } } } printf("Las cadenas son anagramas\n"); else printf("Las cadenas no son anagramas\n"); } return 0; }
Espero te sirva
|
|
|
En línea
|
|
|
|
oxi12pek
Desconectado
Mensajes: 15
|
Es una buena manera de conseguir el mismo resultado. En mi caso se me especificaba de que manera hacerlo por lo tanto no podia utilizar la libreria de string,etc. Pero muchisimas gracias de todos modos porque me a servido para entender otras cosas. Gracias a todos por tomaros un tiempo en responder!!! Saludos
|
|
|
En línea
|
Algun dia lo sere...
|
|
|
oxi12pek
Desconectado
Mensajes: 15
|
Oye y aqui en los punteros que ocurre. Haciendo indireccion estoy asignando todos los valores del array sumados a x no??? void avg_sum(double a[],int n,double *avg, double *sum) { int i; for(i=0;i<n;i++) *sum+=a; *avg=(*sum/n); } int main(void) { double A[]={1,2,3,4,5,6.6,7.7,88.8,1,4},x,y; int j;
avg_sum(A,j,&y,&x); printf("Suma total del array: %f\n",x); printf("Promedio del array: %f\n",y); }
|
|
|
En línea
|
Algun dia lo sere...
|
|
|
oxi12pek
Desconectado
Mensajes: 15
|
LO SIENTOOOOO. AHORA MISMO ME HE DADO CUENTA DE QUE NO HE INICIALIZADO J. LO SIENTO DE NUEVO!!
|
|
|
En línea
|
Algun dia lo sere...
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
No entiendo que es lo que pasa en esta red.
Hacking Wireless
|
magito
|
7
|
5,505
|
14 Junio 2010, 12:31 pm
por lamaruja
|
|
|
No entiendo esta linea del programa
Programación C/C++
|
ProyectoX
|
5
|
2,632
|
30 Noviembre 2012, 23:11 pm
por ProyectoX
|
|
|
No entiendo esta lógica [arreglos] [C]
Programación C/C++
|
barnix456
|
6
|
3,529
|
10 Diciembre 2012, 23:56 pm
por barnix456
|
|
|
Ayuda no entiendo esta parte del codigo, soy principiante
Programación C/C++
|
spiderboot
|
3
|
3,326
|
30 Enero 2014, 18:14 pm
por spiderboot
|
|
|
No entiendo por qué se puede usar esta función ¡si no debiera!
Programación C/C++
|
tecno46
|
4
|
2,270
|
6 Noviembre 2014, 20:49 pm
por Eternal Idol
|
|