Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno C - nejde načíst znak

Dělám jeden program do školy a potřebuju načíst nak z klávesnice ale pokaždé když program dojde do fáze kdy má načíst znak tak to přeskočí a pokračuje za načítáním, prostě nic nenačte. Zkoušel jsem to pomocí funkce getchar() i pomocí scnaf("%c", &x). Fakticky nevím co s tím, a nestalo se mi to porvé. Jestli někdo víte jak ten problém vyřešit, prosím poraďte.

Dělám v Code::Blocks ale to samé mi to děla i v Dev-C++.

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
tady je kod toho programu, zkuste kdyztak podivat kde mam chybu pls #include <stdio.h> #include <st…
kongoušek 20.12.2011 23:18
kongoušek
ad 1) namiesto tych mastnych if-ov pouzi case ad 2) skus ten fflush dat pred kazdy scanf.
wam_Spider007 21.12.2011 21:17
wam_Spider007
Možná místo fflush by mělo stačit zapsat scanf(" %c",&znak); tedy přidat mezeru před znak charu. poslední
Hosting Banan.cz 24.12.2011 03:53
Hosting Banan.cz
Načítáš znak do proměnné op, kterou máš ale definovanou jako int. nový
Niko Bellic 21.12.2011 22:04
Niko Bellic
Jsem sice programátor začátečník ale naučil jsem se ukladat znaky do int podle jedne knihy, učili na… nový
kongoušek 22.12.2011 20:26
kongoušek
Jakou hodnotu asi pak má ta proměnná? Znak "+" to není ;-) #include <stdio.h> #include <stdlib.h> i… nový
ws79 22.12.2011 23:02
ws79
díky, ale nebylo to nutné, už mi to funguje. A funguje to i s INT. Znak se do proměnné ukládá pod je… nový
kongoušek 23.12.2011 14:46
kongoušek

tady je kod toho programu, zkuste kdyztak podivat kde mam chybu pls

#include <stdio.h>
#include <stdlib.h>

int main()
{
  int op;
  float vysledek;
  float n;

  scanf("%f", &vysledek);

  do
  {
    fflush(stdin);

    scanf("%c", &op);

    if (op == 'k' || op == 'K')
      break;

    scanf("%f", &n);


    if (op == '+')
      vysledek += n;
    if (op == '-')
      vysledek -= n;
    if (op == '*')
      vysledek *= n;
    if (op == '/')
      vysledek /= n;
  } while (op != 'k' || op != 'K');

  printf("Vysledek: %f\n", vysledek);

  return 0;
}

Jakou hodnotu asi pak má ta proměnná? Znak "+" to není ;-)

#include <stdio.h>
#include <stdlib.h>

int main()
{
  int a;
  int b;
  char operace;
  float vysledek;
  int n = 0;

  	printf("Vloz cislo:");
	fflush(stdin);
	scanf("%d", &a);
	
	printf("Operace:");
	fflush(stdin);
	scanf("%c",&operace);

	printf("Vloz cislo:");
	fflush(stdin);
	scanf("%d", &b);

	if (operace == 43)
      vysledek = a + b;
    if (operace == 45)
      vysledek = a - b;
    if (operace == 42)
      vysledek = a * b;
    if (operace == 47)
      vysledek = a / b;

  while (n < 999999) {
  
 		printf("Operace:");
		fflush(stdin);
		scanf("%c",&operace);

	 if (operace == 107 || operace == 75)
     break;

		printf("Vloz cislo:");
		fflush(stdin);
		scanf("%d", &a);

    if (operace == 43)
      vysledek += a;
    if (operace == 45)
      vysledek -= a;
    if (operace == 42)
      vysledek *= a;
    if (operace == 47)
      vysledek /= a;

	++n;
  }

  printf("Vysledek: %f\n", vysledek);
  return 0;
}

Sice to není dokonalé, ale trochu to funguje :-). Vytvořeno v Visual Studio 2010.

Zpět do poradny Odpovědět na původní otázku Nahoru