Portál AbcLinuxu, 3. května 2025 22:54

Matematické blbnutí v konzoli

30.3.2016 20:56 | Přečteno: 1302× | Ostatní | poslední úprava: 30.3.2016 20:55

Z dlouhé chvíle jsem si napsal pro příkazovou řádku prográmek na řešení příkladů, nechal jsem se inspirovat vedlejším blogem pana Literáka. Nejsem programátor, a tak by mě docela zajímalo, jak by se tento typ programu realizoval v Pythonu. Vzhledem k tomu, že je to vysokoúrovňový jazyk, předpokládal bych kratší, přehlednější a elegantnější řešení.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>


int main() {

	int operand1, operand2, operace, vysledek, vstup;
	char znamenko;
	
	srand(time(NULL)) ;
	
	printf("Vítej, maly poctari. Jsi pripraven na trochu zabavy? (Program ukoncis stisknutim libovolneho pismena.)\n\n");
	
	
	for(;;)	{
	
		operand1 = (rand() % 100) + 1;
		operand2 = (rand() % 100) + 1;
	
		operace = (rand() % 4) + 1;

	
		switch(operace)	{
		
			case 1 :
			vysledek = operand1 + operand2;
			znamenko = '+'; 
			break;
		
			case 2 :
			vysledek = operand1 - operand2;
			znamenko = '-';
			break;
		
			case 3 :		
			vysledek = ((operand1 %= 10 + 1)) * ((operand2 %= 10 + 1));
			znamenko = '*';
			break;
		
			case 4 :		
			vysledek = operand1 / ((operand2 %= 10 + 1));
			znamenko = '/';
			break;	
	
			default:
			printf("Error\n");
		}

		printf("%6d\n%6c\n%6d\n\nVysledek: ", operand1, znamenko, operand2);

		if (scanf("%d", &vstup) != 1)
			return 1;

		printf("\n");

		while (vysledek != vstup) {
			printf("Spatne, tupce! Pocitej znovu.\n\n");
			printf("%6d\n%6c\n%6d\n\nVysledek: ", operand1, znamenko, operand2);
	
			if (scanf("%d", &vstup) != 1)
				return 1;
	
			printf("\n");
		}
	}
	
	return 0;
}

Nejsem zrovna příznivcem dotykových zařízení, nechci jezdit zpoceným prstem po displeji (člověk se před obrazovkou více potí). Snad se jednou z této módní záležitosti nestane mainstream bez alternativy, jelikož by to bylo na úkor efektivity a pohodlí. Nedokážu si představit, že bych takto pracoval se stolním počítačem.

Možná bych jen upozornil na to, že pro děti není zrovna vhodné, aby trávily vkuse několik hodin u tabletu, počítače nebo televize, jelikož jejich oči jsou ve vývinu a velké obrazovky s led podsvícením namáhají oči, rozpalují hlavu, unavují tělo a zatěžují srdce, a určitě zde existuje i zvýšené riziko rakoviny očí. To samé platí ale i o čtení. Děti by měly běhat někde venku, sportovat a rozvíjet svalovou soustavu, aby z nich nakonec nebyly chcípáci :-(        

Hodnocení: 67 %

        špatnédobré        

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře. , Tisk

Vložit další komentář

30.3.2016 22:25 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Matematické blbnutí v konzoli
Odpovědět | Sbalit | Link | Blokovat | Admin
Tento blogpost se svou úrovní vyrovná některým článkům z poslední doby.
30.3.2016 22:45 sad
Rozbalit Rozbalit vše Re: Matematické blbnutí v konzoli
Ale tos mi ještě dost přidal ;-)
31.3.2016 08:11 ich
Rozbalit Rozbalit vše Re: Matematické blbnutí v konzoli
+1
31.3.2016 15:01 HudriHudri
Rozbalit Rozbalit vše Re: Matematické blbnutí v konzoli
Odpovědět | Sbalit | Link | Blokovat | Admin
prispejem i ja svojou troskou...
program mala_nasobilka;

var f,a,b,c,p,s:integer;
    pu:real;


begin
 randomize;
 s:=0;

 write('Pocet prikladov ? ');
 readln(p);

 for f:=1 to p do
 begin
  a:=random(11);
  b:=random(11);
  write(a,' x ',b,' = ');
  readln(c);
   if c = a * b then
     begin
      writeln;
      writeln('spravne');
      writeln;
      inc(s);
     end
   else writeln('nespravne');
 end;
 pu:=(s/p) * 100;
 writeln;
 writeln('Celkovy pocet prikladov: ',p,' z toho spravnych prikladov ',s,'. Percentualna uspesnost ',  pu:2:0, '%');
end.
31.3.2016 18:11 R
Rozbalit Rozbalit vše Re: Matematické blbnutí v konzoli
Co sa stane, ked clovek zada pocet prikladov 0?
31.3.2016 18:20 HudriHudri
Rozbalit Rozbalit vše Re: Matematické blbnutí v konzoli
Runtime error 207 at 
  $080482C2
  $080482C2
  $08063A93
31.3.2016 23:33 jas | skóre: 13 | blog: blag
Rozbalit Rozbalit vše Re: Matematické blbnutí v konzoli
Odpovědět | Sbalit | Link | Blokovat | Admin

V pythone by som to robil asi nejak takto (sorry ak tam chybaju nejake medzery a pod., nedaval som na to zas az taky pozor).

import sys
import random
import operator

modX = lambda x: x % 10 + 1

ops = {
	'+': (operator.add, int, int),
	'-': (operator.sub, int, int),
	'*': (operator.mul, modX, modX),
	'/': (operator.div, int, modX)
}

print "Vitej, maly poctari. Jsi pripraven na trochu zabavy? (Program ukoncis necelociselnym vstupom.)\n"

while True:
	i1 = random.randint(1,100)
	i2 = random.randint(1,100)
	op = random.choice(list(ops))
	fop, mod1, mod2 = ops[op]
	i1 = mod1(i1)
	i2 = mod2(i2)
	vysl = fop(i1, i2)

	try:
		guess = int(raw_input("%6d\n%6s\n%6d\n\nVysledek: " % (i1, op, i2)))
	except ValueError:
		sys.exit(1)
	while guess != vysl:
		print "Spatne, tupce! Pocitej znovu.\n"
		try:
			guess = int(raw_input("%6d\n%6s\n%6d\n\nVysledek: " % (i1, op, i2)))
		except ValueError:
			sys.exit(1)
1.4.2016 08:38 sad
Rozbalit Rozbalit vše Re: Matematické blbnutí v konzoli
Super! Moc děkuji. A v tom Pythonu to vypadá lépe, hlavně přehledněji.
⧠ A = 0 avatar 4.4.2016 22:56 ⧠ A = 0 | skóre: 11 | blog: Technokratovo_zrcadlo | Helsinki
Rozbalit Rozbalit vše Re: Matematické blbnutí v konzoli
Ale trvá to nejmíň stokrát dýl!
Nevolte zmrdy.
1.4.2016 12:07 martin
Rozbalit Rozbalit vše Re: Matematické blbnutí v konzoli
Taky jsem si hral ale s mensi obmenou
zde jsem pouzil
Quick 'n Dirty evil eval()


op = random.choice(['+', '-', '*', '/'])
result = eval('%d %s %d' % (num1, op, num2))
1.4.2016 15:58 R
Rozbalit Rozbalit vše Re: Matematické blbnutí v konzoli
Rovnako ako v povodnom programe tam je zbytocne duplicitny kod. Python sice nema do..while, ale to neospravedlnuje :D

Založit nové vláknoNahoru

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.