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
23 Lösung(en)
- java
- lisp
- c
- cpp
- python
- python
- perl
- java
- python
- php
- java
- ruby
- perl
- perl
- javascript
- php
- python
- c
- python
- csharp
- cpp
- cpp
- cpp
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
Neue Lösung hinzufügen
Bewertung
Durchschnittliche Bewertung:
Meta
Zeit: | 0.5 |
Schwierigkeit: | Mittel |
Webcode: | r5bd-t6kt |
Autor: | Philipp G. Freimann (BBW (Berufsbildungsschule Winterthur) https://www.bbw.ch) |