Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Marek Novák
Člen
Avatar
Marek Novák:14.12.2018 21:38

n = load('ROZMER.dat'); % 1. bod Nacte pocet n dimenzi vektoru
k = 1;
NULA(n) = [0]; %2. bod vytvori nulovy vektor o n-dimenzi
while k<n/2
k = k + 1;
NULA(1:2:n) = input('Zadej hodnotu'); % 3. bod Postupne nacte z klavesnice hodnoty pro liche slozky a ulozi je do
%vektoru NULA
end

Zkusil jsem: Trochu si s tím vyhrát (prohazovat hodnoty, zapnout vypnout program...(moc toho ještě neumím :D))

Chci docílit: Zdravím, mám problém ve 3.bodě kdy se mi do všech lichých složek vektoru uloží poslední zadaná hodnota. Př.
zadám: 4,5,6 - výstup: [6 0 6 0 6]. Děkuji předem za rady.

 
Odpovědět
14.12.2018 21:38
Avatar
David Oczka
Tvůrce
Avatar
David Oczka:15.12.2018 13:56

Ahoj,

problém je v tom, že v každé iteraci cyklu while znovu přiřadíš všem lichým indexům hodnotu, kterou načteš z funkce input. Ani cyklus while není zadán správně. Kdyby to byl jiný programovací jazyk, potřeboval bys projít všechny indexy a vybrat jen ty liché. Matlab Ti dovolí projít pouze ty liché pomocí cyklu for:

n = 5;
NULA(n) = 0;

for k = 1:2:n
    NULA(k) = input('Zadej hodnotu:\n');
end

Pokud bys i tak chtěl použít cyklus while, může to vypadat třeba takto:

n = 5;
NULA(n) = 0;

k = 1;
while k <= n
    if mod(k, 2) == 1
        NULA(k) = input('Zadej hodnotu:\n');
    end
    k = k + 1;
end

Nebo jsi možná chtěl použít svůj cyklus takto (?):

n = 5;
NULA(n) = 0;

k = 0;
while k<n/2
    NULA((2*k) + 1) = input('Zadej hodnotu:\n');
    k = k + 1;
end

Každopádně doporučuji projít nápovědu a ukázkové kódy přímo v Matlabu. A zkoušet, zkoušet a zkoušet... A časem to půjde... ;)

Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
 
Nahoru Odpovědět
15.12.2018 13:56
Avatar
Marek Novák
Člen
Avatar
Marek Novák:15.12.2018 14:49

Děkuju už mi to funguje. Nevím proč mě nenapadlo použít for.

 
Nahoru Odpovědět
15.12.2018 14:49
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 3 zpráv z 3.