Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2012
    Messaggi
    8

    [C++] Allocazione dinamica memoria

    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
    }

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Ma che vuol dire "non funziona"? Così non è facile darti una risposta ...

    Cosa fai per testare il programma? E da quale test ti accorgi che "non funziona"?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2012
    Messaggi
    8
    Compilo il programma, eseguo l'eseguibile e... si blocca
    Effettivamente non riesco a spiegarmi bene... sono _veramente_ alle primissime armi

    In ogni caso, mi sa che il tutto ha a che fare con la linea

    N = atoi(argv[1]), M = atoi(argv[2])

    che:

    1) non so davvero cosa significhi e che utilizzo abbia nel programma
    2) se sostituisco N e M con due valori numerici mi fa scomparire l'errore... il programma si esegue normalmente e da un valore (che devo verificare esser corretto o meno)
    3) l'errore stesso mi sembra di capire (ho istallato anche visual c++) ha a che fare con un puntatore nullo... che dovrebbe essere quell'array... forse...

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Originariamente inviato da Kard
    Compilo il programma, eseguo l'eseguibile e... si blocca
    Effettivamente non riesco a spiegarmi bene... sono _veramente_ alle primissime armi
    Cioè non hai scritto tu il codice ...

    In ogni caso, mi sa che il tutto ha a che fare con la linea

    N = atoi(argv[1]), M = atoi(argv[2])

    che:

    1) non so davvero cosa significhi e che utilizzo abbia nel programma
    Quel codice serve ad accettare 2 argomenti dalla linea di comando e assegnarli a N e M.
    Ovviamente dovrai fornirli tu. Se il programma si chiama prog.exe dovrai scrivere

    prog.exe 1 2

    per assegnare 1 a N e 2 a M.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2012
    Messaggi
    8
    Originariamente inviato da oregon
    Cioè non hai scritto tu il codice ...
    Esatto Era un esempio delle dispense del corso... tutto mi era abbastanza chiaro... tranne quella linea che...


    Se il programma si chiama prog.exe dovrai scrivere

    prog.exe 1 2

    per assegnare 1 a N e 2 a M.
    ...era una cosa banalissima... talmente banale che non ci sarei mai arrivato

    Ecco la riprova che i codici non commentati (soprattutto se usano funzioni mai spiegate) sono in grado di far perdere ore ed ore inutilmente

    Grazie davvero

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Originariamente inviato da Kard
    Ecco la riprova ...
    Ok ma al tuo posto avrei fatto una piccola ricerca della documentazione di

    atoi

    e di

    argv

    su google ...

    Certe volte un minimo di intraprendenza può facilmente sostituire i commenti ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2012
    Messaggi
    8
    hai pienamente ragione... avevo cercato atoi e non argv... e mi chiedevo pure che cavolo servisse in questo frangente

    ok... imparato anche l'importanza di cercare cose sensate

    grazie ancora!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.