Buch Cover Buch Cover Buch Cover Buch Cover

Web-Code: - Webcode Help

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

Bitte melde dich an um einen Kommentar abzugeben

Kommentare (2)

gressly 8. Oktober 2014 14:26   reply report
Lauthe
Sollte in der Verifikation/Checksumme bei der Eingabe von 9 nicht zu lesen sein, dass der Wert 9 am Index 3 und 6 vorkommt 4. und 7. Element?

Danke Lauthe
Hab' gar nicht daran gedacht. Ich habe es nun in der Aufgabe besser formuliert...
Lauthe 13. August 2014 13:54   reply report
Sollte in der Verifikation/Checksumme bei der Eingabe von 9 nicht zu lesen sein, dass der Wert 9 am Index 3 und 6 vorkommt 4. und 7. Element?

21 Lösung(en)

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

Bewertung

Durchschnittliche Bewertung:

Eigene Bewertung:
Bitte zuerst anmelden

Meta

Zeit: 0.25
Schwierigkeit: Mittel
Webcode: t2hd-0qw5
Autor: Philipp G. Freimann (BBW (Berufsbildungsschule Winterthur) https://www.bbw.ch)

Download PDF

Download ZIP

Zu Aufgabenblatt hinzufügen