Torna indietro   Hardware Upgrade Forum > Software > Programmazione

NZXT H9 Flow RGB+, Kraken Elite 420 e F140X: abbiamo provato il tris d'assi di NZXT
NZXT H9 Flow RGB+, Kraken Elite 420 e F140X: abbiamo provato il tris d'assi di NZXT
Nelle ultime settimane abbiamo provato tre delle proposte top di gamma di NZXT nelle categorie case, dissipatori e ventole. Rispettivamente, parliamo dell'H9 Flow RGB+, Kraken Elite 420 e F140X. Si tratta, chiaramente, di prodotti di fascia alta che si rivolgono agli utenti DIY che desiderano il massimo per la propria build. Tuttavia, mentre i primi due dispositivi mantengono questa direzione, le ventole purtroppo hanno mostrato qualche tallone d'Achille di troppo
ASUS ROG Swift OLED PG34WCDN recensione: il primo QD-OLED RGB da 360 Hz
ASUS ROG Swift OLED PG34WCDN recensione: il primo QD-OLED RGB da 360 Hz
ASUS ROG Swift OLED PG34WCDN è il primo monitor gaming con pannello QD-OLED Gen 5 a layout RGB Stripe Pixel e 360 Hz su 34 pollici: lo abbiamo misurato con sonde colorimetriche e NVIDIA LDAT. Ecco tutti i dati
Recensione Nothing Phone (4a) Pro: finalmente in alluminio, ma dal design sempre unico
Recensione Nothing Phone (4a) Pro: finalmente in alluminio, ma dal design sempre unico
Nothing Phone (4a) Pro cambia pelle: l'alluminio unibody sostituisce la trasparenza integrale, portando una solidità inedita. Sotto il cofano troviamo uno Snapdragon 7 Gen 4 che spinge forte, mentre il display è quasi da top dig amma. Con un teleobiettivo 3.5x e la Glyph Matrix evoluta, è la prova di maturità di Carl Pei. C'è qualche compromesso, ma a 499EUR la sostanza hardware e la sua unicità lo rendono un buon "flagship killer" in salsa 2026
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 27-02-2007, 08:59   #1
AYAMY
Senior Member
 
L'Avatar di AYAMY
 
Iscritto dal: Dec 2003
Messaggi: 704
[c++] semplice controllo con If che non va

Ciao a tutti...
Ho un programmino che mi genera dei numeri secondo un certo algoritmo...
Ora io vorrei fare in modo che sono i numeri che sono compresi tra 2 estremi (min e max) siano accettati...
Per fare questo ho usato un ciclo for con dentro un if.... ma non va...secondo voi dove sta l'inghippo?
NB: Z.next mi restituisce un numero secondo un certo algoritmo
poi io associo questo numero alla variabile "dentrocode" e con questa faccio il controllo.... ma non va...mi escono anche valori che non sono compresi tra min e max????
mi date una mano please?
Grazie

Codice:
for (int i = 0; i < 99; ++i)
        {
          dentrocode=Z.Next();
          if ( dentrocode >= min and dentrocode <= max )
             {
              vector[k] = dentrocode; 
              k++;
              }        
              }
     for (int i = 0; i < 99; ++i)
         { 
          cout << "Vettore Valori" << endl;
          cout << vector[i] << endl;
          }
AYAMY è offline   Rispondi citando il messaggio o parte di esso
Old 27-02-2007, 09:15   #2
Ziosilvio
Moderatore
 
L'Avatar di Ziosilvio
 
Iscritto dal: Nov 2003
Messaggi: 16214
Per caso, i numeri fuori dall'intervallo, sono solo tra gli elementi di vector con i>=k?
Perché, se è così, il problema è solo che tu visualizzi tutti gli elementi del vettore, e non solo quelli in cui hai messo davvero un numero: e in generale, la memoria allocata è "sporca" e può contenere qualsiasi valore.
__________________
Ubuntu è un'antica parola africana che significa "non so configurare Debian" Chi scherza col fuoco si brucia.
Scienza e tecnica: Matematica - Fisica - Chimica - Informatica - Software scientifico - Consulti medici
REGOLAMENTO DarthMaul = Asus FX505 Ryzen 7 3700U 8GB GeForce GTX 1650 Win10 + Ubuntu
Ziosilvio è offline   Rispondi citando il messaggio o parte di esso
Old 27-02-2007, 09:22   #3
reptile9985
Senior Member
 
