Unser neuestes Mitglied: huanbengel

139 Besucher derzeit online [ Zeigen ]

Startseite | Werbefreies Forum: Jetzt Mitglied werden! | Login | Team | Suchen
Statistik | Hilfe / FAQ | Regeln
Willkommen auf dem xpBulletin Board, Gast.
Du bist nicht registriert oder eingeloggt.
Dein Letzter Besuch war am: 18.07.2018, 16:49 Uhr.
[ Alles als gelesen markieren ]
xpBulletin Board » Programmierung » C und C++ - Forum » brauche Hilfe bei Umsetzung einer Idee
Benutzer im Forum aktiv: Keine

[ Neue Antwort ]


Autor
Thema: brauche Hilfe bei Umsetzung einer Idee

 

Seiten (1): [1]

Neuer Beitrag 11.03.2015, 22:17
 brauche Hilfe bei Umsetzung einer Idee

#1 | Zitieren |

skiron ist Offline skiron
Code Reuser
Hallo Leute,

folgende Problemstellung:

ich hab eine variable Anzahl an Summanden. Eine Funktion soll mir zeigen, welche Summanden für eine möglichst nahe Annäherungan eine vorgegebene Zahl verwendet werden sollen, ohne dass die Summe die Zahl übersteigt

Also hier mal ein Beispiel zur besseren verständlichkeit:

summand1 = 2, summand2 = 3, summand3 = 4;
Summe (wird vom User vorgegeben): 6

/* hier muss die Funktion arbeiten*/

Ergebnis sollte sein: summand1 und summand2 (Summe:6)

Dabei ist zu beachten, dass die Werte der Summanden fest vergeben sind und insgesamt 39 Summanden vorhanden sind, diese aber nicht alle benutzt werden können (wird vom User festgelegt). diesen Abschnitt hab ich schon, mir gehts nur noch um die Funktion...

Nur wie setz ich das um? Ist das überhaupt realisierbar? Ich hoffe ihr könnt mir helfen
 Beiträge: 8 | Punkte: 16 | Wohnort: Regensburg | Registriert seit: 1224 Tagen (Mar 2015)
 
Neuer Beitrag 11.03.2015, 22:17
 Werbung

AdBot
Mister Ad

 
Neuer Beitrag 12.03.2015, 00:55
 Re: brauche Hilfe bei Umsetzung einer Idee

#2 | Zitieren |

trouff ist Offline trouff
Ancient Hacker
Hi, ich muss zugeben, dass ich das Problem nicht verstehe!

Warum ist in deinem Beispiel das Ergebnis nicht Summand1 und Summand3?

Summand1 = 2;
Summand3 = 4;

Summand1 + Summand3 = 6

Mfg trouff
 Beiträge: 932 | Punkte: 1.216 | Wohnort: pillepallearschgekna | Registriert seit: 4731 Tagen (Aug 2005)
 
Neuer Beitrag 12.03.2015, 00:55
 Werbung

AdBot
Mister Ad

 
Neuer Beitrag 12.03.2015, 02:12
 Re: brauche Hilfe bei Umsetzung einer Idee

#3 | Zitieren |

skiron ist Offline skiron
Code Reuser


Themenstarter/in
eh hubs, hab mich vertippt... ich korrigiers gleich im 1. Post.

es sollte so heißen: summand3 = 5
 Beiträge: 8 | Punkte: 16 | Wohnort: Regensburg | Registriert seit: 1224 Tagen (Mar 2015)
 
Neuer Beitrag 12.03.2015, 02:34
 Re: brauche Hilfe bei Umsetzung einer Idee

#4 | Zitieren |

skiron ist Offline skiron
Code Reuser


Themenstarter/in
ok, scheinbar bin ich entweder zu blind oder es gibt keinen "Edit"-Button...

am Besten ich mach noch ein paar Beispiele:

