Witajcie,
Od niedawna mam laborki z algorytmów obliczeniowych, a na nich matlab.
Mieliśmy za zadanie zrobić skrypt pracujący na wprowadzonych przez użytkownika wektorach. Z początku wszystko fajnie, ale przy takim zapisie:
Wystarczyło podać liczbę niedodatnią lub niecałkowitą(choć w zasadzie dla wymiernych to po prostu zaokrągla w dół), by dalsza część programu się wysypała.
Toteż wprowadziłem sprawdzanie, czy została podana wartość dodatnia(teraz widzę że dodam jeszcze sprawdzanie całkowitości):
I jest ok. Nawet przy duszeniu enter bez wprowadzania czegokolwiek ponownie pyta o n. Natomiast wysypuje się przy wprowadzeniu znaku innego niż cyfra:/.
Tutaj też udało mi się pójść dalej:
Program sprawdza czy input zamieniony na wartość numeryczną(str2num z liter daje pustą macierz, nie licząc i oraz j) nie jest pusty. Można do tego dać while i już jest powtarzanie zapytania o n aż do skutku.
I wszystko jest ok, ale jest dalsza część skryptu, mianowicie pętla for pytająca o kolejne elementy wektora o n-wyrazach:
Próbowałem na kilka sposobów połączyć to z jedną z dwóch powyższych metod sprawdzania, i niestety nie doszedłem do satysfakcjonującego rozwiązania. Przez moment cośtam miałem, ale przy wprowadzaniu jednoznakowych elementów, przy liczbach lub 'wyrazach' się sypał:
I po tym moja pomysłowość się zmęczyła.
Jest ktoś w stanie podpowiedzieć, w jaki sposób sklecić pętlę wprowadzania n elementów wektora, aby za każdym razem było sprawdzone czy wprowadzony element jest liczbą, i ponawiał zapytanie, jeśli trzeba?
Pozdrawiam.
Od niedawna mam laborki z algorytmów obliczeniowych, a na nich matlab.
Mieliśmy za zadanie zrobić skrypt pracujący na wprowadzonych przez użytkownika wektorach. Z początku wszystko fajnie, ale przy takim zapisie:
n = input('Wprowadz liczbe elementow wektora: ');Wystarczyło podać liczbę niedodatnią lub niecałkowitą(choć w zasadzie dla wymiernych to po prostu zaokrągla w dół), by dalsza część programu się wysypała.
Toteż wprowadziłem sprawdzanie, czy została podana wartość dodatnia(teraz widzę że dodam jeszcze sprawdzanie całkowitości):
goodn = 0;
while goodn <= 0
n = input('Wprowadz liczbe elementow wektora: ');
if n > 0
goodn = 1;
end;
end;I jest ok. Nawet przy duszeniu enter bez wprowadzania czegokolwiek ponownie pyta o n. Natomiast wysypuje się przy wprowadzeniu znaku innego niż cyfra:/.
Tutaj też udało mi się pójść dalej:
x = input('Wprowadz', 's');
if isempty(str2num(x)) == 1
disp('podales zla wartosc');
else
disp('podales dobra wartosc');
end;Program sprawdza czy input zamieniony na wartość numeryczną(str2num z liter daje pustą macierz, nie licząc i oraz j) nie jest pusty. Można do tego dać while i już jest powtarzanie zapytania o n aż do skutku.
I wszystko jest ok, ale jest dalsza część skryptu, mianowicie pętla for pytająca o kolejne elementy wektora o n-wyrazach:
for i = 1:n
x(i) = input(['Wprowadz ' num2str(i) '. element wektora: ']);
end;Próbowałem na kilka sposobów połączyć to z jedną z dwóch powyższych metod sprawdzania, i niestety nie doszedłem do satysfakcjonującego rozwiązania. Przez moment cośtam miałem, ale przy wprowadzaniu jednoznakowych elementów, przy liczbach lub 'wyrazach' się sypał:
error: A(I) = X: X must be a scalar or a vector with same length as I
error: assignment failed, or no method for 'string = string'I po tym moja pomysłowość się zmęczyła.
Jest ktoś w stanie podpowiedzieć, w jaki sposób sklecić pętlę wprowadzania n elementów wektora, aby za każdym razem było sprawdzone czy wprowadzony element jest liczbą, i ponawiał zapytanie, jeśli trzeba?
Pozdrawiam.