elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  secuencia digital
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: secuencia digital  (Leído 2,651 veces)
ccm777

Desconectado Desconectado

Mensajes: 2


Ver Perfil
secuencia digital
« en: 11 Noviembre 2013, 20:57 pm »

tengo que hacer un ejercicio en el que calcule una estadistica para una secuencia digital:se obtiene una secuencia formada por 1 y 0 y hay que calcular el numero de tansiciones y el valor medio, tengo esto pero me falla
#include <stdio.h>
int main(void)
{
   int num;
   int contador;
   double suma;
   double media;
   int anterior;
   int actual;
   
   suma=0.0;
   contador=0;
   
   printf("Escriba una secuencia:");
   scanf("%d",&num);
   actual=1;
   anterior=0;
   
   
   while((num=='0')||(num=='1')){
      while((actual=='0'&& anterior=='1')||(actual=='1'&& anterior=='0')){
         contador=contador+1;
         anterior=actual;
         
      }
   }
   printf("El numero de saltos es: %d",contador);
   
   while((num=='0')||(num=='1')){
      suma=suma+num;
      
      contador=contador+1;

      media=suma/contador;
   
   }   
   printf("La suma es:%g",suma);   
   printf("contador: %d",contador);   
   printf("\n La media es: %g",media);   
   
   return 0;
}


En línea

Almapa

Desconectado Desconectado

Mensajes: 111


Ver Perfil
Re: secuencia digital
« Respuesta #1 en: 11 Noviembre 2013, 21:56 pm »

Tiene algo que ver con este otro?
http://foro.elhacker.net/programacion_cc/contador_de_dos_caracteres_consecutivos_en_c-t402507.0.html


En línea

ccm777

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: secuencia digital
« Respuesta #2 en: 12 Noviembre 2013, 12:56 pm »

si gracias ya encontre el fallo para contar los saltos pero sigo sin encontrar el de la suma
En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: secuencia digital
« Respuesta #3 en: 12 Noviembre 2013, 15:13 pm »

Tu programa no funcionara correctamente ya que lees el numero como un entero y después tratas de procesar cada uno de sus dígitos con bucles como este:
Código
  1. printf("Escriba una secuencia:");
  2. scanf("%d", &num);
  3.  
  4. /* ... */
  5.  
  6.  
  7. while ((num == '0') || (num == '1')){

En su lugar puedes leer la secuencia de dígitos binarios como una cadena con scanf y a continuación realizas el proceso de conteo de transiciones y media (NPI). Mas o menos así:
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main(void)
  5. {
  6.   char bit[128];
  7.   int num_bits;
  8.   int i;
  9.  
  10.   printf("Introduce el numero: ");
  11.   fflush(stdout);
  12.   if (scanf("%127[01]%n", bit, &num_bits) != 1)
  13.      return EXIT_FAILURE;
  14.  
  15.   /* Algun proceso, por ejemplo impresion de los bits */
  16.   printf("Valor de cada bit (%d):\n", num_bits);
  17.   for (i = 0; i < num_bits; i++)
  18.      printf("bit[%2d] == \'%c\'\n", i, bit[i]);
  19.  
  20.   return EXIT_SUCCESS;
  21. }

Un saludo
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
kikian94

Desconectado Desconectado

Mensajes: 66


Ver Perfil
Re: secuencia digital
« Respuesta #4 en: 18 Noviembre 2013, 18:59 pm »

hola, he hecho el programa pero me da error y no lo encuentro, creo que esta todo bien, pero siempre me dice caracter erroneo
Código
  1. int main/*
  2. *
  3. *
  4. *
  5. */
  6.  
  7. for(i=0;i<MAXC;i++){
  8. cadena[i]='0';
  9. }
  10.  
  11. printf("Secuencia:");
  12. fflush(stdout);
  13. gets(cadena);
  14. fflush(stdin);
  15. errorcadena=estadisticaSecuencia(cadena,&transicciones,&mediatotal);
  16. if(errorcadena==CARACTERERROR){
  17. printf("caracter erroneo");
  18.  
  19. }else{
  20. printf("la media es:%d",mediatotal);
  21. printf("numero de transiciones: %d", transicciones);
  22. }
  23. /*
  24. *
  25. *
  26. *
  27. **/
  28. return 0;
  29.  
  30. int estadisticaSecuencia(char cadenaOriginal[], int *transiciones, int *media){
  31.  
  32. int error=CORRECTO;
  33.  
  34. int contador=0;
  35. int i=0;
  36. char caracter;
  37. char caracterAnterior;
  38. int suma=0;
  39.  
  40.  
  41. while(cadenaOriginal[i]!='\n' && error==CORRECTO){
  42.      caracter=cadenaOriginal[i];
  43.  
  44.  
  45. if(caracter!='1' && caracter!='0' && caracter !='\0'){
  46.  
  47. error= CARACTERERROR;
  48. }
  49. else{
  50. if(caracter=='1'){
  51. suma++;
  52. contador++;
  53. }
  54. if(caracter=='0'){
  55. contador++;
  56. }
  57. if( (caracter=='1' && caracterAnterior=='0') || (caracter=='0' && caracterAnterior=='1')){
  58. (*transiciones)++;
  59.  
  60. }
  61. caracterAnterior = caracter;
  62.  
  63. }
  64. i++;
  65. }
  66. (*media)=suma/contador;
  67.  
  68. return error;
  69. }
  70.  
  71.  
  72.  
  73.  
  74.  
En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: secuencia digital
« Respuesta #5 en: 19 Noviembre 2013, 02:31 am »

he hecho el programa pero me da error y no lo encuentro, creo que esta todo bien, pero siempre me dice caracter erroneo
Para verificar que el programa funcione correctamente debes publicar el código fuente completo.

En cuanto al fragmento que pones no deberías utilizar gets y fflush(stdin). Mas información en la pagina |Lo que no hay que hacer en C/C++. Nivel basico|

Y en la función "estadisticaSecuencia" asumes que la cadena pasada como su primer argumento incluye el carácter '\n' pero eso no sucederá porque lees la linea con gets (esta lee una linea almacenándola en la dirección indicada pero sin incluir el avance de linea).

Un saludo
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
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Secuencia fibonacci
Java
Erik# 7 16,682 Último mensaje 1 Octubre 2008, 18:04 pm
por Sk9ITk5Z
Automatizar una secuencia en una web.
Programación Visual Basic
kas8355 4 2,563 Último mensaje 29 Abril 2009, 19:36 pm
por kas8355
Secuencia de números en C
Programación C/C++
relaxingcup 1 2,189 Último mensaje 18 Marzo 2023, 01:22 am
por K-YreX
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines