C# - Posloupnost

Místo pro dotazy a rady ohledně programovacích jazyků (C++, C#, PHP, ASP, Javascript, VBS..) a tvorby webových stránek

Moderátor: Mods_senior

Irena
nováček
Příspěvky: 5
Registrován: květen 14
Pohlaví: Žena
Stav:
Offline

C# - Posloupnost

Příspěvekod Irena » 29 kvě 2014 18:44

Dobrý den,
Potřebuji vypsat dva řádky posloupností, z nichž druhá má opačné pořadí členů. Konec programu nemám dobře. Jak má být správně?

Kód: Vybrat vše

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication26
{
    class Program
    {
        static Random random = new Random();

        static void Main(string[] args)
        {
            Console.Write("Náhodná čísla jsou ");
            int n = 20;
            int[] a = new int[n];

            for (int i = 0; i < n; i++)
                a[i] = random.Next(9);

            for (int i = 0; i < n; i++)
                Console.Write(a[i] + (i < n - 1 ? ", " : ""));
            Console.WriteLine();


            for (int i = n; i > 0 ; i--)
                Console.Write(a[i] + (i < n - 1 ? ", " : ""));
            Console.WriteLine();

            {

            }

        }
    }
}


Děkuji za všechny odpovědi

Reklama
Uživatelský avatar
faraon
Master Level 8.5
Master Level 8.5
Příspěvky: 7397
Registrován: prosinec 10
Pohlaví: Muž
Stav:
Offline

Re: C# - Posloupnost

Příspěvekod faraon » 29 kvě 2014 19:20

Máš pole a[20], což znamená že obsahuje buňky [0][19]. Sleduj co provádí ten počet prvků n=20:

V prvním cyklu správně indexuješ od i=0 do i<n, tedy od 0 do 19.

Ve druhém cyklu začínáš indexovat od i=n, a končíš při i>0, takže se pokoušíš od indexy 201! Co s tím provedeš?

Jinak to naplnění pole by šlo s prvním výpisem sloučit do jednoho cyklu, program by se tím urychlil ;-)
"Král Lávra má dlouhé oslí uši, král je ušatec!

(pravil K. H. Borovský o cenzuře internetu)

Irena
nováček
Příspěvky: 5
Registrován: květen 14
Pohlaví: Žena
Stav:
Offline

Re: C# - Posloupnost

Příspěvekod Irena » 29 kvě 2014 19:33

řekla bych, že toto
Console.Write("Náhodná čísla jsou ");
int n = 20;
int[] a = new int[n];

for (int i = 0; i < n; i++)
a[i] = random.Next(9);

for (int i = 0; i < n; i++)
Console.Write(a[i] + (i < n - 1 ? ", " : ""));
Console.WriteLine();
Console.Write("Pozpátku ");

for (int i = n-1; i <= 0; i--)

Console.Write(a[i] + (i < n - 1 ? ", " : ""));
Console.WriteLine();
Console.ReadLine();

ale ani to není dobře, asi mi něco uniká

Uživatelský avatar
faraon
Master Level 8.5
Master Level 8.5
Příspěvky: 7397
Registrován: prosinec 10
Pohlaví: Muž
Stav:
Offline

Re: C# - Posloupnost

Příspěvekod faraon » 29 kvě 2014 19:40

No, byl to krok správným směrem, ale tu podmínku jsi otáčet neměla:

for (int i = n-1; i >= 0 ; i--)

Slovně by se dalo říct "opakuj dokud je i větší nebo rovno nule".
"Král Lávra má dlouhé oslí uši, král je ušatec!

(pravil K. H. Borovský o cenzuře internetu)

Irena
nováček
Příspěvky: 5
Registrován: květen 14
Pohlaví: Žena
Stav:
Offline

Re: C# - Posloupnost

Příspěvekod Irena » 29 kvě 2014 19:47

Děkuji, teď to mám takto:
Console.Write("Náhodná čísla jsou ");
int n = 20;
int[] a = new int[n];

for (int i = 0; i < n; i++)
a[i] = random.Next(9);

for (int i = 0; i < n; i++)
Console.Write(a[i] + (i < n - 1 ? ", " : ""));
Console.WriteLine();
Console.Write("Pozpátku ");

for (int i = n-1; i >= 0; i--)

Console.Write(a[i] + (i > 0 ? ", " : ""));
Console.WriteLine();
Console.ReadLine();

ještě jsem změnila drobnost v 3.řádku od spodu

