Aiutoooo!!!! E urgente!!!

di il
9 risposte

Aiutoooo!!!! E urgente!!!

Ho iniziato a programmare in c da circa 3 4 giorni e domani pomeriggio devo portare all'uni un programma che prenda in input un numero di 5 cifre e me lo stampi spezzettato, cioe ogni cifra deve distare dall'altra di 3 spazi.(Se si inserisce 12345 il programma deve stampare 1 2 3 4 5).

Ecco qui il programma:

#include <stdio.h>

void main()
{

int num1, num2, num3, num4, num5;

printf("Immettere un numero a 5 cifre ");

scanf("%d%d%d%d%d", &num1,&num2,&num3,&num4,&num5);

printf("%d %d %d %d d",num1,num2,num3,num4,num5);

}


Il compiler non mi da nessun errore (sempre che il programma poi funzioni, eh!!!! perche non ne sono affatto sicuro!!!!)
Poi pero il linker mi visualizza il seguente messaggio di errore

Linking...
LIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol _WinMain@16
Debug/stampa distanziata.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.

stampa distanziata.exe - 2 error(s), 0 warning(s)


Considerando che questo messaggio mi compare anche in un altro programma che sono sicurissimo di aver scritto bene senza nessun tipo di errore, da che cossa puo dipendere????

E cmq.... ci sono errori nel programmino che ho scritto!!!!

Vi ringrazio tutti anticipatamente, sperando di non avervi fatto perdere tempo con questa cavoltata, pero .......... ho bisogno di qlc che mi aiutiii!!!!!!

9 Risposte

  • Re: Aiutoooo!!!! E urgente!!!

    Molto semplice...
    Stai cercando di creare un eseguibile windows (win32 application)... mentre il codice che hai scritto funziona solo per una console application...
    Non so che tipo di compilatore utilizzi, ma almeno in MSVC/C++ sono due cose nettamente differenti...

    Nel caso di un eseguibile windows non hai ovviamente a disposizione ne' scanf() ne' printf()... inoltre la main ha il seguente prototipo:

    INT WINAPI WinMain(HINSTANCE hInst,HINSTANCE hPrev,LPSTR lpCmdLine,int nCmdShow)

    e non certo una banale

    int main(int argc,char **argv)

    PS: Il programma che hai scritto tra l'altro non risolve il problema che hai postato... verifica tu stesso appena riesci a compilarlo...

    Ciaociao :)

    Venite a visitarci qui: http://spazioinwind.libero.it/bottomapsoftware
  • Re: Aiutoooo!!!! E urgente!!!

    Si ho notato che il programma non funziona!!!!
    Ma c'è qlc che puo scrivermi il codice del programma o almeno spiegarmi come fare?!?!???!!

    Grazie.....
  • Re: Aiutoooo!!!! E urgente!!!

    Qlc="qualcuno" o "qualcosa"?

    Per compilare il programma che hai scritto (e tutti i programmi similari che usano la main() standard) basta che crei una "Win32 Console Application"...

    Per il codice, la cosa migliore è leggersi un bel libro sul C...
    Ecco comunque un po'di codice che ti risolve il problema:
    <pre id=code><font face=courier size= id=code>#include <stdio.h>
    #include <conio.h>

    void main(void)
    {
    char numero[6];
    int contatore=0;
    int c;

    printf("Immettere un numero a 5 cifre: ");

    while(contatore<5) //Per cinque cifre
    {
    c=getch(); //Prendo un carattere
    if(c>'0' && c<'9') //Se è numerico
    {
    numero[contatore++]=(char)c; //Lo inserisco nell'array
    putch(c); //E lo stampo a video
    }
    }
    printf("\n"); //Vado a capo

    //Quando ne ho letti cinque
    for(int i=0;i<5;i++)
    {
    printf("%c ",numero[i]); //Li stampo spaziati di 3 caratteri
    }

    printf("\n"); //Vado a capo
    }</font id=code></pre id=code>
    Ciaociao

    Venite a visitarci qui: http://spazioinwind.libero.it/bottomapsoftware
  • Re: Aiutoooo!!!! E urgente!!!

    Non credo che la soluzione di bottomap sia la soluzione corretta per il tuo problema. Lui aggira il problema usando dei char per prendere il numero di 5 cifre. Credo che la soluzione più adatta sia di questo tipo:

    #include <stdio.h>

    void main()
    {

    int num1,cifra;
    int div=10000;

    do {
    printf("Immettere un numero a 5 cifre ");

    scanf("%d", &num1);
    } while ((num1 > 99999) || (num1 < 10000 )); /* controllo che il numero abbia 5 cifre */

    do{
    cifra=num1/div; /* divido per avere la cifra giusta da scrivere*/
    num1=num1%div; /* faccio il resto per avere la parte rimanente del numero*/
    printf("%d " , cifra ); // scrivo la cifra
    div=div/10; // aggiorno il divisore
    }while (div != 0); //test per vedere se ho finito
    }

    Nella mia soluzione prendo il numero e lo metto in un intero poi dividendo e prendendone il resto estraggo una alla volte le cifre e le visualizzo. Questa soluzione credo che si avvicini molto di piu a quella del tuo professore.
    Ciao spero di esserti stato utile ciao

    Salendo le scale ieri sera ho incontrato un'uomo che non c'era neanche oggi lui è qua spero tanto che se ne andrà
  • Re: Aiutoooo!!!! E urgente!!!

    Dimenticavo la tuo soluzione iniziale è sbagliatissima perchè cerchi di prendere 5 numeri da tastiera e non 5 CIFRE e poi semplicemente dividi i 5 NUMERI con degli spazi ad esempio io potrei inserire (21542,241,147,1,3546) e la tua soluzione sarebbe 21542 241 147 1 3546 una cosa che non centra nulla con le specifiche del tuo programma. %d serve per prendere NUMERI e non CIFRE.

    ciao ciao

    Salendo le scale ieri sera ho incontrato un'uomo che non c'era neanche oggi lui è qua spero tanto che se ne andrà
  • Re: Aiutoooo!!!! E urgente!!!

    Peccato che sia la cosa più lenta che puoi fare... va bene la didattica, ma quando poi ti trovi a dover programmare sul serio non sai che pesci pigliare...

    Avevo pensato anch'io alla soluzione di Molok, ma visto che è una soluzione terribile per quanto riguarda le prestazioni l'avevo scartata a piè pari... comunque usala pure, è perfettamente funzionante...

    Tra l'altro, visto che hai in input dei caratteri ed in output dei caratteri (su cui non è richiesta nessuna operazione aritmetica) non vedo perché non usare dei semplicissimi e leggerissimi char...

    Ciaociao

    Venite a visitarci qui: http://spazioinwind.libero.it/bottomapsoftware
  • Re: Aiutoooo!!!! E urgente!!!

    Ringrazio tutti per le risposte che ki avete dato. Mi sono state utilissime.
    Avendo iniziato a programmare da poco onestamente nn so ancora dire quale sia la migliore, pero almeno avendone due diverse inizio a capire come bisogna ragionare.
    Un grazie speciale, sperando di poter contare di nuovo sul vostro aiuto.....

    Matteo
  • Re: Aiutoooo!!!! E urgente!!!

    Non so che aggiungere a parte che bottomup è un monello
  • Re: Aiutoooo!!!! E urgente!!!

    Un monello???

    Venite a visitarci qui: http://spazioinwind.libero.it/bottomapsoftware
Devi accedere o registrarti per scrivere nel forum
9 risposte