L'Avatar di reptile9985
 
Iscritto dal: Jul 2004
Messaggi: 1685
l'indice i del primo ciclo for come mai non viene usato dentro al pezzo di codice?? e k dove l'hai inizializzato??
perchè scrivi and e non &&?? come vedi qualcosa da sistemare c'è
reptile9985 è offline   Rispondi citando il messaggio o parte di esso
Old 27-02-2007, 09:51   #4
AYAMY
Senior Member
 
L'Avatar di AYAMY
 
Iscritto dal: Dec 2003
Messaggi: 704
innanzitutto grazie x l'aiuto...
K l'ho inizializzato in alto nella parte del programma che non ho postato... adesso ho anche sostituito and con && ma continua a non andare...

Quote:
Per caso, i numeri fuori dall'intervallo, sono solo tra gli elementi di vector con i>=k?
forse non ho capito.. quello che mi stai dicendo.....
se con il ciclo
Codice:
for (int i = 0; i < 99; ++i)
        {
          pippo << Z.Next() << "\n";
          dentrocode=Z.Next();
          if ( dentrocode >= min && dentrocode <= max )
             {
              vector[k] = dentrocode; 
              k++;
              }        
              }
faccio prima il controllo sul valore del numero generato.. e poi lo metto nel vettore chiamato vector[k]... in questo vettore ci dovrebbero essere solo valori compresi tra min e max... giusto?
Ad esempio.. Z.next() mi da come valore 79... min=81 , max = 99 l'IF quindi dovrebbe scartare 79 visto che è minore di min ..e poi continuare l'esecuzione e rieseguire il ciclo for in cui mi viene generato un altro numero da Z.next() sul quale riandare a fare il test di controllo...
E' giusto l'algoritmo? oppure ho sbagliato ..e non funziona come ho scritto?


PS: ecco tutto il codice

Quote:
#include <iostream>
#include <fstream>
#include "newran03/newran.h"

int main()
{
ofstream pippo;
pippo.open("zuzzurellone.txt", ios::out);
cout << "Prego Inserise L'Angolo (cioe' la Media della Gaussiana)" << endl;
cout << "La Varianza verrà calcolata come il 10% della Media" << endl;
float media;
cin >> media;
float sigma;
int k = 0;
sigma = (0.1*media);
float min = media-3*sigma;
float max = media+3*sigma;
float dentrocode;
float vector[100];
srand(time(0));
int mostra = rand()%100;
char s[]="test file";
MotherOfAll urng;
Random::Set(urng);
Normal N;
SumRandom Z = media + sigma * N;
for (int i = 0; i < 99; ++i)
{
pippo << Z.Next() << "\n";
dentrocode=Z.Next();
if ( dentrocode >= min && dentrocode <= max )
{
vector[k] = dentrocode;
k++;
}
}
for (int i = 0; i < 99; ++i)
{
cout << "Vettore Valori" << endl;
cout << vector[i] << endl;
}
//std::cout << std::endl;
cout << "Test eseguito trovi i risultati in zuzzurellone.txt" << endl;
cin.get();
cin.get();
}
PS: Si appoggia a delle librerie esterne che si possono trovare qui

http://www.robertnz.net/ftp/newran03.zip

GRAZIE ANCORA
AYAMY è offline   Rispondi citando il messaggio o parte di esso
Old 27-02-2007, 10:13   #5
reptile9985
Senior Member
 
L'Avatar di reptile9985
 
Iscritto dal: Jul 2004
Messaggi: 1685
il secondo for dovrebbe fare il controllo su k, perchè nel vettore hai inserito k elementi nell'intervallo desiderato:
Codice:
for (int i = 0; i < k; ++i)
{
cout << "Vettore Valori" << endl;
cout << vector[i] << endl;
}
il resto del tuo codice sembra ok, a meno che l'errore non sia nell'uso della libreria esterna...
reptile9985 è offline   Rispondi citando il messaggio o parte di esso
Old 27-02-2007, 10:26   #6
AYAMY
Senior Member
 
