трудно понять условие задачи, если оно на иностранном языке
хотя у меня уровень немецкого вроде бы как в норме, специальные термины и полное незнание темы затрудняют понимание
кто может помочь с расшифровкой и заодно не против проверить решение?
Помогите пожалуйста с задачками по информатике
- Feyka
- Вопрос темы решён
-
-
Gesucht ist ein P-m Maximum, welches
das Maximum einer Eingabefolge von integer-Zahlen
bestimmt und ausgibt. hier ist die Anzahl der Folgenelemente nicht als
Konstante vorgegeben, sondern die Eingabefolge wird mit der Zahl
0, die nicht mehr zur Folge gehört, abgeschlossen.Hinweis: Beachten Sie den Fall einer leeren Eingabefolge,
d.h. den Fall, daß lediglich eine Null eingegeben wird! In
diesem Fall soll folgende Anweisung
writeln('Leere Eingabefolge!')
ausgeführt werden.правильно ли я поняла суть задания?
нужно написать алгоритм поиска максимума в массиве от х до у, где х,у не константы, меньше нуля и вообще не имеют значения, поэтому программа должна вывести текст "пустая строка"п.с. язык программирования Паскаль
-
Не совсем так.
Количество вводимых чисел не должно быть костантой в программе. Т.е можно вводить числа до теx пор пока не будет введено последнее число "0".
Реакция на не integer числа не оговорена в задании. (Integer может быть и негативным)ПС: на сколько я помню в паскале нельзя изменить размер массива во время исполнения программы, реализовать можно только со списком.
-
большое спасибо!
без вашего пояснения у меня совсем чушь получалась
так правильно?Цитатаprogramm Maximum(input,output);
{bestimmt das Maximum einer Folge der integer-Eingabefolge}var
Zahl
Maximum: integer;
begin
writeln('Geben Sie die integer-Zahlen ein.', '0 beendet die Eingabe.');
readln(Zahl);
Maximum:=Zahl;
while Zahl<>0 do
begin
if Zahl>Maximum
then
Maximum:=Zahl;
readln(Zahl)
end;
writeln ('Die größte Zahl lautet ', Maximum, '.')
end. -
2.Gesucht ist ein Programm merge, welches zwei (aufsteigend) sortierte Felder von (nicht notwendig verschiedenen) integer-Zahlen zu einem sortierten Feld verschmilzt. Dabei sollen mehrfach vorkommende Elemente auch mehrfach im Ergebnisfeld gespeichert werden. Die beiden Felder werden von der Standardeingabe eingelesen, wobei wir voraussetzen, dass nur sortierte Zahlenfolgen eingegeben werden. Eine Prüfung dieser Annahme ist nicht erforderlich. Das sortierte Ergebnisfeld wird ausgegeben.
Beispiel: Feld1 enthalte die Elemente 11, 14, 18, 80, 100, Feld2 die Elemente 8, 11, 11, 17, 22, 30, 55, 70.
Feld enthält dann nach der Ausführung von merge die Elemente 8, 11, 11, 11, 14, 17, 18, 22, 30, 55, 70, 80, 100, d.h. wenn Feld2 erschöpft ist, müssen
noch die restlichen Elemente aus Feld1 nach Feld kopiert werden.
Ergänzen Sie folgende Programmvorlage zu einemvollständigen Programm:
Hinweis: Das Verschmelzen nutzt die bestehende Sortierung des Feldes aus, Sie sollen keinen Sortier-Algorithmus implementieren.
Ein Kopieren der Feldinhalte von Feld1 und Feld2 nach ErgebnisFeld mit anschließendem Sortieren von ErgebnisFeld gilt nicht als Lösung der Aufgabe!
Auch das komplette Kopieren eines Feldes nach ErgebnisFeld mit anschließendem Einsortieren der Elemente des anderen Feldes ist keine Lösung.Имеются два численных ряда, которые необходимо объединить в один, в том числе повторяющиеся элементы. Отсортировать получившийся ряд по возрастанию.
При этом
-не использовать алгоритм сортировки
-не копировать 1 и 2 ряды в 3 ни по отдельности, ни вместе, с последующей сортировкойдля меня пока звучит:"иди туда, не знаю куда, принеси то, не знаю что..."
это всегда во время работы задачи по ходу рабочего процесса так выглядят? -
Отсортировать получившийся ряд по возрастанию.
Нет, в задании четко стоит, что сортировать полученный результат нельзя. Вообще применять сортировку нельзя. -
большое спасибо!
без вашего пояснения у меня совсем чушь получалась
так правильно?Если будут заданы пустые значения?
-
Узнаем сколько элементов в поле1 и поле2. 5 и 8
Сравниваем первый элемент полей, если не равны пишем в поле3 наименьший элемент 8 стетчик поля2 +1
если равны. Пишем в поле3 оба значения. Счетчик поля1 +1 счетчик поля2 +1Следующая итерация поле1 счетчик0 =11 счетчик поля1 +1 поле2 счетчик1=11 счетчик поля2 +1 Пишем в поле3 11 11
и т.д
Если счетчик поля2=8 Переписываем остальные элементы поля1 от 5 - счетчик поля1 до 5
Или можно сравнивать поля т.е сравниваем с 0 , 1,2,3, и т.д
-
Нет, в задании четко стоит, что сортировать полученный результат нельзя. Вообще применять сортировку нельзя.
спасибо за участие!
-
Узнаем сколько элементов в поле1 и поле2. 5 и 8...большое спасибо
нашла на просторах инета такую схемуЦитатаi:=1;
j:=1;
while (i<=FELDLAENGE1) or (j<=FELDLAENGE2) do
begin
if (i>FELDLAENGE1) then
begin
ErgebnisFeld[i+j-1]:=Feld2[ j ];
j:=j+1;
end
else
if (j>FELDLAENGE2) then
begin
ErgebnisFeld[i+j-1]:=Feld1[ i ];
i:=i+1;
end
else
begin
if Feld1[ i ]<Feld2[ j ] then
begin
ErgebnisFeld[i+j-1]:=Feld1[ i ];
i := i+1;
end
else
begin
ErgebnisFeld[i+j-1]:=Feld2[ j ];
j := j+1;
end
end;
end;обдумать ее целесообразность мозгов не хватает, они уже спят...
-
нашла онлайн компилятор на сайте ideone.com
проверяю решения
ругается на меня.. -
Я конечно Паскаль не очень знаю по синтаксу поэтому прошу сильно не пинать.
Алгоритм должен быть по моему мнению примерно такой:
Пожалуйста зарегистрируйся для просмотра данного изображения.
i:=FELDLAENGE1;
j:=FELDLAENGE2;
ij:=0; //deklaration zählvariable
ii:=0; //deklaration zählvariable
im:=0; //deklaration zählvariable
mergeFeld[i+j];// deklaration neues Feld
Feld1[FELDLAENGE1];//Feld wurde übergeben
Feld2[FELDLAENGE2];//Feld wurde übergeben
while im<i+j doif (ii<=i) then //solange Feld1 hat Elemente
if (Feld1[ii]<Feld2[ij]) then //Vergleichen und Mergefeld füllen
mergeFeld[im]:=Feld1[ii];
ii:=ii+1;//Feld1 weiterzählen
else
mergeFeld[im]:=Feld2[ij];
ij:=ij+1;//Feld2 weiterzählen
endelse//falls Feld1 leer ist
mergeFeld[im]:=Feld2[ij];
ij:=ij+1;//Feld2 weiterzählenend
im:=im+1;// Mergefeld weiterzählen
end -
А вообще рекомендую посмотреть этот курс "Algorithmen" Университет Оснабрюк.
Там правда на ява расказывают, но для алгоримов это не критично,
для всех языков высшего уровня алгоритм остаётся один, только синтакс меняется.Пожалуйста зарегистрируйся для просмотра данной ссылки на страницу.
что-то ломаются ссылки, короче просто в брозере в аддресную строку задать:
lernfunk.de/portal-ui/user-interface/#filter=java&cmd=search -
спасибо большое! обязательно посмотрю сайт
вторая задача готовамне очень мешает непонимание условий задачи
вот ещё одна:ЦитатаDie Funktion max findet in einem Feld ParFeld von integer-Werten das Maximum der Feldelemente ParFeld[von], ..., ParFeld[bis].Wir geben folgende Deklaration an:
function max (ParFeld: tFeld;von, bis: tIndex): integer;
{ bestimmt das Maximum im Teilfeld von ParFeld[von]
bis ParFeld[bis] }
var
Wert : integer;
i : tIndex;
begin
Wert := ParFeld[von];
for i := von + 1 to bis do
if ParFeld > Wert then
Wert := ParFeld;
max := Wert
end; { max }Für welche der folgenden Programmstücke verlassen die Werte der aktuellen Parameter bei dem Aufruf bzw. den Aufrufen der Funktion max nicht den durch die formalen Parameter definierten gültigen Wertebereich, egal welche integer-Werte im Feld vorkommen? Gehen Sie dabei von folgenden Konstanten-, Typ- und Variablenvereinbarungen aus:
const
GRENZE = 10;
type
tIndex = 1..GRENZE;
tFeld = array [tIndex] of integer;
var
Feld : tFeld;
w,
w1,
w2 : integer;я пока не очень поняла что такое функции и чем они отличаются от параметров, а мне ещё нужно определить
в каком случае Wert меняет параметры
w это же Wert? значение чего? максимума? почему их тогда три?
ЦитатаA
w := max (Feld, Feld[1], Feld[GRENZE]);B
w := max (Feld, (GRENZE-1) div 2,
(GRENZE-1) div 2);C
if max (Feld, 1, (GRENZE-1) div 2) >
max (Feld, (GRENZE+1) div 2, GRENZE)
then
w := max (Feld, 1, (GRENZE-1) div 2)
else
w := max (Feld, (GRENZE+1) div 2, GRENZE);D
w := max (Feld, 1, GRENZE);
if w <= GRENZE then
write (max (Feld, w, w));E
w1 := max (Feld, 1, GRENZE);
w2 := max (Feld, 4, GRENZE-1);
if (0 < w2) and (w1 <= GRENZE) then
begin
w := max (Feld, 2, GRENZE);
w := max (Feld, 1, w)
end; -
фух, до меня наконец-то дошло, чего требует задание 1
вот так вроде бы работаетЦитатаprogram Maximum(input,output);
var
i,j,max:integer;
begin
write('введите i=');
readln(i);
max:=i;
repeat
readln(i);
if i>max then max:=i;
until i=0;
writeln(max);
end.надо теперь немецкоязычные пояснения вписать
-
у меня возник вопрос: как ЭТО все учить?
то есть на сегодняшний момент моя схема выполнения задач проста: получаешь задачу-ищешь тему-пытаешься вникнуть-ищешь готовый код -списываешь -отсылаешь решение
как готовиться к экзамену? там негде будет найти готовый код -
Образно говоря примерно так:
Эти задания это вроде как маленькие кирпичики, которые нужны чтобы решить поставленую задачу.
При этом тебе дают предпесание на экзамене что не все кирпичи можно использовать, а только те которые разрешенны.
Ну типа нам забор из мрамора, дом из красных кирпичей а туалет сзади в саду на ваше усмотрение но чтобы красиво и быстро.
(ну и конечно дёшево и сердито )Ну а твоя сложность это узнать какие кирпичики от тебя хотят, потомучто открытым текстом тебе не будут говорить мы хотим мрамор,
а будут говорить гладкое, приличьное что-бы было на что посмотреть.