Pagina 3 di 5 primaprima 1 2 3 4 5 ultimoultimo
Visualizzazione dei risultati da 21 a 30 su 42

Discussione: [C++] Mano o for?

  1. #21
    Ho risolto in altro modo.
    Anzichè i++ ho messo ++i (post-incremento) e funge.
    Dici che non è il caso di scrivere codice con la febbre a 38?
    Comunque non conosco il C, o meglio, lo conosco indirettamente via C++.

  2. #22
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da signoredeltempo
    Ho risolto in altro modo.
    Anzichè i++ ho messo ++i (post-incremento) e funge.
    Non è proprio così.

    Intanto ++i è il preincremento (invece i++ è il postincremento).

    E poi, in questo modo, il primo elemento dell'array utilizzato sarà il numero 1 e non il numero 0, che verrà saltato. Per ovviare, dovrai far partire i da -1 e quindi all'inizio dovrà essere

    i=-1;

    Dici che non è il caso di scrivere codice con la febbre a 38?
    No, anche se questi problemi sono veramente elementari.

    Comunque non conosco il C, o meglio, lo conosco indirettamente via C++.
    Ma che dici ?

    pre e postincremento fanno parte del bagaglio di chi programma C e C++ ... non c'è differenza ...

    Fai una pausa e fai abbassare la febbre ... oltre a studiare la teoria di base sui libri.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #23
    Ho messo in ordine il codice (con header ed altri source), in serata vedo di finirlo.
    Grazie ancora.

  4. #24
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da signoredeltempo
    Ho messo in ordine il codice (con header ed altri source), in serata vedo di finirlo.
    Grazie ancora.
    Di nulla
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #25
    Utente bannato
    Registrato dal
    Apr 2012
    Messaggi
    510
    Originariamente inviato da signoredeltempo
    Poi, perchè se tolgo "array[i++] = 0; " non funge? Il valore impostato dal compilatore, non dovrebbe essere scambiato con a?
    Perché altrimenti i resta sempre uguale a zero, e viene inizializzato solo il primo elemento.

  6. #26
    Buonasera.
    Ho scritto il codice ed ho corretto gli errori, ma ne rimangono alcuni alla quale non riesco a dare risposta.
    Sono tre sorgenti ed un header, cerco di inserirli nel modo più ordinato possibile:

    main.cpp
    codice:
    #include <iostream>
    #include "header magia.h"
    using namespace std;
    
    
    int main()
    {
        cout << "Benvenuto nel gioco. Pensa un numero da 1 a 100. Quando sei pronto, premi INVIO." << endl;
        cin.get();
        tabella_generale(tabella1);
        tabella_generale(tabella2);
        tabella_generale(tabella3);
        tabella_generale(tabella4);
        tabella_generale(tabella5);
        tabella_generale(tabella6);
        tabella_generale(tabella7);
    
        cout << "Hai pensato al numero " << numero << " ?" << endl;
        return 0;
    }
    funzioni magia.cpp
    codice:
    #include <iostream>
    #include <string>
    #include "header magia.h"
    using namespace std;
    
    void tabella_generale(int (*numeriTabella)()){
    cout << info << endl;
    int num_da_sommare= (*numeriTabella)();
    
    cout << "si / no: \t";
    string risposta;
    getline(cin, risposta);
    if (risposta == "si")
     numero += num_da_sommare;
    
    }
    
    int tabella2()
    {
        int x=2, y=1, i=0, array[SIZE_ARRAY];
        while (x < 100)
        {
           array[i++] = x;
            x+=y;
            if (y ==3) y=1;
            else
            y=3;
        }
         for (; i<SIZE_ARRAY; i++)
          cout << array[i] << "\t";
    return 2;
    }
    
    int tabella1()
    {
        for (int i = 1; i<SIZE_ARRAY; i+=2)
         cout << i << "\t";
    return 1;
    }
    
    int tabella3()
    {
      //SEQUENZA: +1 - +1 - +5
      int x=4, y=1, counter=0, array[SIZE_ARRAY], i=0;
        while (x < 100)
        {
            array[i++] = x;
            x+=y;
            if (counter == 0 ){
             counter++;
             y=1;
             x +=y;}
             else if (counter == 1){
              counter++;
              y=5;
              x +=y;}
              else 
              counter = 0;
        }
        for (int i = 0; i<SIZE_ARRAY; i++)
         cout << array[i] << "\t";
    
    
        return 4;
    }
    
    int tabella4()
    {
    
    
        for (int i = 8; i<=99; i++)
         {
           if (i == 15 || i == 31 || i==47 || i == 63 )
            {i += 9; }
    
            cout << i << "\t";
    
         }
    return 8;
    }
    funzioni magia2.cpp

    codice:
    #include <iostream>
    #include "header magia.h"
    using namespace std;
    
    int tabella5()
    {
    
        for (int i = 16; i<96; i++)
        {
            if (i == 31 || i==63 )
            i += 17;
    
            cout <<i<<"\t";
        }
    
        return 16;
    }
    
    int tabella6()
    {
    
        for (int i = 32 ; i<=100; i++)
        {
            if (i == 63)
            i+=(96-63);
    
            cout << i << "\t";
    }
    return 32;
    }
    
    int tabella7()
    {
       for (int i = 64; i<=100; i++)
        cout << i << "\t";
    
    return 64;
    }
    header magia.h
    codice:
    /*
    Numero tabelle 7;
    Tabelle che possono essere visualizzate con semplice for: 1-2
    Tabelle che necessitano di essere visualizzate singolarmente: 2-3-4-5-6;
    Opzioni di visualizzazione:
    -7 funzioni per le singole tabelle;
    */
    
    void tabella_generale(int (*)());
    int tabella2();
    int tabella3();
    int tabella4();
    int tabella5();
    int tabella6();
    int tabella7();
    int tabella1();
    
    const char *info="Il numero che hai pensato, si trova in questa tabella?";
    int numero = 0;
    const int SIZE_ARRAY = 100;
    Gli errori riportati sono i seguenti:
    codice:
    black2@black:~/Scrivania/magia.cpp$ g++ main.cpp funzioni\ magia.cpp funzioni\ magia2.cpp -o magia.out 
    /tmp/ccqT5RTB.o:(.data+0x0): multiple definition of `info'
    /tmp/cc2kENXB.o:(.data+0x0): first defined here
    /tmp/ccqT5RTB.o:(.bss+0x0): multiple definition of `numero'
    /tmp/cc2kENXB.o:(.bss+0x0): first defined here
    /tmp/ccxrWclC.o:(.data+0x0): multiple definition of `info'
    /tmp/cc2kENXB.o:(.data+0x0): first defined here
    /tmp/ccxrWclC.o:(.bss+0x0): multiple definition of `numero'
    /tmp/cc2kENXB.o:(.bss+0x0): first defined here
    collect2: ld returned 1 exit status
    black2@black:~/Scrivania/magia.cpp$
    Come posso risolvere?
    Se volete, posso allegare il file che contiene le tabelle (ed i relativi numeri contenuti).
    Naturalmente, ogni consiglio/modifica è ben accetto/a.
    Ringrazio nuovamente per il tempo impiegato.
    Auguro una buona serata.

  7. #27
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Queste righe

    codice:
    const char *info="Il numero che hai pensato, si trova in questa tabella?";
    int numero = 0;
    non devono stare nel file .h ma nel .cpp
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  8. #28
    Come mai?
    Dovrei inserirle in tutti i sorgenti cpp?

  9. #29
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Mettili nel main.cpp e nel .h inserisci

    codice:
    extern const char *info;
    extern int numero;
    per indicare agli altri moduli che quegli elementi sono esterni.

    Se hai dubbi, studia la keyword

    extern

    del C/C++ su un libro di testo.

    P.S. In realtà avresti dovuto aprire un altro thread perché questo non ha a che vedere con il precedente.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  10. #30
    E la loro definizione dove va?
    E' proprio necessario usare extern?

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 © 2025 vBulletin Solutions, Inc. All rights reserved.