Generátor příkladů (zjednodušení) – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Generátor příkladů (zjednodušení) – C / C++ – Fórum – Programujte.comGenerátor příkladů (zjednodušení) – C / C++ – Fórum – Programujte.com

 

Patrik
~ Anonymní uživatel
133 příspěvků
6. 6. 2014   #1
-
0
-

Dobrý den,

vytvořil jsem kód na generování náhodných příkladů s náročností pro druhou třídu, které se zapíší do textového souboru. Řešení se mi zdá zdlouhavé, ale nevím jak bych ho zjednodušil. Příklady jsou jen na +-*/ přičemž násobilka je jen malá.

Zde přikládám zdrojový kód

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.IO;

namespace SeznamPrikladu
{
    class Program
    {
        static void Main(string[] args)
        {
            int v=0;
            int pocet = 0;
            int max = 0;
            string priklady = "";

            try
            {
                Console.Write("Počet příkladů: ");
                pocet = int.Parse(Console.ReadLine());
                Console.Write("Do kolika se dítě učí­: ");
                max = int.Parse(Console.ReadLine());
            }
            catch
            {
                Console.WriteLine("Nevyplněná hodnota...");

            }

            Random random = new Random();
            using (StreamWriter sw = new StreamWriter(@"soubor.txt"))
            {
                
            }

            
            using (StreamWriter sw = new StreamWriter(@"soubor.txt", true))
            {
                
                for(int iterator=0;pocet >= iterator;iterator++)
                {
                    int randomNumberA = random.Next(0, max);
                    int randomNumberB = random.Next(0, max);

                    if (priklady != "")
                    {
                        sw.WriteLine(priklady);
                        priklady = "";
                        sw.WriteLine(priklady);
                        sw.Flush();
                    }


                    if (randomNumberA < randomNumberB && randomNumberA+randomNumberB<= max)
                    {
                        priklady =  randomNumberA + "+" + randomNumberB + "= ";
                    }

                    if (randomNumberA > randomNumberB)
                    {
                        priklady =  randomNumberA + "-" + randomNumberB + "= ";
                    }

                    for (int i = 0; i < 20; i++)
                    {
                        if (randomNumberA <= 10 && randomNumberB <= 10 )
                        {
                            priklady = randomNumberA + "·" + randomNumberB + "= ";
                            break;
                        }
                        randomNumberA = random.Next(0, max);
                        randomNumberB = random.Next(0, max);
                    }

                    

                    for (int i = 0; i < 20; i++)
                    {
                        if (randomNumberA <= 10 && randomNumberB <= 10 && randomNumberA<randomNumberB && randomNumberB>0)
                        {
                            v = randomNumberA * randomNumberB;
                            
                            priklady = v + ":" + randomNumberB + "= ";
                            break;
                            
                        }
                        randomNumberA = random.Next(0, max);
                        randomNumberB = random.Next(0, max);
                    }
                }
                sw.Close();
            }
            Console.WriteLine("Zapsáno do souboru");
            Console.ReadLine();
        }
    }
}

Byl bych rád za každé zjednodušení kódu, případně o odkaz na nějaký článek s popisem jak text zapsat do Wordu (3 sloupce).

Předem děkuji.

Nahlásit jako SPAM
IP: 89.177.20.–
p3can
~ Anonymní uživatel
312 příspěvků
6. 6. 2014   #2
-
0
-

   

class Program
    {
        static void Main(string[] args)
        {
            var pocet = 0;
            var max = 0;
            var zadano = false;
            while (zadano == false)
            {
                try
                {
                    Console.Write("Počet příkladů: ");
                    pocet = int.Parse(Console.ReadLine());
                    Console.Write("Do kolika se dítě učí­: ");
                    max = int.Parse(Console.ReadLine());
                    zadano = true;
                }
                catch
                {
                    Console.WriteLine("Spatna hodnota ...");

                }
            }


            var priklady = "";
            var ra = new Random();
            for (int i = 0; i < pocet; i++)
            {
                var operato = "";
                var op1 = 0;
                var op2 = 0;
                switch (ra.Next(4))

                {
                    case 0:
                        operato = "+";
                        op1 = ra.Next(max - 2) + 1;
                        op2 = ra.Next(max - op1) + 1;
                        break;
                    case 1:
                        operato = "-";
                        op1 = ra.Next(max - 1) + 1;
                        op2 = ra.Next(op1 - 1) + 1;
                        break;
                    case 2:
                        operato = "x";
                        op1 = ra.Next(max/2 - 1) + 1;
                        op2 = ra.Next(max/op1 ) + 1;
                        break;
                    case 3:
                        operato = "/";
                        op1 = ra.Next(max - 1) + 1;
                        do
                        {
                            op2 = ra.Next(op1 - 1) + 1;
                        } while (op1%op2 != 0);
                        break;

                }

                priklady += string.Format("{0}\t {1}\t {2}\t ={3}", op1, operato, op2,Environment.NewLine);
            }
            System.IO.File.WriteAllText("priklady.txt", priklady);
            using (var d = Novacode.DocX.Create("priklady.docx"))
            {
                var p=d.InsertParagraph();
                p.Append(priklady);
                d.Save();
            }
   
            Console.WriteLine("hotovo");
            Console.ReadKey();
        }

nainstalovat z nugety DocX (http://docx.codeplex.com/) pro pouziti tridy DocX.

Nahlásit jako SPAM
IP: 77.92.213.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 79 hostů

Podobná vlákna

Chyba v příkladu — založil Majo

Výpočet příkladu — založil Nicolas

Sbírka příkladů, úloh — založil mrkyk

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý