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

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


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

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Programacion en C basico
« en: 12 Septiembre 2011, 22:52 pm »

Hola soy nuevo y realmente se que en lo que he leido aqui apoyan en dudas y tengo una gran duda....

sinceramente tiene como 2 semanas  en esto ahora que baje infinidad de manuales en C y C++ para guiarme por un ejemplo no allo tal respuesta..

esta es la duda...

como seria la logica para poder iniciar con cero en un ingreso de datos... solo me gustaria saber que sentencia usar he usado if, swich, for pero cuando ingreso 01 se me cierra o no me compila he usado hasta case pero sinceramente creo que ese no puede ser en este caso... gracias


En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.966


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Programacion en C basico
« Respuesta #1 en: 12 Septiembre 2011, 23:58 pm »

Deja tu codigo, no entiendo cual es el problema, si haces fgets (con stdin) + sscanf (con %d) al poner 01 el valor es 1.


En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
Anta

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: Programacion en C basico
« Respuesta #2 en: 13 Septiembre 2011, 00:29 am »

Deja tu codigo, no entiendo cual es el problema, si haces fgets (con stdin) + sscanf (con %d) al poner 01 el valor es 1.

Citar
#include <stdio.h>
#include <conio.h>
void main ()
{
int A,R[6],i;
clrscr();
printf ("Programa que........ \n");
    for (i=0; i<=6; i++)
   {
    printf ("Introduce numeros binarios \n");
    scanf ("%d",& R);
    if (R>1)
      printf (" No introduciste numero binario; \n  ");
    }
    A=3;
    for (i=0; i<=6; i++)
    {
        if (R==A)
         printf ("LOS NUMEROS NO LLEVAN SECUENCIA \n ");
          else
        if(R<=1)
        {
       A=R;
       printf("numeros aceptados \n");
             }    }
             printf("Los numeros son:");
             for (i=0; i<=6; i++)
                  printf("%d",R);
      getch();
   }

me refiero a un ingreso de numeros ceros y unos por ejemplo ingresar numeros:
01010101 y que me lo acepte pero que al ingresar 0010101 no, he estado probando muchas combinaciones de sentencias pero nose si este bien
En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Programacion en C basico
« Respuesta #3 en: 13 Septiembre 2011, 00:55 am »

Revisa los temas fijos de este foro, descarga un buen libro de C y estudia este paso a paso.

Ello porque en el programa tienes muchos errores de concepto:

* Evita el uso de conio (no es necesario en tu programa) y define la función principal como "int main(void) ..." o "int main() ..." indicando su valor de retorno con al menos "return 0;".

* En C y C++ cuando se declara un array se indica su numero de elementos N y se accede a estos mediante los indices 0 a N-1. Tu iteras siete veces (de forma inocua) pero lo correcto, de nuevo, son seis.

* La llamada:
Código
  1. scanf ("%d",& R);
Técnicamente es correcta pero es un error lógico ya que solo lees el valor del primer elemento del array (deberia ser "&R[ i ]" o su equivalente "R + i").

* Después comparas "R" contra diversos valores lo cual no es correcto ya que "R" en el contexto en que se utiliza resulta en la dirección en memoria del array, deberías utilizar "R[ i ]".


Finalmente no puedes utilizar scanf y similares para leer números en base 2, en su lugar utiliza fgets para leer una linea de texto y strtol para obtener el numero.

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
Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.966


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Programacion en C basico
« Respuesta #4 en: 13 Septiembre 2011, 01:11 am »

R deberia ser de 8 elementos. ¿Se supone que es un byte, no?

Código:
for (i = 0; i < 8; i++)

El [ i ] no sale dentro de la etiqueta codigo lamentablemente.

Despues de hacer el bucle para obtener los valores podrias hacer otro con x = 0; x < 4 (no incluido) y la condicion R[x * 2] diferente de cero o R[x * 2 + 1] diferente de uno determinaria facilmente si se cumple el postulado de que las parejas sean siempre 01. Si es que eso era lo que querias ... ¿De donde sale esta historia?

PD. Es introdujiste.
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
Anta

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: Programacion en C basico
« Respuesta #5 en: 13 Septiembre 2011, 02:10 am »

kk lo intentare si he descargado muchos manuales de C incluidos los de esta pagina...

lo que intento hacer es que por ejemplo un numero limitado de digitos digamos [10] en el cual solo acepte  010101010101 no importa si es 01 o 0101 o 01010101 y que cualquier digito que se ponga 01001 este mal y arroje un error y em regrese de nuevo ala insercion de digitos solo que sea intercalados los ceros y unos... tratare de intentarlo gracias por la ayuda  :-*
En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Programacion en C basico
« Respuesta #6 en: 13 Septiembre 2011, 05:42 am »

