Suche Element in Array (Feld) (Felder)
Gegeben ist ein Array zum Beispiel mit Zahlen als Werten:
{2, 17, 10, 9, 16, 3, 9, 16, 5, 1, 17, 14}
Schreiben Sie ein Programm, das vom Anwender eine Zahl entgegen nimmt und ausgibt, wo im Array das Element vorkommt. Falls die gesuchte Zahl im Array nicht vorkommt, so soll eine entsprechenden Meldung ausgegeben werden.
Entscheiden Sie selbst, was bei mehrmaligem Auftreten einer Zahl (Hier z. B. 9) geschehen soll. Entweder geben Sie nur das erste Vorkommen aus oder sie geben alle gefundenen Positionen an.
2 Kommentare
21 Lösung(en)
- java
- python
- java
- csharp
- csharp
- c
- python
- java
- lisp
- csharp
- ruby
- groovy
- java
- perl
- javascript
- php
- java
- cpp
- csharp
- csharp
- cpp
package ch.programmieraufgaben.arrays;
import java.util.Scanner;
public class FindePositionInArray {
public static void main(String[] args) {
new FindePositionInArray().top();
}
void top() {
int[] arr = {2, 17, 10, 9, 16, 3, 9, 16, 5, 1, 17, 14};
int gesuchterWert = einlesenGesuchterWert();
int gefundenePositon = findePositionInArray(arr, gesuchterWert);
ausgabe(gefundenePositon, gesuchterWert);
}
/**
* Sucht das erste Auftreten von "wert" im gegebenen Array "arr".
* Wird der Wert gefunden, so wird seine Position zurückgegeben.
* Wird der Wert nicht gefunden, so wird die ungültige Positon "-1" zurückgegeben.
*/
int findePositionInArray(int[] arr, int wert) {
int testPos = 0;
while(testPos < arr.length) {
if(arr[testPos] == wert) {
return testPos;
}
testPos = testPos + 1;
}
return -1; // nicht gefunden
}
Scanner sc = new Scanner(System.in);
int einlesenGesuchterWert() {
System.out.println("Gesuchten Wert eingeben: ");
return sc.nextInt();
}
void ausgabe(int gefundenAnPosition, int wert) {
if(-1 == gefundenAnPosition) {
System.out.println("Wert " + wert + " kommt im Array nicht vor.");
} else {
System.out.println("Wert " + wert + " kommt im Array an Position Index " + gefundenAnPosition + " vor.");
System.out.println("Das ist das " + (gefundenAnPosition + 1) + ". Element.");
}
}
} // end of class FindePositionInArray
Lösung von: Philipp G. Freimann (BBW (Berufsbildungsschule Winterthur) https://www.bbw.ch)
liste = [1,2,3,4,5,6,7]
auswahl = int(input("Welche Zahl soll überprüft werden? "))
try:
print("Wert {0} kommt im Array an Position Index {1} vor."
"Das ist das {2}. Element.".format(auswahl, liste.index(auswahl), liste.index(auswahl+1)))
except:
print("Wert {0} ist im Array nicht vorhanden.".format(auswahl))
Lösung von: Py Thon ()
// Hauptmethode
public static void main(String[] args) {
// Fordert zur Eingabe der Zahl auf
System.out.println("Geben Sie ihre Zahl an:");
int value;
// Liest die Zahl ein
try {
value = new Scanner(System.in).nextInt();
} catch (Exception e) {
value = 0;
}
// Zahlenarray
Integer[] array = new Integer[] { 2, 17, 10, 9, 16, 3, 9, 16, 5, 1, 17, 14 };
// Länge des Arrays damit in der Schleife nicht dauernd abgefragt wird
int length = array.length;
// Durchläuft Array und sucht Zahl
for (int i = 0; i < length; i++) {
// Wenn Zahl gefunden
if (array[i] == value) {
// Stellenausgabe
System.out.println("Wert " + value + " kommt im Array an Position Index " + i + " vor. Das ist das "
+ (i + 1) + ". Element.");
// Wartet auf Enter und räumt Zeit zum lesen ein. Beendet danach
try {
System.in.read();
} catch (Exception e) {
}
return;
}
}
// Wenn die Zahl nicht gefunden wurde wird dies ausgegeben
System.out.println("Wert " + value + " kommt im Array nicht vor.");
// Wartet auf Enter und räumt Zeit zum lesen ein. Beendet danach
try {
System.in.read();
} catch (Exception e) {
}
}
}
Lösung von: Sebastian Littel ()
//----------------------------------------
// Einfache C# Windows Forms Application.
// 2 Labels, 1 Textbox und einen Button.
//----------------------------------------
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace WindowsFormsApplication2
{
public partial class Form1 : Form
{
Int32[] felder = {2, 17, 10, 9, 16, 3, 9, 16, 5, 1, 17, 14};
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Int32 zahl = Convert.ToInt32(textBox1.Text);
Int32[] index = {-1,-1};
if (zahl < 0 || zahl > 20)
{
MessageBox.Show("Die zahl muss zwischen 0 und 20 liegen", "Fehler",MessageBoxButtons.OK);
}
index[0] = Array.IndexOf(felder, zahl);
index[1] = Array.LastIndexOf(felder, zahl);
if (index[0] < 0)
{
label2.Text = "Die Zahl wurde nicht gefunden";
return;
}
if (index[0] == index[1])
{
label2.Text = "Die Zahl wurde an " + (index[0]+1) + "-ter stelle gefunden";
}
else if (index[0] >= 0 && index[1] >= 0)
{
label2.Text = "Die Zahl wurde an " + (index[0] + 1) + "-ter und an " + (index[1] + 1) + "-ter Stelle gefunden.";
}
}
}
}
Lösung von: Manuel Burkard (Internet)
using System;
namespace findElementInArray
{
class Program
{
static void Main(string[] args)
{
int[] arr = { 1, 2, 3, 4 };
Console.WriteLine("number?: ");
try
{
int value = Convert.ToInt32(Console.ReadLine());
int pos = Array.IndexOf(arr, value);
if (pos > -1)
Console.WriteLine("found! on index {0}", pos);
else
Console.WriteLine("not found!");
}
catch
{
Console.WriteLine("Not a number!");
}
}
}
}
Lösung von: Lukas -- (-)
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int iFeld[12] = { };
int iVorkommen[12];
int iZahl;
int iJaNein = 0;
int iZähler = 0;
srand(time(NULL));
printf("Bitte geben sie eine Zahl ein: ");
scanf("%i", &iZahl);
fflush(stdin);
for(int i = 0; i < 12; i += 1) {
iFeld[i] = rand() % 49 + 1;
}
for(int i = 0; i < 12; i += 1) {
if(iZahl == iFeld[i]) {
iVorkommen[iZähler] = i + 1;
iZähler += 1;
iJaNein = 1;
}
}
system("cls");
if(iJaNein == 1) {
printf("Die Zahl kommt in diesen Stellen vor: ");
for(int i = 0; i < iZähler; i += 1) {
printf("%i, ", iVorkommen[i]);
}
} else {
printf("Zahlen: ");
for(int i = 0; i < 12; i += 1) {
printf("%i, ", iFeld[i]);
}
printf("\n\nDie Zahl %i ist im Array nicht vorhanden!", iZahl);
}
getchar();
return 0;
}
Lösung von: Elias Zech (Optics Balzers)
#find numbers in array:
def findinarray():
a = [1, 17, 10, 11]
x = 0
i = int(input("numer pls: "))
for x in range (0, 3):
if a[x] == i:
print ("found in : ", x, "\nyay!")
return 1
else:
return -1
if findinarray() == -1:
print("not found :(")
Lösung von: Robin Pal (Westfälische Hochschule Gelsenkirchen)
package programmierenuebungen;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
/**
*
* @author MadDeer
*/
public class findePositionInArray {
private static int[] array = {2, 17, 10, 9, 16, 3, 9, 16, 5, 1, 17, 14};
private static List<Integer> arrayList = new ArrayList();
public static void main(String[] args){
//Benutzereingabe holen
Scanner scanner = new Scanner(System.in);
System.out.print("Gesuchte Zahl: ");
int gesuchteZahl = scanner.nextInt();
boolean gefunden = false;
//Suchen
for(int a = 0; a < array.length; a++){
if (array[a] == gesuchteZahl){
System.out.println("(Array) Die gesuchte Zahl befindet sich an der Stelle: " + (a+1));
gefunden = true;
break;
}
}
if (!gefunden){
System.out.println("(Array) Die gesuchte zahl wurde nicht gefunden");
}
//Loesung mit einer Liste (wuerde ich bevorzugen!!)
for(int a:array){ arrayList.add(a); }
if (arrayList.indexOf(gesuchteZahl) != -1){
System.out.println("(List) Die gesuchte Zahl befindet sich an der Stelle: " + (arrayList.indexOf(gesuchteZahl)+1));
} else {
System.out.println("(List) Die gesuchte zahl wurde nicht gefunden");
}
}
}
Lösung von: Mad Deer (FH Ulm)
//F#
open System.Collections.Generic
let arr = [|2; 17; 10; 9; 16; 3; 9; 16; 5; 1; 17; 14|]
let findInArray num =
Array.findIndex
(fun x -> x = num) arr
let find num : unit =
try
let foundIndex = findInArray num
printfn "Number found. (Index: %d)" foundIndex
with :? KeyNotFoundException
-> printfn "Number not found."
//Test:
find 5
//Output:
//Number found at Index: 8
Lösung von: Vural Acar ()
private int find(int Zahl) {
int[] arr = { 2, 17, 10, 9, 16, 3, 9, 16, 5, 1, 17, 14 };
int Result = -1;
for(int i = 0; i < arr.Length; i++) {
if(arr[i] == Zahl) {
Result = i;
break;
}
}
if(Result == -1)
MessageBox.Show("Zahl ist im Array nicht enthalten!");
return Result;
}
Lösung von: Kurt Cobain ()
arr = ["2","17","10","9","16","3","9","16","5","1","17","14"]
input=gets.chomp
if arr.include?("#{input}")
index=arr.each_index.select{|i| arr[i] == "#{input}"}
puts "Wert #{input} kommt im Array an folgenden Indices vor: #{index.join(", ")}.Das #{"sind die Elemente" if index.length >1 }#{"ist das Element" if index.length <2 } an Position #{index.map{|x| x+1}.join(", ")}."
else
puts "Wert #{input} kommt im Array nicht vor"
end
Lösung von: Thomas Lüthi (Xovis AG)
class Zahlenreihe{
def j=0
def aReihe = [2, 17, 10, 9, 16, 3, 9, 16, 5, 1, 17, 14]
def function(i){
for (j in 1..12){
if (aReihe[j] != i)
j++
else return j
}
}
}
def zahlenreihe = new Zahlenreihe()
print "Eingabewert: "
def eingabewert = System.console().readLine()
def value = eingabewert as int
def erg = zahlenreihe.function(value)
if (erg != null)
println ("Wert ist an Stelle " +erg+ " und somit an Position " + (erg+1))
else println ("Wert kommt im Array nicht vor")
Lösung von: Sebastian Obst (HS Albstadt / Sigmaringen)
import java.util.Scanner;
public class Arrayzahlenfinden {
public static void main(String[] args) {
System.out.println("Bitte geben Sie die Zahl ein: ");
int zusuchendeZahle = 0;
try {
zusuchendeZahle = new Scanner (System.in).nextInt();
}catch (Exception e){
System.out.println("Bitte nur Zahlen eingeben");
}
int meinArray[] = {2, 17, 10, 9, 16, 3, 9, 16, 5, 1, 17, 14};
label: {
for (int i = 0; i < meinArray.length; i++) {
if (meinArray[i] == zusuchendeZahle) {
System.out.println("Wert " + zusuchendeZahle
+ " kommt im Array vor. Das ist das " + (i + 1)
+ ". Element.");
break label;
}
}
System.out.println("Die Zahl kommt im Array nicht vor");
}
}
}
Lösung von: Kaya kaya ()
#!/usr/bin/perl
use strict;
#testdaten
my @arr = (2, 17, 10, 9, 16, 3, 9, 16, 5, 1, 17, 14);
#einlesen
print "Value:";
my $input = <>;
#test
print "position:".position(@arr,$input).$/;
#gibt position oder -1 zurück
sub position {
for(0..($#_-1)){
return $_ if($_[$_] == $_[$#_]);
}
return(-1);
}
Lösung von: Paul Scheinast (http://scheinast.eu)
var theArray = [2, 17, 10, 9, 16, 3, 9, 16, 5, 1, 17, 14];
function searchInString(arr, elem) {
var results = [], i = 0;
for (i; i < arr.length; i++) if (arr[i] == elem) results.push(i);
if (results.length > 0) return elem + " an Position " + results.join(", ");
return "Nichts gefunden"
}
console.log(searchInString(theArray, prompt("Gesuchtes Element:")));
Lösung von: Lisa Salander (Heidi-Klum-Gymnasium Bottrop)
HTML-Code:
<form action="sucheArray.php" method="post">
<input type="number" min="0" name="num">Eine Zahl zwischen 1 und 20<br></input>
<input type="submit" value="Abschicken" /><input type="reset" />
</form>
PHP-Code:
<?php
$x = $_POST["num"];
$array1 = array(12, 19, 1, 9, 13, 6, 9, 5, 2, 5, 12, 17, 13);
$s = array_search($x, $array1);
if (is_int($s) ===true)
{
echo "Ihre Zahl " . $x . " hat die Indexnummer: " . $s;
}
else
{
echo "Die Nummer die Sie eingegeben haben ist nicht in unserem Array dabei.";
}
echo "<br><br>";
echo "<a href='sucheArray.html'>zurück zur Eingabe</a>";
?>
Lösung von: Maik Scheiermann (Powercloud GmbH)
import java.util.Scanner;
public class Start {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int[] zahlenArray = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30};
System.out.print("Zu suchende Zahl: ");
int zahl = in.nextInt();
int zahlenGefunden = 0;
int stelle = 0;
for (int i = 0;i< zahlenArray.length;i++) {
if(zahlenArray[i] == zahl) {
stelle=i;
zahlenGefunden++;
}
}
switch (zahlenGefunden) {
case 0:
System.out.println("Die Zahl " + zahl + " wurde nicht im Array gefunden.");
break;
case 1:
System.out.println("Die Zahl " + zahl + " befindet sich im Array an " + stelle + ". Stelle.");
break;
default:
System.out.println("Die Zahl kommt mehr als 1 mal im Array vor.");
}
}
}
Lösung von: Name nicht veröffentlicht
// 9.11.17 author Felix Oppliger
#include <iostream>
using namespace std;
int main(int argc, const char * argv[]) {
int zahlenmenge [12] = {2, 17, 10, 9, 16, 3, 9, 16, 5, 1, 17, 14};
int input; // Definiert Zahl die in der nächsten Zeile (cin) eingegeben werden soll.
cin >> input;
int npos = 0; // Zählwert der später immer 1 addiert bekommt, falls eine Zahl an einer Position nicht gefunden wurde
for (int i = 0; i <= 11; i++){
if (zahlenmenge[i] == input) // vergleicht input mit allen werten im Array, falls eine Zahl vorkommt wird die untere Zeile ausgegeben
cout << "Die Zahl " << input << " befindet sich im array an der stelle: " << i << endl;
if (zahlenmenge[i] != input) // vergleicht input mit allen Werten im Array, jedesmal wenn input und ein wert nicht identisch sind wird 1 auf npos addiert
npos++;
if (npos == 12) // Falls kein einziger wert identisch ist, ist npos 12, dann wird die untere Zeile ausgegeben
cout << "Die Zahl " << input << " kommt im Array nicht vor." << endl;
}
return 0;
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Suche_Element_in_Array
{
class Program
{
static void Main(string[] args)
{
int[] tabelle = new int[10];
Random zufall = new Random();
int gesucht = 0;
List<int> index = new List<int>();
for (int i = 0; i < tabelle.Length; i++)
{
tabelle[i] = zufall.Next(1, tabelle.Length);
}
foreach (int a in tabelle)
{
Console.WriteLine(a);
}
Console.WriteLine("Gib eine Zahl ein, nach der du suchen möchtest!");
gesucht =Convert.ToInt32( Console.ReadLine());
for (int i = 0; i < tabelle.Length; i++)
{
if (tabelle[i]==gesucht)
{
index.Add(i);
}
}
if (index.Count==0||index.Contains(-1))
{
Console.WriteLine($"Die Zahl {gesucht} ist nicht in der Tabelle enthalten");
}
else
{
Console.Write($"Die Zahl {gesucht} ist im Index ");
foreach (int zahl in index)
{
Console.Write(zahl+",");
}
Console.Write(" enthalten");
}
Console.ReadLine();
}
}
}
Lösung von: Chrischi Leif (S&N Datentechnik)
// NET 6.x | C# 10.x | VS-2022
var lst = new List<int>() { 3, 2, 17, 10, 9, 16, 3, 9, 16, 5, 1, 17, 14, 3 };
Console.WriteLine(GetElements(lst, 27, PosOfElem.first));
Console.WriteLine(GetElements(lst, 9, PosOfElem.first));
Console.WriteLine(GetElements(lst, 16, PosOfElem.last));
Console.WriteLine(GetElements(lst, 3, PosOfElem.all));
string GetElements(List<int> lst, int number, PosOfElem pos)
{
if (!lst.Contains(number)) return $"Die gesuchte Zahl ({number}) ist nicht vorhanden!";
var all = lst.Select((x, i) => new { number = x, position = i+1 }).ToList().Where(x => x.number == number).Select(x => x.position).ToList();
return $"Die gesuchte Zahl ({number}) befindet sich" + pos switch
{
PosOfElem.first => $" erstmals an folgender Stelle: {string.Join(", ", all.FirstOrDefault())}",
PosOfElem.last => $" letztmalig an folgender Stelle: {string.Join(", ", all.LastOrDefault())}",
_ => $" an folgenden Stellen: {string.Join(", ", all)}"
};
}
public enum PosOfElem { first, last, all }
Lösung von: Jens Kelm (@JKooP)
// C++ 17 | VS-2022
#include <iostream>
#include <vector>
using vi = std::vector<int>;
enum class POE{ first, last, all };
vi get_index_list(const vi& v_in, int cmp) {
vi v_out{};
for (auto it{ v_in.rbegin() }; it != v_in.rend(); ++it)
if(*it == cmp)
v_out.insert(v_out.begin(), v_in.rend() - it);
return v_out;
}
void print(const vi& v_in, const POE& pos = POE::all) {
if (v_in.size() == 0) {
std::cout << "Wert nicht gefunden\n";
return;
}
switch (pos) {
case POE::first: std::cout << v_in[0] << "\n"; break;
case POE::last: std::cout << v_in[v_in.size() - 1] << "\n"; break;
default:
for (auto it{ v_in.begin() }; it != v_in.end() - 1 ; ++it)
std::cout << *it << ", ";
std::cout << v_in.back() << "\n"; break;
}
}
int main() {
const vi v{ 3, 2, 17, 10, 9, 16, 3, 9, 16, 5, 1, 17, 14, 3, 17 };
const auto comp{ 17 };
const auto list{ get_index_list(v, comp) };
print(list, POE::first); // Position erstes Element (1-basiert)
print(list, POE::last); // letztes Element
print(list); // alle Elemente
}
Lösung von: Jens Kelm (@JKooP)
Verifikation/Checksumme:
{2, 17, 10, 9, 16, 3, 9, 16, 5, 1, 17, 14}
Eingabe 9
Ausgabe: "Wert 9 kommt im Array an Position Index 3 vor. Das ist das 4. Element."
"bzw. zusätzlich kommt Wert 9 an Index 6 (Position 7) vor."
Eingabe 11
Ausgabe: "Wert 11 kommt im Array nicht vor."
Aktionen
Neue Lösung hinzufügen
Bewertung
Durchschnittliche Bewertung:
Meta
Zeit: | 0.25 |
Schwierigkeit: | Mittel |
Webcode: | t2hd-0qw5 |
Autor: | Philipp G. Freimann (BBW (Berufsbildungsschule Winterthur) https://www.bbw.ch) |
Kommentare (2)
Danke Lauthe
Hab' gar nicht daran gedacht. Ich habe es nun in der Aufgabe besser formuliert...