Beispiel 1:
Summand1 = 2, Summand2 = 5, Summand3 = 8, Summand4 = 4,
Summand5 = 16

vorgegebene Summe: 19
richtige Antwort: Summand1 und Summand5 oder Summand1, Summand2, Summand3 und Summand4

Beispiel 2:
Summand1 = 1, Summand2= 4, Summand3 = 3, Summand 4 = 9

vorgegebene Summe: 15
richtige Antwort: Summand1, Summand2, Summand 4



Wie gesagt, ich habe eine vorgegebene Anzahl an Summanden ( die Anzahl variiert zwischen den jeweiligen Programmaufrufen) und eine vorgegebene Summe (die möglichst effizient erreicht werden muss)... hab aber keinen Peil wie ich die Funktion schreiben muss, ohne dass ich da 39! Rechnungen hinschreiben muss...
 Beiträge: 8 | Punkte: 16 | Wohnort: Regensburg | Registriert seit: 1224 Tagen (Mar 2015)
 
Neuer Beitrag 12.03.2015, 12:20
 Re: brauche Hilfe bei Umsetzung einer Idee

#5 | Zitieren |

trouff ist Offline trouff
Ancient Hacker
Nochmal hi,

einen edit-Button müsste es eigentlich schon geben! Eigentlich ist der in der Leiste mittig unter deinem Beitrag versteckt . Solange niemand anderes auf deinen Beitrag geantwortet hat müsstest du eigentlich deinen deinen Beitrag editieren können. Der Button sieht in etwa so aus: !

So zu deinem Problem. Sicher bin ich mir noch nicht ob ich alles richtig verstanden habe. Warum ist bei Beispiel eins Summand1 und Summand5 auch eine richtige Lösung? Schließlich ergibt die andere Kombination doch die exakte Lösung von 19.

Sehe ich das richtig, dass die Addition der Summanden auf jeden Fall immer kleiner als die Vorgegebene Summe sein soll?

Trotzdem glaube ich zu wissen, worauf das ganze Problem hinaus läuft. Es hört sich so an, als handele es sich dabei um eine Aufgabe aus dem Informatikstudium? Dann habt ihr sicherlich auch die Lösung zu dem Problem gesprochen! Aber ich will mal nicht so sein und dich auf die richtige Fährte weisen:

Versuch es mal mit dem Rucksackproblem!
Wie du erkennen wirst ist die Aufgabe nicht ganz einfach, aber es haben sich schon viele schlaue Leute den Kopf darüber zerbrochen!

Hoffe ich konnte damit helfen!

Mfg trouff

Beitrag editiert von trouff am 12.03.2015, 12:22
 Beiträge: 932 | Punkte: 1.216 | Wohnort: pillepallearschgekna | Registriert seit: 4731 Tagen (Aug 2005)
 
Neuer Beitrag 12.03.2015, 12:30
 Re: brauche Hilfe bei Umsetzung einer Idee

#6 | Zitieren |

skiron ist Offline skiron
Code Reuser


Themenstarter/in
Danke für die Antwort,

1. @Editbutton: da is keiner, whs. weil bereits geantwortet wurde

2. jep, bin Informatikstudent, aber das Problem wurde noch nicht besprochen und ist auch keine Aufgabe aus dem Studium. Ich bastle einfach gerne ein bisschen rum und hab mir die Aufgabe sozusagen selbst gestellt^^

3. @Beispiel1: die Summe darf erreicht werden, somit stimmt natürlich deine Antwort.. war wohl zu spät ^^


ok, rucksackproblem... noch nie gehört aber ich werd mich mal informieren!

Danke dir bis hierher, wenn ich noch fragen hab dann komm ich wieder auf dich zurück, ok?
 Beiträge: 8 | Punkte: 16 | Wohnort: Regensburg | Registriert seit: 1224 Tagen (Mar 2015)
 
Neuer Beitrag 12.03.2015, 12:46
 Re: brauche Hilfe bei Umsetzung einer Idee

#7 | Zitieren |

trouff ist Offline trouff
Ancient Hacker
ne

Klar. Dafür ist das Forum ja da! Müsste mich aber auch wieder ins Rucksack-Problem einlesen. Das ist bei mir schon etwas her, dass ich damit zu tun hatte.

Du darfst aber auch gerne wiederkommen, wenn du die Lösung für dein Problem gefunden hast. Dann kannste z.B. sagen: "Jo hat geklappt, danke! Hier ist der Code zu dem Problem ." Das ist einfach für die Leute praktisch, den den Thread per google finden und wissen wollen ob die Tipps zur Lösung geführt haben.

Wir du die Antwont formulierst soll dir allerdings vollkommen freigestellt sein!

In diesem Sinne:

Mfg trouff
 Beiträge: 932 | Punkte: 1.216 | Wohnort: pillepallearschgekna | Registriert seit: 4731 Tagen (Aug 2005)
 
Neuer Beitrag 12.03.2015, 12:49
 Re: brauche Hilfe bei Umsetzung einer Idee

#8 | Zitieren |

skiron ist Offline skiron
Code Reuser


Themenstarter/in
also ich hab das Rucksackproblem jetz mal überflogen und muss sagen: ich glaube das ist genau mein Problem

klar, sobald der Code steht stell ich ihn hier rein! (oder in Algorithmen und Datenstrukturen ???? )

DANKE NOCHMAL!
 Beiträge: 8 | Punkte: 16 | Wohnort: Regensburg | Registriert seit: 1224 Tagen (Mar 2015)
 
Neuer Beitrag 12.03.2015, 12:57
 Re: brauche Hilfe bei Umsetzung einer Idee

#9 | Zitieren |

trouff ist Offline trouff
Ancient Hacker
Servus,

Zitat:
ich glaube das ist genau mein Problem



genau deshalb dachte ich eben, dass es sich um eine Aufgabe aus dem Studium handelt .

Ich denke es macht sinn, wenn du den Code hier veröffentlichst. Dann ist deine Frage mit einer Antwort abgeschlossen!

Zitat:
DANKE NOCHMAL!



Kein Ding!

Mfg trouff
 Beiträge: 932 | Punkte: 1.216 | Wohnort: pillepallearschgekna | Registriert seit: 4731 Tagen (Aug 2005)
 
Neuer Beitrag 13.03.2015, 09:14
 Re: brauche Hilfe bei Umsetzung einer Idee

#10 | Zitieren |

skiron ist Offline skiron
Code Reuser


Themenstarter/in
nee, is ein reines Freizeitprojekt

nächstes Problem: ich hab anfangs ein Array ar[39][9], wobei meine Auswahl an Summanden ja nur ein paar dieser 351 Zahlen sind.

In einer Funktion sort_items werden mir die entsprechenden Summanden der Größe nach sortiert (von groß nach klein) und auch nur die in Frage kommenden Summanden zurückgegeben.
In der Main will ich die dann in ein neues Array sorted_items[Anzahl_Summanden] speichern. Ich hatte dies folgendermaßen versucht:

Code:

int sorted_items[Anzahl_Summanden];
sorted_items = sort_items(ar);



sort_items gibt mir ein array zurück, das die sortierten Summanden enthält.

Leider wird mir dann eine Fehlermeldung ausgegeben:

incompatible types when assigning to type int.

Mir ist auch klar, weshalb: ich gebe ja mit der Funktion sort_items ein Array zurück (also eigentlich Pointer auf die Adresse vom Anfang des Arrays) und mit meinem Versuch würde ich ja die Adresse des arrays ändern, was scheinbar nicht geht (habs gegoogelt^^).

Nur wie macht man das denn dann? ich will mir eigentlich kein globales Array anlegen, welches ich dann in der Funktion verwenden könnte. Gibts da ne bessere Lösung? hab leider nichts gefunden

