Torna indietro   Hardware Upgrade Forum > Software > Programmazione

AMD EPYC Venice: dentro Zen 6, i SoC a 256 core e la sfida al costo della memoria
AMD EPYC Venice: dentro Zen 6, i SoC a 256 core e la sfida al costo della memoria
A Las Vegas AMD ha svelato i dettagli architetturali delle CPU EPYC di sesta generazione, note con il nome in codice Venice. Nuovi core Zen 6 e Zen 6c costruiti a 2 nanometri, fino a 256 core per socket, 16 canali di memoria, interfaccia PCI Express 6.0 e un'intera famiglia di proposte che va da Venice SP7 a Verano. Senza dimenticare la memoria, oggi la voce di costo più pesante in un server: AMD risponde con CXL 3.1 e con la tecnologia software MEXT, che porta la memoria flash dentro la gerarchia della DRAM.
HONOR Pad X9 Max recensione, schermo ultra large a meno di 400 euro
HONOR Pad X9 Max recensione, schermo ultra large a meno di 400 euro
HONOR Pad X9 Max mette un pannello IPS da 13 pollici con risoluzione 2,5K e refresh a 120 Hz davanti a una batteria da 10.100 mAh e a quattro altoparlanti. Il listino parte da 399,90 euro, per un progetto molto chiaro e ambizioso: schermo ampio, buon audio e giornate lontano dalla presa, a un prezzo che non pesa sul portafoglio
Lenovo ThinkPad X1 Carbon Gen 14: il business ultraleggero si rinnova dall’interno
Lenovo ThinkPad X1 Carbon Gen 14: il business ultraleggero si rinnova dall’interno
Con la quattordicesima generazione Lenovo ridisegna il suo ThinkPad più iconico attorno al nuovo Space Frame e ai processori Intel Core Ultra Series 3. Resta sotto 1Kg, è molto più semplice da riparare e si rivolge al professionista che lavora in mobilità, con un prezzo da prodotto di vertice.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 08-05-2008, 13:07   #1
x-t
Member
 
Iscritto dal: Sep 2006
Messaggi: 207
[c++] problema irrisolvibile con i puntatori! chiedo aiuto!

qualcuno mi sa dire perchè questo codice non compila?
Codice:
#include "stdafx.h"
#include <cstdlib>
#include <iostream>
#include <string>
#include <stdio.h>
#include <time.h>
#include <map>
#include <list>
#include <algorithm>
#include <iostream> 

using namespace std;

//definiamo l'elemento nodo_rete, ovvero un generico elemento della rete di sensori
typedef struct{
        list<int> lista_nodi_adiacenti;//è una lista che contiene gli identificativi dei nodi adiacenti
        bool principale;//true indica che è il nodo principale, false indica che è un nodo secondario
        int identificativo;//identificativo del nodo di rete in questione
        int identificativo_nodo_seguente;//identificativo del successivo nodo cui passare un pacchetto
        int numero_passi;
        } nodo_rete;


double p; //probabilità di morte di un nodo
double q; //probabilità che un nodo ne generi un altro
double xxx; //probabilità che un nodo generato si interconnetta con un altro qualsiasi nodo della rete
int contatore_identificativi=1;

//restituisce un numero random nell'intervallo [0,1)
double random01(){
       return ((double)rand() / ((double)(RAND_MAX)+(double)(1)) ); 
       }

