Buch Cover Buch Cover Buch Cover Buch Cover

Web-Code: - Webcode Help

Rotation (Felder)

Schreiben Sie ein Programm, das ein vorgegebenes Array (Feld) rotiert. Dazu wird jeder Eintrag um einen Index nach hinten verschoben; der letzte Eintrag kommt dann auf die erste Position zu liegen.

Beispiel:

77, 5, 13, 9, 63, 2

wird zu

2, 77, 5, 13, 9, 63

0 Kommentare

Bitte melde dich an um einen Kommentar abzugeben

23 Lösung(en)

package ch.programmieraufgaben.arrays;

import java.util.Arrays;

/**
 * Rotiere
 * @author Philipp Gressly (phi AT gressly DOT ch)
 */
public class Rotieren {

    
    public static void main(String[] args) {
      new Rotieren().top();
    }
    
    int [] arr = {77, 5, 13, 9, 63, 2};
    
    void top() {
       int pos  = 1;
       int temp1 = arr[0];
   
       arr[0] = arr[arr.length - 1];
       while(pos < arr.length) {
           int temp2 = arr[pos];
           arr[pos]  = temp1;
           temp1     = temp2;
           pos       = pos + 1;
       }
       
       System.out.println(Arrays.toString(arr));
    }

} // end of class Rotieren
                