Beitrag editiert von skiron am 13.03.2015, 14:51
 Beiträge: 8 | Punkte: 16 | Wohnort: Regensburg | Registriert seit: 1224 Tagen (Mar 2015)
 
Neuer Beitrag 13.03.2015, 09:14
 Werbung

AdBot
Mister Ad

 
Neuer Beitrag 13.03.2015, 16:03
 Re: brauche Hilfe bei Umsetzung einer Idee

#11 | Zitieren |

trouff ist Offline trouff
Ancient Hacker
wie sieht denn die funktionsdefinition der Funtion aus?

allokierst du den speicher für den array auch in der funktion oder definierst du einfach den array? Das würde nähnlich nicht gehen soweit ich weiß, da der array nur innerhalb der funktion gültig ist.

Mfg trouff
 Beiträge: 932 | Punkte: 1.216 | Wohnort: pillepallearschgekna | Registriert seit: 4731 Tagen (Aug 2005)
 
Neuer Beitrag 13.03.2015, 17:35
 Re: brauche Hilfe bei Umsetzung einer Idee

#12 | Zitieren |

skiron ist Offline skiron
Code Reuser


Themenstarter/in
ok, da muss ich jetzt ein bisschen weiter ausholen...

also so sieht meine Funktion aus:

Code:

int sort_Items(int field[39][9],int Fruchtsorte, int felderanzahl){
    int tmp, i, j, hilfs_field[felderanzahl], u = 0;

    for (i = 0; i < 39; i++) {
        if (field[i][8] == 1){
            hilfs_field[u] = field[i][Fruchtsorte];
            u++;
        }
    }
    for (i = 0; i < felderanzahl; i++) {
        for (j = 0; j < felderanzahl; j++){
            if (hilfs_field[i] < hilfs_field[j]){
                tmp = hilfs_field[i];
                hilfs_field[i] = hilfs_field[j];
                hilfs_field[j] = tmp;
            }
        }
    }
return hilfs_field;
}



und in der main wird die Funktion wie folgt aufgerufen :

Code:

    sort_Items(field, Fruchtsorte, felderanzahl);



Das ganze ist ein Projekt, das folgenden Gedanken als Hintergrund hat: Ein Landwirt besitzt 39 Felder, wobei jedes Feld mit 8 verschiedenen Fruchtsorten bepflanzt werden kann. Allerdings stehen nicht alle Felder zur Verfügung, da bereits einige bepflanzt sind. Dies wird in field[i][8] mit 1 (frei) oder 0 (belegt) gespeichert (wird vorher vom User als Eingabe gefordert). Der Wert der Arrays field[i][j] mit i zwischen 0 und 38 und j zwischen 0 und 7 den möglichen Ernteertrag der jeweiligen Fruchtsorte auf dem jeweiligen Feld beträgt.

Zur Erklärung der einzelnen Variablen:

alle sind vom Typ Integer, die einzelnen Variabeln bedeuten folgendes:

- field ist das array und ist als field[39][9] deklariert.
- Fruchtsorte ist die Variable, die die zu pflanzende Fruchtsorte angibt (Wert zwischen 0 und 7)
- felderanzahl ist die Anzahl, wie viele Felder maximal zur Verfügung stehen
- hilfs_field ist dann das Array, das nur die Werte der Fruchtsorte der zur Verfügung stehenden Felder enthält. Dieses Array soll als sortiertes Array von der Funktion zurückgegeben werden und in das Array short_item[felderanzahl] in der main abgespeichert werden.

Wichtig: Es darf nur auf einer Kopie (call-by-value) gearbeitet werden, da ich die arrays in anderen Funktionen auch brauche.


Ein Lösungsvorschlag (noch nicht getestet) wäre, ein weiteres Array in der main anzulegen, dieses mit call-by-reference in der Funktion zu sortieren. Allerdings hab ich dann nochmal ein Array mehr. Das müsste doch auch einfacher gehen, oder?
 Beiträge: 8 | Punkte: 16 | Wohnort: Regensburg | Registriert seit: 1224 Tagen (Mar 2015)
 
