Autor
|
Tema: Programacion en C basico (Leído 5,648 veces)
|
Anta
Desconectado
Mensajes: 5
|
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
Mensajes: 5.966
Israel nunca torturó niños, ni lo volverá a hacer.
|
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
Mensajes: 5
|
Deja tu codigo, no entiendo cual es el problema, si haces fgets (con stdin) + sscanf (con %d) al poner 01 el valor es 1.
#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
Mensajes: 1.639
|
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:
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
Mensajes: 5.966
Israel nunca torturó niños, ni lo volverá a hacer.
|
R deberia ser de 8 elementos. ¿Se supone que es un byte, no? 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
Mensajes: 5
|
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
Mensajes: 1.639
|
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: char cad[ALGUN_VALOR]; int i; /* Se lee la cadena almacenando esta en "cad" */ for (i = 0; cad[i] == '0' + (i % 2); i++) ; if (cad[i] == '\0') else 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
Mensajes: 5
|
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 #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
Mensajes: 301
Siempre aprendiendo
|
Hola Escribe esto justo antes del return 0 while(getchar()!='\n') ; //Esto limpa el buffer de entrada getchar(); //Esto espera a que pulses una tecla
Saludos
|
|
« Última modificación: 7 Octubre 2011, 15:43 pm por satu »
|
En línea
|
Breakbeat como forma de vida
|
|
|
rir3760
Desconectado
Mensajes: 1.639
|
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): #include <stdio.h> #include <string.h> int main(void) { char n[10]; int i; for (i = 0; n[i] == '0' + (i % 2); i++) ; if (n[i] == '\0' && i % 2 == 0) else puts("Cadena NO valida\n"); return 0; }
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
|
|
|
|
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
|
27 Junio 2012, 17:49 pm
por Kefren
|
|
|
Duda ejercicio basico de programacion
Programación Visual Basic
|
arts
|
2
|
1,866
|
24 Enero 2013, 21:03 pm
por arts
|
|
|
Duda ejercicio basico de programacion
.NET (C#, VB.NET, ASP)
|
arts
|
5
|
3,163
|
25 Enero 2013, 16:59 pm
por arts
|
|
|
programacion c basico
Programación C/C++
|
6TUNX4T
|
1
|
1,775
|
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
|
25 Julio 2014, 10:03 am
por Eternal Idol
|
|