L'Avatar di AYAMY
 
Iscritto dal: Dec 2003
Messaggi: 704
ho messo K ma continua a non andare..
come è possibile?
Ma che cavolo di errore c'è nell'IF... mi sembra che sia tutto apposto?
Secondo Voi l'IF funziona nel modo che ho postato poco sopra.. escludendo i valori esterni a min e max?
AYAMY è offline   Rispondi citando il messaggio o parte di esso
Old 27-02-2007, 11:02   #7
yorkeiser
Senior Member
 
L'Avatar di yorkeiser
 
Iscritto dal: Jul 2006
Città: Tristram
Messaggi: 517
L'if mi pare giusto, non credo ti dia problemi quello.

Non ho idea di cosa sia quel SumRandom Z, ma se viene gestito come una lista/collection, nelle seguenti istruzioni
Codice:
pippo << Z.Next() << "\n";
dentrocode=Z.Next();
la scorri in avanti 2 volte.

Potresti aver bisogno di fare una cosa del tipo

Codice:
float temp=Z.Next();
pippo << temp << "\n";
dentrocode=temp;
__________________
Il sole è giallo
yorkeiser è offline   Rispondi citando il messaggio o parte di esso
Old 27-02-2007, 13:42   #8
AYAMY
Senior Member
 
L'Avatar di AYAMY
 
Iscritto dal: Dec 2003
Messaggi: 704
Non ci credo....
Non è possibile.. non va nemmeno così!!!
Ma perchè eppure è di una semplicità imbarazzante... ma non trovo il problema...
che cavolo..

Ragà.. chiedo il vostro Aiuto...
AYAMY è offline   Rispondi citando il messaggio o parte di esso
Old 27-02-2007, 14:23   #9
yorkeiser
Senior Member
 
L'Avatar di yorkeiser
 
Iscritto dal: Jul 2006
Città: Tristram
Messaggi: 517
Con qualche semplice modifica al tuo programma ti mostro che l'if è giusto (non sono riuscito a linkare le tue librerie, mancano dei .lib e non so in alternativa quali .cpp includere). In qualsiasi caso ti riporto il codice, che non cambia nulla dal tuo punto di vista.

Codice:
#include <iostream.h>
#include <time.h>
#include <math.h>
#include <stdlib.h>
int main()
{
cout << "Prego Inserise L'Angolo (cioe' la Media della Gaussiana)" << endl;
cout << "La Varianza verrà calcolata come il 10% della Media" << endl;
float media;
cin >> media;
float sigma;
int k = 0;
sigma = (0.1*media);
float min = media-3*sigma;
float max = media+3*sigma;
float dentrocode;
float vector[100];
srand(time(0));
int mostra = rand()%100;
char s[]="test file";
for (int i = 0; i < 99; ++i)
{
dentrocode=(float)(rand()%100);
if ( dentrocode >= min && dentrocode <= max )
{
vector[k] = dentrocode;
k++;
}
}
for (i = 0; i < 99; ++i)
{
cout << "Vettore Valori" << " Min:" << min << " Max:" << max << endl;
cout << vector[i] << endl;
}
cin.get();
cin.get();
}
Il problema è che stampi TUTTO l'array (ovvero da 0 a 99) e non solo per i k indici che hai filtrato per vector (ovvero i valori realmente compresi tra min e max).


Di seguito ti riporto l'output del programma:

Codice:
La Varianza verrÓ calcolata come
56
Vettore Valori Min:39.2 Max:72.8
65
Vettore Valori Min:39.2 Max:72.8
58
Vettore Valori Min:39.2 Max:72.8
58
Vettore Valori Min:39.2 Max:72.8
66
Vettore Valori Min:39.2 Max:72.8
62
Vettore Valori Min:39.2 Max:72.8
70
Vettore Valori Min:39.2 Max:72.8
43
Vettore Valori Min:39.2 Max:72.8
55
Vettore Valori Min:39.2 Max:72.8
66
Vettore Valori Min:39.2 Max:72.8
49
Vettore Valori Min:39.2 Max:72.8
68
Vettore Valori Min:39.2 Max:72.8
Ovvero fino a un certo indice l'output è giusto, poi ovviamente negli indici finali (dal valore massimo di k fino a 99) sfori da min e max perchè questi valori non dovrebbero far parte di vector. Il linkare o meno le librerie che hai postato non dovrebbe cambiar nulla
__________________
Il sole è giallo
yorkeiser è offline   Rispondi citando il messaggio o parte di esso
Old 27-02-2007, 14:27   #10
AYAMY
Senior Member
 
