|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Mar 2011
Messaggi: 125
|
[C++] Problema nel determinare la dipendenza di una variabile da un altra
Scusate per il titolo poco chiaro
O meglio, avendo nel mio caso come limiti della x -5 e 11 potrei fare if else una marea di volte, ma sono sicuro che c'è un metodo più semplice |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jul 2003
Città: Alessandria
Messaggi: 10167
|
Hmm, difficile capire... Prova a mettere uno spezzone di codice o a fare un esempio.
Perchè così a naso mi verrebbe da dirti Codice:
y++; x+= 0.5; Controlli se il marker=1, se si aumenti x di 0.5
__________________
Dell XPS 13 (9350) :: i5-2500K - HD6870 - AsRock Z68 Pro3 - Corsair Vengeance 8GB (4x2) DDR3 :: Samsung Galaxy S4 GT-i9505
|
|
|
|
|
|
#3 | |
|
Senior Member
Iscritto dal: Dec 2005
Città: Istanbul
Messaggi: 1817
|
Quote:
Invece che usare una variabile usa una funzione o un metodo per una delle due. Ad esempio Codice:
double y() { return k + x / 2; }
Non sei stato molto chiaro pero'... cosa vuoi ottenere ?
__________________
One of the conclusions that we reached was that the "object" need not be a primitive notion in a programming language; one can build objects and their behaviour from little more than assignable value cells and good old lambda expressions. —Guy Steele |
|
|
|
|
|
|
#4 |
|
Member
Iscritto dal: Mar 2011
Messaggi: 125
|
Vi ringrazio per le risposte, però aspettate, cerco di spiegarmi meglio: in pratica l'utente deve decidere il valore di y. Poniamo che metta 16: in questo caso x=5. Se invece avesse messo 17, x=5,5 e così via.
|
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
L'utente inserisce il valore di y. Tu lo prendi e chiami la tua funzione passandogli questo valore, e lei ti restituisce x.
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Codice:
class CoupledVars
{
int y;
int x;
public:
CoupledVars(int x, int y) : x(x), y(y) {}
void IncreaseY() { y++; x += 0.5; }
int GetY() { return y; }
int GetX() { return x; }
};
|
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Jul 2005
Città: Vicenza
Messaggi: 1570
|
Io a quel punto seguirei più una logica ad eventi, così da svincolare di per sè i due valori e far si che la variazione del valore Y possa modificare un numero indefinito di valori in base alla necessità.
Tramite i puntatori a funzione si può realizzare la cosa con facilità, però il tutto dipende anche dal grado di conoscenza del C++ dell'autore del topic (non che sia un concetto avanzato come difficoltà, ma viene giustamente trattato dai capitoli intermedi di un buon manuale). |
|
|
|
|
|
#8 |
|
Member
Iscritto dal: Mar 2011
Messaggi: 125
|
Oggi è l'undicesimo giorno da quando ho iniziato a studiare tale linguaggio, e non ho esperienze precedenti di programmazione
Grazie a tutti. |
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: May 2001
Messaggi: 12955
|
La matematica è nostra amica, quello che cerca l'autore del thread è una (semplice credo) funzione matematica.
Dovrebbe essere qualcosa del tipo: Codice:
x = BASE + 0.5*y; Se x parte da -5 (quando y è 0), allora: Codice:
x = -5 + 0.5*y Codice:
double func(int y)
{
return -5 + 0.5*y;
}
Mancano delle informazioni. |
|
|
|
|
|
#10 | |
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Quote:
|
|
|
|
|
|
|
#11 | |
|
Member
Iscritto dal: Mar 2011
Messaggi: 125
|
Quote:
Conoscete tutti Dungeons&Dragons? Beh, è un (IL) gioco di ruolo da tavolo, e in pratica per determinare i modificatori delle varie statistiche sul manuale è riportata una tabella che mostra che quando ad esempio la Forza è a 16 o 17 il suo modificatore è a 3 (prima avevo scritto 5, ma ho sbagliato), quando è a 18 o 19 è 4 e così via. Quello che vi chiedo è un modo per aumentare il modificatore di 0,5 ogni volta che la statistica aumenta di 1 (poi tanto metto lround e si sistema tutto). Se necessitate di ulteriori chiarimenti non esitate a chiedere, anzi, mi fate solo un favore |
|
|
|
|
|
|
#12 | |
|
Senior Member
Iscritto dal: May 2001
Messaggi: 12955
|
Quote:
Puoi applicare la formula: Codice:
x = -5 + 0.5*y se y = 16, x = 3 se y = 17, x = 3,5 se y = 18, x = 4 E così via... |
|
|
|
|
|
|
#13 | |
|
Member
Iscritto dal: Mar 2011
Messaggi: 125
|
Quote:
Codice:
#include <cstdlib>
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
int livello = 0;
int FOR=0;
float forr= -6 + 0.5*FOR;
cout << "Livello: ";
cin >> livello;
cout << endl;
cout << "FOR: ";
cin >> FOR;
cout << endl;
cout << forr;
system("PAUSE");
return EXIT_SUCCESS;
}
Mi rimane un problema però: praticamente mi segna sempre che forr è uguale a -6, questo credo sia poiché non salva in memoria il valore dato a FOR. Dovrei quindi ricorrere ad un puntatore come mi è stato consigliato precedentemente? Li ho studiati ieri per la prima volta, devo ancora capirli bene, ma mi basterebbe per il momento sapere se sono l'unica strada o ce ne sono di alternative. Accidenti, quanto torna utile l'algebra lineare
|
|
|
|
|
|
|
#14 |
|
Member
Iscritto dal: Mar 2011
Messaggi: 125
|
fingete che io non abbia scritto il codice di prima, perché mi sono accorto di essermi complicato la vita per niente
una volta ottenuta l'equazione il gioco è fatto in pratica, ma me ne accorgo solo ora |
|
|
|
|
|
#15 |
|
Member
Iscritto dal: Mar 2011
Messaggi: 125
|
programma ultimato! era davvero molto semplice, anche se all'inizio avevo messo -6 anziché -5 e non mi tornavano i conti
a breve posto il download, casomai ci fosse qualche altro giocatore di D&D che ne voglia far uso EDIT: ecco qua https://mega.co.nz/#fm Ultima modifica di Heretic Curse : 01-02-2013 alle 00:30. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 04:37.




