void evolvi_rete(map<int,nodo_rete> *map){
	     
    //prima di tutto facciamo morire i nodi con probabilità p, e aggiorniamo la lista dei nodi adiacenti per tutti gli altri nodi
    cout<<"Morte dei nodi con probabilita' p="<<p<<"\n"<<endl;
	list<int> lista_nodi_da_eliminare;
	map<int, nodo_rete>::iterator it; //qui c'è l'errore
	for ( it=(*map).begin(); it!=(*map).end(); it++){
		if(it->first.identificativo!=0 && random01()<=p){
			lista_nodi_da_eliminare.insert(lista_nodi_da_eliminare.begin(),it->first);
		}
	}
	list<int>::iterator it1;
	for ( it1=lista_nodi_da_eliminare.begin(); it1!=lista_nodi_da_eliminare.end(); it1++){
		(*map).erase(it1);
	}
	
	//adesso facciamo nascere, per ogni nodo esistente, un nuovo nodo con probabilità q
	cout<<"Nascita dei nodi con probabilita' q="<<q<<"\n"<<endl;
	for ( it=(*map).begin(); it!=(*map).end(); it++){
		if(it->first!=0 && random01()<=q){
			nodo_rete nodoFiglio;
			nodoFiglio.identificativo=contatore_identificativi;
			cout<<"E' nato un nodo con identificativo "<<contatore_identificativi<<" dal nodo padre "<<it->first<<endl;
			contatore_identificativi++;
			nodoFiglio.principale=false;
			nodoFiglio.lista_nodi_adiacenti.insert(nodoFiglio.lista_nodi_adiacenti.begin(),it->first);
			it->second.lista_nodi_adiacenti.insert(it->second.lista_nodi_adiacenti.begin(), contatore_identificativi -1);
			
			//facciamo legare il nodo creato agli altri nodi della rete con probabilità xxx
			map<int,nodo_rete>::iterator it2;
			for ( it2=(*map).begin(); it2!=(*map).end(); it2++){
				if(random01()<=xxx && it2->first!=it->first){
					nodoFiglio.lista_nodi_adiacenti.insert(nodoFiglio.lista_nodi_adiacenti.begin(),it2->first);
					it2->second.lista_nodi_adiacenti.insert(it2->second.lista_nodi_adiacenti.begin(),contatore_identificativi -1);
				}
			
			}
		}
		(*map).insert(pair<int,nodo_rete>(contatore_identificativi -1, nodoFiglio));
	}
	//Applichiamo l'algoritmo di routing
	
	return;
}


int main(int argc, char *argv[]){
    
    //impostiamo i valori di default delle probabilità
    p=0.3;
    q=0.6;
    xxx=0.1;
    
    //creiamo e inizializiamo la mappa che contiene i nodi che fanno parte della rete di sensori

    map<int,nodo_rete> mappa_nodi_rete; 
    //creiamo il nodo principale e lo inseriamo in testa alla lista    
	nodo_rete nodo_principale;
    nodo_principale.principale=true;
    nodo_principale.identificativo=0;
    nodo_principale.numero_passi=0;
    nodo_principale.identificativo_nodo_seguente=0;
    nodo_principale.lista_nodi_adiacenti.insert(nodo_principale.lista_nodi_adiacenti.begin(),0);//il nodo principale è adiacente a se stesso    
    mappa_nodi_rete.insert(pair<int,nodo_rete>(0, nodo_principale));

    //cout<< (lista_nodi_rete.getNumElementi());


    srand( (unsigned)time(0) );                                               
    int scelta;
    do{
    
    cout<<"Programma gestione rete di sensori\n\n1.Imposta probabilita' di nascita\n2.Imposta probabilita' di morte\n3.Fai evolvere la rete di sensori\n4.Fai partire pacchetto da un nodo\n5.Calcola percorso medio\n6.Esamina stato della rete";
    cout<<"\n0.Esci\n";
    cout<<"\n\nScelta:";
    cin>>scelta;
    system("CLS");
      
        switch(scelta){
                       
                       case 1:{
                               double choose;
                               do{
                                  cout<<"Imposta la probabilita' di nascita q.\nIl valore attualmente impostato e' "<<q<<"\n\nN.B. La probabilita' deve avere un valore compreso tra 0 e 1.\n"<<endl;
                                  cin>>choose;
                                  system("CLS");
                                  if(choose>1 || choose <0) cout<<"\aLa probabilita' deve essere compresa tra 0 e 1!\n\n\a";
                                  else q=choose;
                              }while(choose>1 || choose <0);
                              } 
                              break; 
                       case 2:{
                               double choose;
                               do{
                                  cout<<"Imposta la probabilita' di morte p.\nIl valore attualmente impostato e' "<<p<<"\n\nN.B. La probabilita' deve avere un valore compreso tra 0 e 1.\n"<<endl;
                                  cin>>choose;
                                  system("CLS");
                                  if(choose>1 || choose <0) cout<<"\aLa probabilita' deve essere compresa tra 0 e 1!\n\n\a";
                                  else p=choose;
                              }while(choose>1 || choose <0);                          
                              } 
                              break;
                       case 3:{
                              //evolvi_rete(&lista_nodi_rete);
                              system("pause");
                              system("CLS"); 
                              } 
                              break;
                       case 5:{
                              //percorso medio
				}
                              break;                              
                       case 6:{
                              system("CLS");
                              cout<<"La rete possiede attualmente le seguenti caratteristiche:\n";
                              cout<<"Probabilita' di nascita di un nodo: "<<q<<endl;
                              cout<<"Probabilita' di morte di un nodo: "<<p<<endl;
                              //cout<<"Sono presenti complessivamente "<<lista_nodi_rete.getNumElementi()<<" nodi"<<endl;
                              cout<<"Mediamente il percorso tra un nodo secondario e il principale e' costituito da N passi"<<endl;
                              system("pause");
                              system("CLS"); 
                              } 
                              break;                                                                                                                                                                           
                       case 0:{
                               cout<<"Arrivederci\n";
                               system("pause");
                               break;
                               }
                            
                       default:{
                                cout<<"Voce di menu non valida: riprovare!!\n";
                                system("pause");
                               }
        }
    
    
    }while(scelta!=0);
    return 0;
}
preciso che si tratta di un programmino che simula una rete.
Il compilatore mi genera il seguente errore:
error C2062: tipo 'int' imprevisto
nella definizione dell'iteratore. Ma come è possibile? non capisco proprio.
L'unica cosa che sono riuscito a capire è che non è possibile utilizzare l'iterator fuori dal mai...ma mi sembra strano che non sia possibile farlo.
vi prego, datemi una mano.

Ultima modifica di x-t : 08-05-2008 alle 13:24.
x-t è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


AMD EPYC Venice: dentro Zen 6, i SoC a 256 core e la sfida al costo della memoria AMD EPYC Venice: dentro Zen 6, i SoC a 256 core ...
HONOR Pad X9 Max recensione, schermo ultra large a meno di 400 euro HONOR Pad X9 Max recensione, schermo ultra large...
Lenovo ThinkPad X1 Carbon Gen 14: il business ultraleggero si rinnova dall’interno Lenovo ThinkPad X1 Carbon Gen 14: il business ul...
Jabra Evolve3 85: le cuffie sia per l'intrattenimento che per il lavoro Jabra Evolve3 85: le cuffie sia per l'intratteni...
MSI PRO MAX EDGE AI+, Ryzen AI Max+ 395 e 128 GB per far girare in locale anche i modelli più grandi MSI PRO MAX EDGE AI+, Ryzen AI Max+ 395 e 128 GB...
iPhone 18e svelato in anticipo: ecco cos...
Rockstar ha un piano preciso per il mult...
Un iPhone Duo da oltre 65 mila dollari: ...
Anthropic: IPO tra 70 e 78 dollari, Goog...
SSHole in OpenSSH è già sfruttata: la CI...
Secure Future Group: il rischio cyber si...
Recensione Anker MagGo Power Bank 2 Pro,...
Salesforce Agentforce Coworker: il colle...
Sirui porta l’autofocus luminoso sotto i...
BluePhishing, il nuovo metodo di attacco...
Elon Musk parla dei propulsori Raptor 4 ...
NVIDIA, la vicenda Jensen Huang finisce ...
Spiare un monitor dal cavo HDMI: un'IA a...
Infomaniak lancia lo storage a oggetti S...
Rocket Factory Augsburg ha posticipato i...
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: 00:00.


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