Mi serve aiuto per questo programma di battaglia navale.

di Anonimizzato12359 il
11 risposte
#include <cstdlib>
#include <iostream>
#include <ctime>

using namespace std;

int main(int argc, char *argv[])
{
int n=0,x=0,y=0,a=0,b=0,i=0,c[10][10];
printf ("Battaglia navale");
printf ("\nInserisci righe e colonne.");
printf ("\nRighe: ");
scanf ("%d", x);
printf ("\nColonne: ");
scanf ("%d", y);
printf ("\nora inserisci il num delle navi: ");
scanf ("%d", n);
x=x-1;
y=y-1;
a=x;
b=y;
do
{
do
{
srand ((unsigned)time(NULL));
x = rand ( ) %a;
y=rand()%b;
}
while (c[x][y]==1);
c[x][y]=1;
i=i+1;
}
while (i<n);
i=0;
do
{
x=0;
y=0;
printf ("\nInserisci la coordinata di x: ");
scanf ("%d", x);
printf ("\nInserisci la coordinata di y: ");
scanf ("%d", y);
if (c[x][y]==1)
{
printf ("\nHai colpito una nave! Bravo!");
i=i+1;
c[x][y]=0;
}
else
printf ("\nAcqua, ritenta!");
}
while (i<n);
printf ("\n\nHAI VINTO!!!");
system("PAUSE");
return EXIT_SUCCESS;
}

Me lo compila, ma al momento dell'esecuzione si impalla. C'è un rimedio?

11 Risposte

  • Stai programmando in c o in c++? se usi il C allora cambia le librerie incluse in modo che siano quelle del c e non del c++... se invece usi il c usa il cin>> e non lo scanf, stessa cosa per il cout al posto di printf...
  • Usa i code tags e leggi il regolamento.
  • Programmo in c++!
  • skynet ha scritto:


    Usa i code tags e leggi il regolamento.
    printf e scanf non si usano in C++ quindi in cosa programmi?
  • Printf e scanf non esistono in c++.
  • luigibana96 ha scritto:


    printf e scanf non esistono in c++.
    printf e scanf sono funzioni di libreria C perfettamente utilizzabili in C++
  • So che sono "perfettamente utilizzabili in C++", essendo inclusi in stdio.h e quindi in cstdio, altrettanto vero è che std::cin e cout sono leggermente superiori per compattezza, e sono inclusi in iostream, che è richiamato nel sorgente del tuo codice. Sono tanto migliori che utilizzando cin e cout in questo caso l'errore non ci sarebbe stato... L'errore infatti è che in scanf devi utilizzare l'operatore &... del tipo:
    scanf("%d",&a);
    in tutti gli esempi di scanf.
    enjoy
  • luigibana96 ha scritto:


    So che sono "perfettamente utilizzabili in C++"
    Quindi perché affermare che addirittura "non esistono in C++" ?
    Semmai "non si dovrebbero usare", come detto in precedenza.
    altrettanto vero è che std::cin e cout sono leggermente superiori per compattezza.
    No ... sono molto superiori (e per tanti altri motivi molto più importanti della compattezza).
    Ma ciò non vuol dire automaticamente che in C++ "non esista" la printf e la scanf.
    Tanto che utilizzando cin e cout in questo caso l'errore non ci sarebbe stato... L'errore infatti è che in scanf devi utilizzare l'operatore &...
    Che discorso è ?

    L'errore non ci sarebbe stato se solo si fosse saputa usare la scanf correttamente.
    Lo stesso per la cin e la cout se si usano in maniera non corretta.
  • Beh, mi sembra che cin>>a; sia un po più semplice da applicare di scanf con tutte le considerazioni sui tipi in fase runtime .. Poi, l'enorme differenza di velocità e potenzialità del C rispetto agli oggetti del C++ non penso che la gente normale la veda, intendo a livello di operazioni base tipo questo esercizio. Del resto ti do ragione, esistono, ma preferisco gli oggetti. Ora non facciamone un dramma per qualche dichiarazione fuori posto che c'è qualcuno che sta in alto mare con la battaglia navale
  • luigibana96 ha scritto:


    Beh, mi sembra che cin>>a; sia un po più semplice da applicare di scanf con tutte le considerazioni sui tipi in fase runtime .. Poi, l'enorme differenza di velocità e potenzialità del C rispetto agli oggetti del C++ non penso che la gente normale la veda, intendo a livello di operazioni base tipo questo esercizio. Del resto ti do ragione, esistono, ma preferisco gli oggetti. Ora non facciamone un dramma per qualche dichiarazione fuori posto che c'è qualcuno che sta in alto mare con la battaglia navale
    Nessun dramma ... e non voglio andare fuori tema. Solo precisare che "non esiste" non è corretto.
  • Grazie a tutti, problema risolto
Devi accedere o registrarti per scrivere nel forum
11 risposte