L'Avatar di AYAMY
 
Iscritto dal: Dec 2003
Messaggi: 704
... adesso il mio programma è così
Codice:
#include <iostream>
#include <fstream>
#include "newran03/newran.h"

int main()
{
 ofstream pippo;
    pippo.open("zuzzurellone.txt",  ios::out);
    cout << "Prego Inserise L'Angolo (cioe' la Media della Gaussiana)" << endl;
    cout << "La Varianza verrà calcolata come il 10% della Media" << endl;
    float media;
    cin >> media;
    float sigma;
    int k = 0;
    sigma = (0.1*media);
    float min = media-3*sigma;
    float max = media+3*sigma;
    float dentrocode;
    float vector[100];
    srand(time(0));
    int mostra = rand()%100;
    char s[]="test file";
    MotherOfAll urng;
	Random::Set(urng);
	Normal N;
	SumRandom Z = media + sigma * N;
	for (int i = 0; i < 99; ++i)
        {
          float temp =Z.Next();
          pippo << temp  << "\n";
          dentrocode=temp;
          if ( dentrocode >= min && dentrocode <= max )
             {
              vector[k] = dentrocode; 
              k++;
              }        
              }
     for (int i = 0; i < k; ++i)
         { 
          cout << "Vettore Valori" << endl;
          cout << vector[i] << endl;
          }                            
	//std::cout << std::endl;
	cout << "Test eseguito trovi i risultati in zuzzurellone.txt" << endl; 
    cin.get();
    cin.get();
}
quindi nella stampa dei valori del vettore ci si ferma a k ma escono comunque valori che sono esterni agli estremi....

Sto iniziando a sflippare...
Concettualmente dovrebbe andare...
Il codice mi sembra giusto e una volta lanciato non ne vuole sapere di funzionare nel modo giusto....

Qualche altra idea su dove possa stare il problema?

AYAMY è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


NZXT H9 Flow RGB+, Kraken Elite 420 e F140X: abbiamo provato il tris d'assi di NZXT NZXT H9 Flow RGB+, Kraken Elite 420 e F140X: abb...
ASUS ROG Swift OLED PG34WCDN recensione: il primo QD-OLED RGB da 360 Hz ASUS ROG Swift OLED PG34WCDN recensione: il prim...
Recensione Nothing Phone (4a) Pro: finalmente in alluminio, ma dal design sempre unico Recensione Nothing Phone (4a) Pro: finalmente in...
WoW: Midnight, Blizzard mette il primo, storico mattone per l'housing e molto altro WoW: Midnight, Blizzard mette il primo, storico ...
Ecovacs Goat O1200 LiDAR Pro: la prova del robot tagliaerba con tagliabordi integrato Ecovacs Goat O1200 LiDAR Pro: la prova del robot...
La navicella spaziale indiana Gaganyaan ...
Le macchie sullo scudo termico di Orion ...
Anthropic ha un'AI che trova falle in Wi...
I 10 migliori sconti Amazon del weekend:...
Con un coupon scendono ancora: le super ...
Minimo storico per Samsung Galaxy S26 Ul...
Si è conclusa la missione lunare ...
EK Waterblock si arrende agli aumenti, i...
Geekbench si aggiorna: tutti i test con ...
Per la prima volta un computer quantisti...
Telecamere Reolink 4K su Amazon: Wi-Fi 6...
Anthropic vuole farsi i chip da sola? Co...
Il fondatore di Framework: il personal c...
JBL Live Flex 3 a 129€ su Amazon: ANC ad...
Come un uomo ha costruito un'azienda da ...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 12:49.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v