Lösung von: Philipp G. Freimann (BBW (Berufsbildungsschule Winterthur) https://www.bbw.ch)

(defun rotate (list)
	   "Führt das letzte Element der Liste am Anfang der Liste
            ein. Alle anderen Elemente werden um ein Index verschoben."
	   (cons (car (last list)) (reverse (cdr (reverse list)))))

(rotate '(77 5 13 9 63 2))
                

Lösung von: Stefan Meichtry (Erwachsenenbildung)

/* Autor: ph. gressly */
/* Datum: 11. Dez. 2012 */
/* Array rotieren */

#include <stdio.h>


main() {
  /* Initialisierung */
  int arr[6] = {77, 5, 13, 9, 63, 2};

  /* Letztes Element merken, dann alle 
   * von rechts her um eins nach rechts schieben.
   * Zuletzt das gemerkte letzte Element an die
   * erste Position setzen */
  int last = arr[5];
  int pos = 4; // zweitletzte Position
  while(pos >= 0) {
    arr[pos + 1] = arr[pos];
    pos = pos - 1;
  }
  arr[0] = last;


  /* Ausgabe */
  int i;
  for(i = 0; i < 6; i++) {
    printf("%d ", arr[i]);
  }
}

                

Lösung von: Philipp G. Freimann (BBW (Berufsbildungsschule Winterthur) https://www.bbw.ch)

// Autor:				Andy Großhennig
// Solution for task:	Rotation (Felder)

#include <iostream>

using namespace std;

// Function: Get In-Array, rotate, save in Out-Array and show the result
void rotateArray()
{
	int iarInput[6] = {77, 5, 13, 9, 63, 2};	
	const int iNUMBERCHANGES = (sizeof(iarInput) / sizeof(iarInput[0]));
	int iarOutput[iNUMBERCHANGES];

	// Loop: Show Input Array
	for(int i = 0;i < sizeof(iarInput) / sizeof(iarInput[0]);i++)
	{
		cout << iarInput[i] << "\t";
	}

	cout << endl << endl;

	// Loop: Rotate Input Array and save result in Output Array
	for(int i = 0;i < iNUMBERCHANGES;i++)
	{
		int iFieldOutput = i + 1;

		// If: Check whether iFieldOutput isn't out of bounds
		if(iFieldOutput < iNUMBERCHANGES)
		{
			iarOutput[iFieldOutput] = iarInput[i];
		}
		else
		{
			iarOutput[0] = iarInput[iNUMBERCHANGES - 1];
		}
	}

	// Loop: Show the result
	for(int i = 0;i < sizeof(iarOutput) / sizeof(iarOutput[0]);i++)
	{
		cout << iarOutput[i] << "\t";
	}
}

int main()
{
	rotateArray();

	cout << "\n\n";
	system("Pause");
	return 0;
}
                

Lösung von: Andy Großhennig (Bundeswehr)

liste = [77, 5, 13, 9, 63, 2]

runde = 0 
while runde < 10:#die Liste wird 10mal umsortiert
    zahl = len(liste)-1
    z = liste.pop(zahl) #letzte Zahl der Liste wird weggenommen und #an z übergben
    liste.insert(0, z) #z wird vorne in die Liste eingefügt
    print(liste)
    runde+=1
                

Lösung von: Py Thon ()

#... und jetzt alles in einer Klasse


class Liste:
    def __init__ (self,  schleife):
        self.liste = [77, 5, 13, 9, 63, 2]
        self.schleife = schleife #hier wird die Anzaghl der Schleifen festgelegt
        self.runde = 0
    def rotation(self):
        while self.runde < self.schleife:
            zahl = len(self.liste)-1
            z = self.liste.pop(zahl)
            self.liste.insert(0, z)
            print(self.liste)
            self.runde+=1


listing = Liste(5)
listing.rotation()
                

Lösung von: Py Thon ()

@zahlen=(77, 5, 13, 9, 63, 2);
$temp=$zahlen[$#zahlen];
for($y=@zahlen-1; $y >= 0; $y--){
	$zahlen[$y]=$zahlen[$y-1]
}
$zahlen[0]=$temp;
                

Lösung von: Name nicht veröffentlicht

import java.util.Stack;


public class ArrayRotate<E> {
	
	
	public static void main(String[] args){
		ArrayRotate<Integer> rotate = new ArrayRotate<Integer>();
		
		Integer[] array = new Integer[10];
		for (int i = 0; i < array.length; i++) {
			array[i] = (int) (Math.random() * 100);
			System.out.print(array[i] + " ");
		}
		
		System.out.println();
		
		Integer[] reversedArray = rotate.rotateArrayStack(array);
		
		for (int i = 0; i < reversedArray.length; i++) {
			System.out.print(reversedArray[i] + " ");
		}
	}
	
	public E[] rotateArrayStack(E[] array){
		
		Stack<E> stack = new Stack<E>();
		
		for (E e : array) {
			stack.push(e);
		}
		
		for (int i = 0; i < array.length; i++) {
			array[i] = stack.pop();
		}
		
		
		return array;
		
	}
}
                

Lösung von: Philipp Beck (Universität Stuttgart)

def rotate(sequence):
	for i in range(len(sequence)):
		sequence.insert(0,sequence.pop())
		print(sequence)
                

Lösung von: dietmar berger ()

<?php 
#Setzte Variablen
$zahlen = array(77, 5, 13, 9, 63, 2);
$anzahl = count($zahlen)-1;

#Rotation
for($n=0; $n<=$anzahl; $n++)
	{
	if($n==$anzahl)
		{
		$rotation[0] = $zahlen[$anzahl];
		}
	$rotation[$n] = $zahlen[$n-1];
	}

#Ausgabe
print_r($zahlen);
echo "<br>";	
print_r($rotation);

?>
                

Lösung von: Name nicht veröffentlicht

public class wertrotation {

    // lässt die Werte um jeweils 1. Stelle rotieren
    private void rotiere(int[] intarray) {

	// Kopie des ursprünglichen Arrays
	int[] arraycopy = intarray.clone();

	// vertauscht die Werte
	for (int i = 0; i < intarray.length - 1; i++) {
	    intarray[i + 1] = arraycopy[i];
	}

	// Die for-Schleife lässt den ersten Wert aus <- wird nachgetragen
	intarray[0] = arraycopy[arraycopy.length - 1];
    }

    // Hauptmethode
    public static void main(String[] args) {

	// Klassenobjekt um auf die Methode zugreifen zu können
	wertrotation tue = new wertrotation();

	int[] intarray = new int[] { 77, 5, 13, 9, 63, 2 };

	// Methode wird aufgerufen
	tue.rotiere(intarray);
    }
}
                

Lösung von: Sebastian Littel ()

arr = [77, 5, 13, 9, 63, 2]
puts arr.inspect
arr.insert(0, arr.pop)
puts arr.inspect
                

Lösung von: Name nicht veröffentlicht

use strict;
use warnings;
use diagnostics;
use 5.010;
use utf8;

INIT {
	# Array
	my @numbers = qw{77 5 13 9 63 2};
	my $i = 0;
	
	foreach my $number (@numbers) {
		print $number." ";
	}
	print "\n";
	
	my $last = pop(@numbers);
	unshift(@numbers,$last);

	foreach my $number (@numbers) {
		print $number." ";
	}
	
	print "\nPress any key to end...\n";
	system("pause.exe >nul");
}
                

Lösung von: Name nicht veröffentlicht

my @array = qw(77 5 13 9 63 2);
@array = reverse @array; # Perl too strong
foreach my $e ( @array ) { print $e . "\n"; }
                

Lösung von: Mister iC ()

Array.prototype.rotate = function() {
   this.unshift(this.pop());
   return this;
}
console.log([77, 5, 13, 9, 63, 2].rotate());
                

Lösung von: Lisa Salander (Heidi-Klum-Gymnasium Bottrop)

<?php


//Das Array
$x = array(77, 5, 13, 9, 63, 2);


/*Das letzte Element wird rausgenommen und der Variablen $last hinzugefügt*/
$last = array_pop($x);


//Hier wird das Array umgedreht und einer neuen Variablen $z hinzugefügt
$z = array_reverse($x);


//Und dann die Variable $last dem Array angehängt
$z[count($z)] = $last;


//Dann nur noch wieder umdrehen
$z = array_reverse($z);


//Die 2 wieder dem Array $x angehangen
$x[] = 2;


//Und fertig :D
echo "Vor der Rotation:<br>";
print_r($x);
echo "<br><br> Nach der Rotation:<br>";
print_r($z);

?>
                

Lösung von: Maik Scheiermann (Powercloud GmbH)

A=[A[-1]]+A[:-1]
                

Lösung von: rob ert (tub)

#include<stdio.h>

int main() {
	int feld[] = {77, 5, 13, 9, 63, 2};
	int i, j, rotation, temp;
	
	//Ausgabe vor der Rotierung
	for (i=0; i<6; i++){
	printf("%d ", feld[i]);	
	}
	
	printf("\nWie oft das Feld verschieben? ");
	scanf("%d", &rotation);
	
	//Feld rotieren	
	for (j=1; j<=rotation; j++){
		temp = feld[5];			
		for (i=5; i>0; i--){
			feld[i]=feld [i-1];	
		}
		feld[0] = temp;
	}
	
	//Ausgabe nach der Rotierung
	for (i=0; i<6; i++){
		printf("%d ", feld[i]);	
	}
	
	return 0;
}
                

Lösung von: Name nicht veröffentlicht

# Position rotieren
def rotate(liste, n):
    return liste[-n:] + liste[:-n]

print(rotate([77, 5, 13, 9, 63, 2], 1))
                

Lösung von: Alex Groeg (Freies Lernen)

// NET 6.x | C# 10.x | VS-2022

static int[] Rotate(int[] arr, int n) => arr[^n..].Concat(arr[..^n]).ToArray();
Console.WriteLine(string.Join(", ", Rotate(new int[] { 77, 5, 13, 9, 63, 2 }, 1)));
                

Lösung von: Jens Kelm (@JKooP)

// C++ 14 | VS-2022

#include <iostream>
#include <vector>

std::vector<int> rotate(const std::vector<int>& v, const int& n) {
    std::vector<int> out;
	if (n > v.size()) return v;
	for (auto i{ n }; i < v.size(); i++) out.push_back(v[i]);
	for (auto i{ 0 }; i < n; i++) out.push_back(v[i]);
	return out;
}

int main() {
	const auto r{ rotate({ 77, 5, 13, 9, 63, 2 }, 2) };
	for(auto i{ 0 };i < r.size() - 1; i++)
		std::cout << r[i] << ", ";
	std::cout << r.back();
}
                

Lösung von: Jens Kelm (@JKooP)

// C++ 14 | VS-2022

#include <iostream>
#include <algorithm>
#include <vector>

template<typename _Ty>
inline const auto rotate(_Ty& v, size_t n) {
    std::rotate(v.begin(), v.end() - n, v.end());
}

template<typename _Ty>
inline const auto print(const _Ty& v, const std::string& s = ", ") {
    for (auto i{ 0 }; i < v.size() - 1; ++i)
        std::cout << v[i] << s;
    std::cout << v.back() << "\n";
}

int main() {
    std::vector<int>v1{ 77, 5, 13, 9, 63, 2 };
    std::vector<char>v2{ 'T', 'A', 'T', 'I', 'O', 'N', 'R', 'O' };
    std::string v3 = "LOHAL";
    rotate(v1, 1);
    rotate(v2, 2);
    rotate(v3, 3);
    print(v1);      // 2, 77, 5, 13, 9, 63
    print(v2, "");  // ROTATION
    print(v3, " "); // H A L L O
}
                

Lösung von: Jens Kelm (@JKooP)

// C++20 | VS-2022

#include <iostream>
#include <algorithm>
#include <vector>

inline static constexpr auto rotate(auto&& con_, const size_t& num_) noexcept {
    if (num_ >= con_.size()) return;
    std::rotate(con_.begin(), con_.end() - num_, con_.end());
}

inline static constexpr std::ostream& print(std::ostream& os_, auto&& con_, auto&& sep_) noexcept {
    if (con_.size() == 0) return os_;
    for (const auto& elem : con_)
        os_ << elem << sep_;
    return os_ << "\n";
}

int main() {
    std::vector<int>v1{ 77, 5, 13, 9, 63, 2 };
    std::vector<char>v2{ 'T', 'A', 'T', 'I', 'O', 'N', 'R', 'O' };
    std::string v3 = "LOHAL";
    rotate(v1, 1);
    rotate(v2, 2);
    rotate(v3, 3);
    print(std::cout, v1, ", ");     // 2, 77, 5, 13, 9, 63
    print(std::cout, v2, '\0');     // ROTATION
    print(std::cout, v3, " ");      // H A L L O
}
                

Lösung von: Jens Kelm (@JKooP)

Aktionen

Bewertung

Durchschnittliche Bewertung:

Eigene Bewertung:
Bitte zuerst anmelden

Meta

Zeit: 0.5
Schwierigkeit: Mittel
Webcode: r5bd-t6kt
Autor: Philipp G. Freimann (BBW (Berufsbildungsschule Winterthur) https://www.bbw.ch)

Download PDF

Download ZIP

Zu Aufgabenblatt hinzufügen