Můžu se zeptat ještě na jiný příklad?
Tohle nevím z které strany pojmout: . Sestavte program, který provede cyklický posun členů posloupnosti o k míst doleva a takto upravenou posloupnost vypíše.
Jako výchozí vstupní hodnoty posloupnosti použijte indexy těchto členů zvýšené o +1, n = 20.

Uživatelský avatar
faraon
Master Level 8.5
Master Level 8.5
Příspěvky: 7397
Registrován: prosinec 10
Pohlaví: Muž
Stav:
Offline

Re: C# - Posloupnost

Příspěvekod faraon » 29 kvě 2014 20:03

To odřádkování by se dalo udělat i jinak, když už používáš ternární výraz. Místo

Kód: Vybrat vše

Console.Write(a[i] + (i > 0 ? ", " : ""));
Console.WriteLine();

by mohlo stačit

Kód: Vybrat vše

Console.Write(a[i] + (i > 0 ? ", " : "\n"));

Zkus jestli to v C# funguje, v C a C++ to jde.

Ten posun posloupnosti by mělo být něco takového:
1,2,3,4,5
posun=1
2,3,4,5,1

Takže by stačilo první buňku odložit do nějaké dočasné proměnné, celé pole cyklem posunout (bacha na poslední buňku, do té už se nic neposouvá!), a pak do poslední buňky vložit obsah té dočasné proměnné.
"Král Lávra má dlouhé oslí uši, král je ušatec!

(pravil K. H. Borovský o cenzuře internetu)

Irena
nováček
Příspěvky: 5
Registrován: květen 14
Pohlaví: Žena
Stav:
Offline

Re: C# - Posloupnost

Příspěvekod Irena » 29 kvě 2014 20:10

To by posunulo o jeden, ale já se musím nejdřív zeptat jaké je k, které je vždy jiné. Něco podobného už jsem měla v tomto příkladu:
Sestavte program, který do posloupnosti přidá na prvních k pozic, čísla od k-1 do 0 (tj. sestupně) a ostatní členy posune dozadu. Hodnotu k zadá uživatel, před jejím požitím ověřte že 1 <= k <= n, jinak nechť je vypsána chyba. Nově vzniklou posloupnost ať program vypíše.
Jako výchozí vstupní hodnoty posloupnosti použijte náhodná čísla od 0 do 9, n = 10.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication24
{
class Program
{
static Random random = new Random();

static void Main(string[] args)
{
Console.Write("Náhodná čísla jsou ");
int n = 10;
int[] a = new int[n];

for (int i = 0; i < n; i++)
a[i] = random.Next(9);

for (int i = 0; i < n; i++)
Console.Write(a[i] + (i < n - 1 ? ", " : ""));
Console.WriteLine();

Console.WriteLine("Zadej číslo: ");
int k = Convert.ToInt32(Console.ReadLine());

Array.Resize(ref a, a.Length + k);
for (int i = a.Length - 1; i >= k;i-- )
{
a[i] = a[i - k];
}
for (int i = 0; i < k;i++ )
{
a[i] = k - i - 1;
}
Console.WriteLine();
for (int i = 0; i < n; i++)
{
Console.Write((i) + " " + a[i]);
Console.WriteLine();
}
Console.ReadLine();
}
}
}
Ale i tady to asi nemám dobře.

Uživatelský avatar
faraon
Master Level 8.5
Master Level 8.5
Příspěvky: 7397
Registrován: prosinec 10
Pohlaví: Muž
Stav:
Offline

Re: C# - Posloupnost

Příspěvekod faraon » 29 kvě 2014 20:22

No a když k=5, je problém to pole posunout pětkrát o 1? ;-)

Jo, je to prasárna, a určitě to není nejrychlejší. Takže místo dočasné proměnné bych použil dočasné pole, tak velké o kolik má být posun, do něj zkopíroval začátek té posloupnosti, potom jí posunul a dočasné pole zkopíroval zase na konec.

Ten kód dávej do tagu Code tak jako v prvním příspěvku, zachová se ti odsazování a mnohem lépe se to čte.
"Král Lávra má dlouhé oslí uši, král je ušatec!

(pravil K. H. Borovský o cenzuře internetu)

Irena
nováček
Příspěvky: 5
Registrován: květen 14
Pohlaví: Žena
Stav:
Offline

Re: C# - Posloupnost

Příspěvekod Irena » 29 kvě 2014 20:33

první příspěvek vložil syn, zeptám se jak to dělal :)


Zpět na “Programování a tvorba webu”

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 2 hosti