C/c++ Übungsaufgabe

Kann mir bitte jemand bei folgender Aufgabe weiterhelfen:

Entwickeln Sie ein C-Programm, in dem zunächst in ein int-array mit zehn Elementen Werte eingelesen werden. Durch eine Eingabeüberprüfung soll sichergestellt werden, dass jeder eingelesene Wert ≥ 10 und ≤ 20 ist und und dass er obendrein ganzzahlig ist. Verletzt eine Eingabe diese Bedingungen, soll eine erneute Eingabe solange erforderlich sein, bis sie den Regeln entspricht. Im Anschluss soll ausgegeben werden, welcher Wert wie oft im array gespeichert ist (Histogramm). Nicht eingegebene Werte sollen dabei nicht erscheinen.

Mein Ansatz:

#include
using namespace std;

int main(void)
{
int i;
float Zahl[10];

cout>Zahl[i];

}

Lieber EthanHunt,

ich habe dir hier eine Lösungsvariante in C# implementiert. Die müsstest du dann halt noch umsetzen. Aber das Prinzip ist sprachenunabhängig, so dass das nicht all zu schwer sein dürfte.

Viel Erfolg,

Gruß,

Franzi

using System;
using System.Text;

namespace Helper
{
class Program
{
static void Main(string[] args)
{
int[] array = new int[10];

for (int i = 0; i = 10 && temp

Hallo

Ja, der Ansatz stimmt doch.
Ich würde statt float vielleicht eher int verwenden, denn es sollen ja explizit Ganzzahlen sein.

Nun einfach noch beim Einlesen den Wertebereich überprüfen

Die Ausgabe kann beliebig komplex gestaltet werden. Am einfachsten nimmt man den ersten Wert, geht durch das Array durch und zählt, wie oft er noch vorkommt. Ausgabe, und ab zum nächsten Wert (den man nicht schon gezählt hat).

Noch etwas: Für Aufgaben ist wer-weiss-was explizit nicht gedacht.

Gruss,
– ZEBU

Prinzipiell ja, nur musst du noch prüfen ob die Eingabe im Intervall von 10 bis 20 liegt.

Also, der Ansatz ist schon mal nicht schlecht!
Hier habe ich dir mal das ganze etwas weiter ausgeführt

#include
#include
#include
#include
using namespace std;

int main(void){
const int numbers = 3;
const int min_val = 10;
const int max_val = 20;
int i = 0;
int tmp;
int zahlenIn[numbers];
char in[80];

cout histogramm[0]++;
zahlen[i]==14 --> histogramm[3]++;

Das musst du natürlich schöner machen z.b.:
11-11=0
12-11=1
13-11=2
also musst du nur 11 abziehen und du bekommst die richtige position im Zielarray. nächster Schritt wäre dann die 11 mit constanten zu ersetzen. In diesem Fall wäre das immer „min_val-1“.

Nun hast du im histogramm alle anzahlen und musst sie nur noch ausgeben wie du sie brauchst.

Wenn du noch was brauchst gib bescheid… Ich speichere mir die komplette Lösung noch ein paar Tage

LG
Hannes

Boa tausend Dank!
Hast mir wirklich weitergeholfen.

VG
Marco