En ese caso debes leer la entrada como cadena y comparar los caracteres pares contra '0' y los impares contra '1'.

Mas o menos asi:
Código
  1. char cad[ALGUN_VALOR];
  2. int i;
  3.  
  4. /* Se lee la cadena almacenando esta en "cad" */
  5.  
  6. for (i = 0; cad[i] == '0' + (i % 2); i++)
  7.   ;
  8. if (cad[i] == '\0')
  9.   puts("Cadena valida");
  10. else
  11.   puts("Cadena NO valida");

Muy limitado pero funciona. Una vez manejes mas del lenguaje la podrias mejorar (por ejemplo descartando el espacio blanco al principio de la cadena).

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
Anta

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: Programacion en C basico
« Respuesta #7 en: 13 Septiembre 2011, 06:09 am »

muchas gracias en vdd no imagine hacer las comparaciones de ese tipo todos los ejemplos que lei solo decia q cero era = a valor nulo y que para que pudiera dar 1 tendria q poner lo q es [--i].... muchas gracias lo intentare

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

main()

{
    char n[10]={0101010101};
    int i;
   
     printf("Ingresar Digitos\n");
      scanf("%c", &n);
     
      for (i = 0; n == '0' + (i % 2); i++);
        if (n == '\0')
       puts("Cadena valida\n");
         else
           puts("Cadena NO valida\n");
           
       return 0;
           
}


se me  facilito mucho intentarlo con tu codigo pero no logro cuando lo ejecuto que el exe se quede abierto solo pongo datos me los valida en el rango y se cierra casi al instante uso el DEV c++ sera que sea por eso? :-[
« Última modificación: 13 Septiembre 2011, 07:02 am por Anta » En línea

satu


Desconectado Desconectado

Mensajes: 301

Siempre aprendiendo


Ver Perfil WWW
Re: Programacion en C basico
« Respuesta #8 en: 13 Septiembre 2011, 09:32 am »

Hola

Escribe esto justo antes del return 0

Código
  1. while(getchar()!='\n') ; //Esto limpa el buffer de entrada
  2. getchar(); //Esto espera a que pulses una tecla
  3.  

Saludos
« Última modificación: 7 Octubre 2011, 15:43 pm por satu » En línea

Breakbeat como forma de vida
rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Programacion en C basico
« Respuesta #9 en: 13 Septiembre 2011, 14:56 pm »

No debes utilizar "%c" en la llamada a scanf ya que esta lee un solo carácter, en su lugar debes utilizar "%s" para leer una palabra. Y hay que eliminar el operador "dirección de" (el '&') ya que no es necesario cuando se trata de un array.

En la declaración del array su inicialización esta mal y no es necesaria (scanf no permite una validación rigurosa, en el mejor de los casos se debe comprobar su valor de retorno). El primer condicional "if" esta mal al comparar "n" cuando debería ser "n[ i ]". También el for esta mal.

Hay que agregar la comprobación para verificar que el numero de caracteres en la palabra sea par.


Y no debes incluir el encabezado <string.h>, de nuevo consigue un buen libro.

Con las correcciones (colocaría solo un fragmento pero se tiene que corregir casi todo):
Código
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. int main(void)
  5. {
  6.   char n[10];
  7.   int i;
  8.  
  9.   printf("Ingresar Digitos\n");
  10.   scanf("%s", n);
  11.  
  12.   for (i = 0; n[i] == '0' + (i % 2); i++)
  13.      ;
  14.   if (n[i] == '\0' && i % 2 == 0)
  15.      puts("Cadena valida\n");
  16.   else
  17.      puts("Cadena NO valida\n");
  18.  
  19.   return 0;
  20.  
  21. }

En cuanto a Dev-C++ lo mejor es cambiar a otro entorno (no recuerdo uno (salvo ese) que no soporte la generacion de la pausa de forma automatica).

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] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Programación por Diversión: Núcleo Básico (2012-06-21)
Programación General
~ 1 2,335 Último mensaje 27 Junio 2012, 17:49 pm
por Kefren
Duda ejercicio basico de programacion
Programación Visual Basic
arts 2 1,866 Último mensaje 24 Enero 2013, 21:03 pm
por arts
Duda ejercicio basico de programacion
.NET (C#, VB.NET, ASP)
arts 5 3,163 Último mensaje 25 Enero 2013, 16:59 pm
por arts
programacion c basico
Programación C/C++
6TUNX4T 1 1,775 Último mensaje 2 Mayo 2014, 06:35 am
por rir3760
Ayuda con un programa básico (nuevo en programación)
Programación C/C++
juanma0311 3 2,397 Último mensaje 25 Julio 2014, 10:03 am
por Eternal Idol
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines