Salve, premetto che sono _veramente_ alle prime armi e sto studiando il C++ per un esame universitario.
Nella spiegazione delle Liste mi sono imbattuto in un semplice programma per la risoluzione del Problema di Giuseppe Flavio.
Provo a compilarlo (ho istallato sia MinGW che Codeblock) nessun errore nella compilazione solamente che il programma eseguibile non funziona. Ho pensato a qualche errore nelle dispense da dove ho preso il codice ed ho trovato altre versioni (molto simili) in rete. Sempre stesso problema, riesco a compilarle ma quello che ne vien fuori "non funziona".
Temo di star facendo un qualche errore da principiante, ma pur avendoci perso delle ore non riesco davvero a capire il problema soprattutto trattandosi di codice non scritto da me ma presente in numerose dispense.
Ho provato, uso win7 a 64 bit, ad eseguire i programmi in modalità xp ma nessun risultato.
Inserisco il codice:
#include <iostream>
#include <cstdlib>
using namespace std;
struct node
{ int elem; node* next;
node(int e, node* t) { elem = e; next = t; };
};
typedef node* nlink;
int main(int argc, char *argv[])
{ int i, N = atoi(argv[1]), M = atoi(argv[2]);
nlink t = new node(1, 0); t->next = t; // creazione lista circolare di 1 nodo
nlink x = t;
for (i = 2; i <= N; i++)
x = (x->next = new node(i, t)); // inserimento i-esimo nodo nella lista
while (x != x->next)
{ // finché il nodo non punta a sé stesso:
for (i = 1; i < M; i++) x = x->next; // scorrimento di M-1 nodi
x->next = x->next->next; // rimozione M-simo nodo
}
cout << x->elem << endl; // output del superstite
}