Autor
|
Tema: [Ayuda]Problema con variables (Leído 2,173 veces)
|
FrancoMoglia
Desconectado
Mensajes: 3
|
Que tal gente del foto, es mi primer post, sepan disculpar los errores...
tengo un problema con la programacion en C, estoy utilizando la IDE ZinjaI.
el problema es que escribo mi codigo pero al momento de la ejecucion, pide que se ingrese un caracter/numero y los toma de a dos, es decir se saltea uno... les dejo imagenes por si no se entendio lo que he escrito..
Mod: Imágenes dirigen a site erroneo
PARA EVITAR LO DE LAS IMAGENES, LES PASO EL PROPIO CODIGO COMPLETO: #include <stdio.h> #include <conio.h> int main() { /*realizar un programa que permita: a) ingresar 15 caracteres. b)calcular la cantidad de vocales. c) indicar la cantidas de vocales por tipo d)usar sentencia switch*/ char a; int conta,conte,conti,conto,contu,cont; cont=0; conta=0; conte=0; conti=0; conto=0; contu=0; while(cont<15) { printf("Ingrese un caracter:\n"); scanf("%c",&a); switch(a){ case 'a':conta++;break; case 'e':conte++;break; case 'i':conti++;break; case 'o':conto++;break; case 'u':contu++;break; default:cont++;break; } cont++; } printf("La cantidad de 'a' introducidas fueron %d\n",conta); printf("La cantidad de 'e' introducidas fueron %d\n",conte); printf("La cantidad de 'i' introducidas fueron %d\n",conti); printf("La cantidad de 'o' introducidas fueron %d\n",conto); printf("La cantidad de 'u' introducidas fueron %d\n",contu); return 0; }
Y EL ERROR OCURRE ASI:
Ingrese un caracter: a Ingrese un caracter: Ingrese un caracter: a Ingrese un caracter: Ingrese un caracter: .. etc..
|
|
« Última modificación: 6 Abril 2016, 05:13 am por FrancoMoglia »
|
En línea
|
|
|
|
engel lex
|
puedes publicar la sección de código respectiva al problema (las imagenes estaban mal direccionadas)
si lo haces procura usar las etiquetas GeSHi
|
|
|
En línea
|
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
|
|
|
class_OpenGL
Desconectado
Mensajes: 437
Si usas Direct3D, no eres mi amigo :P
|
El error ocurre porque cuando tu introduces un carácter en la consola y le das a enter para confirmas, en realidad estás enviando el carácter que has escrito más el carácter de fin de línea (en C representado con '\n'). Entonces, después de leer cada carácter, tendrías que limpiar el búfer de stdin. Sé como se hace en C++, pero no en C, eso quiere decir que el código que te voy a mostrar para limpiar el búfer quizás no funcione. while('\n' != fgetc(stdin ));
|
|
|
En línea
|
| Programador aficionado. Me quiero centrar en programar videojuegos. La API que uso para crearlos es OpenGL |
|
|
|
|
FrancoMoglia
Desconectado
Mensajes: 3
|
muchas gracias por responder, la pregunta surge porque mi profesora no me quiso enseñar, me dijo que busque en foros, asi que mucho no entiendo, podrias mostrarme en que parte del codigo que yo pase, va ese fragmento que tu me dices? muchas gracias
|
|
|
En línea
|
|
|
|
class_OpenGL
Desconectado
Mensajes: 437
Si usas Direct3D, no eres mi amigo :P
|
Va después de cada vez que uses scanf, fgec o demás funciones para leer datos desde la consola. Es importante que sepas por qué usas esa línea. Lo que hace esa línea es leer todos los caracteres de la consola que no se han leído por ciertas circunstancias. Por ejemplo, el que es tu caso, lees un carácter de la consola, pero cuando envías ese carácter desde la consola, estás enviando ese carácter más un carácter de fin de línea (se genera cuando pulsas enter). Entonces, cuando lees con scanf("%c", ...);, estás leyendo un carácter pero dejando el salto de línea sin leer. Por eso, después de usar scanf leemos todos los caracteres hasta que hayas leído un salto de línea.
|
|
|
En línea
|
| Programador aficionado. Me quiero centrar en programar videojuegos. La API que uso para crearlos es OpenGL |
|
|
|
|
FrancoMoglia
Desconectado
Mensajes: 3
|
Muchisimas gracias por responder y tomarte el tiempo de explicarme, sobre todo porque soy nuevo en esto de programar y la profesora no quiso explicarme que estaba sucediendo, de nuevo gracias por tu tiempo, ya comprobe el codigo y ahora funciona perfectamente. Saludos
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Problema de Variables
Programación Visual Basic
|
Timerlux
|
5
|
2,426
|
21 Junio 2007, 20:41 pm
por Sancho.Mazorka
|
|
|
Problema de variables¿?
.NET (C#, VB.NET, ASP)
|
Codename!!
|
4
|
3,623
|
27 Febrero 2010, 18:52 pm
por Codename!!
|
|
|
[BATCH] ¿Como puedo meter variables dentro de variables?
Scripting
|
Meine programmen
|
1
|
4,134
|
24 Marzo 2012, 16:48 pm
por Eleкtro
|
|
|
Problema con variables
« 1 2 »
Programación C/C++
|
Programador91
|
10
|
5,190
|
3 Abril 2012, 22:41 pm
por Sagrini
|
|
|
Problema con Variables PHP
« 1 2 3 »
PHP
|
iMarcSpS
|
25
|
16,015
|
13 Septiembre 2012, 07:48 am
por arthusu
|
|