Neuer Beitrag 13.03.2015, 18:05
 Re: brauche Hilfe bei Umsetzung einer Idee

#13 | Zitieren |

trouff ist Offline trouff
Ancient Hacker
skiron schrieb:

Ein Lösungsvorschlag (noch nicht getestet) wäre, ein weiteres Array in der main anzulegen, dieses mit call-by-reference in der Funktion zu sortieren. Allerdings hab ich dann nochmal ein Array mehr. Das müsste doch auch einfacher gehen, oder?



Entweder so, oder du allokierst den speicher innerhalb der function (Stichwort : "alloc, malloc, calloc"). und dann kannst du aus der funktion einen pointer auf diesen speicherbereich zurückgeben.

Aber du solltest, wissen, dass du nach dem du den Speicher allokiert hast auch wieder freigeben musst, wenn er nicht mehr benötigt wird!

Mfg trouff
 Beiträge: 932 | Punkte: 1.216 | Wohnort: pillepallearschgekna | Registriert seit: 4731 Tagen (Aug 2005)
 
Neuer Beitrag 14.03.2015, 00:30
 Re: brauche Hilfe bei Umsetzung einer Idee

#14 | Zitieren |

skiron ist Offline skiron
Code Reuser


Themenstarter/in
trouff schrieb:

Aber du solltest, wissen, dass du nach dem du den Speicher allokiert hast auch wieder freigeben musst, wenn er nicht mehr benötigt wird!




jep, weiß ich sonst hab ich ja nen Memoryleak, wäre auf Dauer nicht sinnvoll

aber Array in ein anderes Array speichern ohne eine for-Schleife laufen zu lassen funktioniert nicht, hab ich das richtig verstanden?

oder gibts da i-wie ne Bib dafür, ähnlich wie die string.h und strcpy?
 Beiträge: 8 | Punkte: 16 | Wohnort: Regensburg | Registriert seit: 1224 Tagen (Mar 2015)
 
Neuer Beitrag 14.03.2015, 02:02
 Re: brauche Hilfe bei Umsetzung einer Idee

#15 | Zitieren |

trouff ist Offline trouff
Ancient Hacker
hi,

du willst doch kein array kopieren sondern nur auf die daten zugreifen?!

Dann kannst du doch einfach den zeiger auf dein array zurückgeben, wenn du den speicher in der funktion allokiert hast. du brauchst natürlich dann noch die länge des arrays, aber die hast du ja.

Wenn du die adresse des array von aussen per parameter mitgibst, dann hast du doch nach der abarbeitung deiner funktion die daten in dem jeweiligen array!

Also irgendwie versteh ich dein problem nicht ganz!

Mfg trouff

Edit: Versuche mal genauer zu erklären woran es hapert. Poste vllt mal die Funktion in ihrem aktuellen Zustand! Dann kann man vllt besser helfen.

Beitrag editiert von trouff am 16.03.2015, 14:30
 Beiträge: 932 | Punkte: 1.216 | Wohnort: pillepallearschgekna | Registriert seit: 4731 Tagen (Aug 2005)
 
Neuer Beitrag 14.03.2015, 02:02
 Werbung

AdBot
Mister Ad

Seiten (1): [1]

  

xpBulletin Board » Programmierung » C und C++ - Forum » brauche Hilfe bei Umsetzung einer Idee

[ Neue Antwort ]


Heute ist der 18.07.2018, 16:49 Uhr

Sämtliche Beiträge geben die Meinung des jeweiligen Verfassers wieder.
Für den Inhalt der Beiträge sind ausschließlich die Autoren verantwortlich.


Powered by: xpBulletin Board Version 2.3.0
Generiert in 0.0742 Sekunden
« Übersicht | @Twitter | @Facebook | Sitemap | Impressum »