Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    [C] Scacchi

    ciao ho un problema, devo svolgere un esercizio..la traccia è questa:

    "Scrivere un programma che, dato un pezzo degli scacchi,
    riempia una matrice (scacchiera) con dei numeri interi. Ogni casella contiene un va-
    lore intero che rappresenta il numero di locazioni raggiungibili dal pezzo posizionato
    in quella casella. La scacchiera `e una matrice quadrata con 8 righe ed 8 colonne. Le
    righe sono numerate da sinistra a destra e le colonne sono numerate dall’alto verso il
    basso. Ad esempio, se il pezzo `e il cavallo, nella posizione (0,0) ci sar`a un intero che
    rappresenta il numero di possibili locazioni raggiungibili se il cavallo `e posizionato
    nella casella (0,0) della scacchiera. In (0,1) avremo il numero di posizioni che un
    cavallo posizionato in (0,1) pu`o raggiungere e cos`ı via.
    Input: Il metodo main legger`a un intero che rappresenta il tipo di pezzo degli
    scacchi. Vengono considerati quattro pezzi:
    - 1 per la torre.
    - 2 per l’alfiere.
    - 3 per il cavallo.
    - 4 per la regina.

    Verr`a poi richiamata la funzione da implementare che prender`a in input il tipo di
    pezzo.
    Output: La funzione stamper`a la scacchiera (matrice con 8 righe ed 8 colonne)
    riempita con i valori interi come definito sopra. Potete consultare il link degli scacchi
    (scritto sopra) se non conoscete le possibili mosse dei diversi pezzi. Ricordate che la
    regina pu`o effettuare sia le mosse della torre che dell’alfiere ma non del cavallo."

    Sono riuscito (credo) a scrivere la porzione di codice relativa alla Torre e all'Alfiere (e in teoria, di conseguenza, anche alla Regina), ho due problemi:
    1- il cavallo...non so neanche cm iniziare >_<
    2- come unire le porzioni di codice nello stesso programma nel quale queste 4 funzioni vengono richiamate dal Main (se l'utente in input mette 1, il main dovra richiamare la funzione Torre..2, l'alfiere ecc ecc)

    le porzioni di codice sarebbero queste:

    TORRE
    #include <stdio.h>

    int torre()
    {
    int n, i, tot, j, t;

    for(n=0; n < 8; n++);{

    for(i=0; i < 8; i++);{

    tot==0;
    for(j=0; j < 8; j++);{

    tot = tot + 1;
    t[n][i]= tot;
    }

    t[n][i]= t[n][i] *2;
    }

    }

    }

    ALFIERE
    int alfiere()
    {
    int n, i, d1, d2, tot, alf;

    for(n=0; n < 8; n++){

    for(i=0; i < 8; i++){

    for(d1=0; i < 8, i++){

    for(d2=0; d2 < 8, d2++){

    if(d2=d1 || d2=(8-d1)){

    tot=tot+1;
    alf[n][i]=tot;
    }
    }
    }
    }
    }
    }

  2. #2
    ho cercato di andare avanti..ora compila (la torre e l'alfiere, cavallo e regina non li ho ancora scritti) ma non dà l'output che mi serve...mi escono due ZERO uno sotto l'altro in colonna..help :_:

    #include <stdio.h>
    #include <stdlib.h>

    int torre()
    {
    int n, i, tot=0, j, t[8][8];

    for(n=0; n < 8; n++){

    for(i=0; i < 8; i++){

    for(j=0; j < 8; j++){
    tot = tot + 1;
    t[n][i]= tot;
    }

    t[n][i]= t[n][i] *2;
    }

    }
    return 0;
    }




    int alfiere()
    {
    int n, i, d1, d2, tot, alf[8][8];

    for(n=0; n < 8; n++){

    for(i=0; i < 8; i++){

    for(d1=0; i < 8; i++){

    for(d2=0; d2 < 8; d2++){

    if(d2==d1 || d2==(8-d1)){

    tot=tot+1;
    alf[n][i]=tot;
    }
    }
    }
    }
    }

    return 0;
    }


    int main()
    {
    int q=0, p=0;

    scanf("%d", &q);

    if(q=1){
    printf("%d\n", torre(q));
    }

    if(q=2){
    printf("%d\n", alfiere(q));
    }

    scanf("%d", &p);

    return 0;

    }

  3. #3
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Originariamente inviato da Horlandino
    mi escono due ZERO uno sotto l'altro in colonna
    Perche' e' esattamente quello che hai chiesto di fare al codice ...

    Se scrivi

    printf("%d\n", torre(q));

    e la funzione torre ritorna uno zero, con la riga

    return 0;

    e altrettanto per la

    printf("%d\n", alfiere(q));

    e la sua

    return 0;

    ... cosa vuoi che venga visualizzato se non i due zero?

  4. #4
    una matrice di 8 righe e 8 colonne, che rappresentino una scacchiera.
    All'interno di ogni casella della scacchiera deve essere visualizzata la quantità di caselle raggiungibili dalla torre, da quella stessa casella...non so se mi sono spiegato *_*

    esempio:
    nella prima casella in alto a sinistra 0,0 deve essere visualizzato "14", perche la torre, esclusa la casella 0,0, puo raggiungere da 0,0 a 7,7 ....che in tutto sono 14 caselle (7 della riga e 7 della colonna)...si capisce cosi piu o meno?

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Ok ... e dove sono nel main i due cicli for necessari a visualizzare il contenuto della matrice?

  6. #6
    int main()
    {
    int q=0, p=0, tot, i, j, scacchiera[7][7];
    /*i -> righe */
    /*j -> colonne */

    for(i=0; i<8; i++){

    for(j=0; j<8; j++)
    }
    scanf("%d", &q);

    if(q=1){
    printf("%d\n", torre(q));
    }

    if(q=2){
    printf("%d\n", alfiere(q));
    }

    scanf("%d", &p);

    }
    uff non riesco a sistema sta cosa >_< mi hanno suggerito una cosa del genere ma ovviamente non va'..cosa manca? V_V tnx

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Devi chiedere in input il numero corrispondente al pezzo, eseguire la funzione tramite una if (come stai facendo) e solo dopo eseguire i due cicli con delle printf per visualizzare tutti gli elementi di scacchiera ...

  8. #8
    mmh..a compilare compila...peccato che mi escono due righe uguali con questi interi dentro: "2293260"

    >_< sicuramente c'è qlc di sbagliato nella sintassi della creazione della scacchiera v_V

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Mostra TUTTO il codice che utilizzi adesso, usando i tag CODE in modo da poterlo leggere facilmente (mi raccomando).
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  10. #10
    codice:
    #include <stdio.h>
    #include <stdlib.h>
    
    int torre()
    {
        int n, i, tot=0, j, t[8][8];
        
        for(n=0; n < 8; n++){
           
           for(i=0; i < 8; i++){
              
              for(j=0; j < 8; j++){
              tot = tot + 1;
              t[n][i]= tot;
              }
          
              t[n][i]= t[n][i] *2;
              }
    
           } 
       return ;    
    }
                 
           
     
    
    int alfiere()
    {
        int n, i, d1, d2, tot, alf[8][8];
        
        for(n=0; n < 8; n++){
           
           for(i=0; i < 8; i++){
              
              for(d1=0; i < 8; i++){
                 
                 for(d2=0; d2 < 8; d2++){
                    
                    if(d2==d1 || d2==(8-d1)){
                       
                       tot=tot+1;
                       alf[n][i]=tot;
                       }
                 }
              }
           }
        }
        
        return ;
    }      
    
    
    int main()
    {
        int q=0, p=0, tot, i, j, scacchiera[8][8];
        
        scanf("%d", &q);
        
        if(q=1){
           printf("%d\n", torre(q));
           }                
        
        if(q=2){
           printf("%d\n", alfiere(q));
           } 
           
           /*i -> righe */
        /*j -> colonne */
        
        for(i=0; i<8; i++){
           tot=0;
           for(j=0; j<8; j++){
              tot=tot+1;
              }
           }   
       
    scanf("%d", &p);
    
    }
    ps. nei return nn ho messo nulla perche non sapevo come chiudere le funzioni dato che ho alcune lacune in programmazione x delle lezioni che ho dovuto saltare..(sto cercando di rimediare..i return sono una delle lacune purtroppo >_<)

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.