Visualizzazione dei risultati da 1 a 4 su 4

Discussione: [C/C++]: Matrici...

  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2004
    Messaggi
    643

    [C] matrici :-/ help

    perchè spara numeri a caso in output?

    codice:
    #include <stdio.h>
    #define SIZE 2
    int main()  {
        int m[SIZE][SIZE];
        int i,j, k;
        printf("enter any integer between 1 and 21");
        for (i=0;i<SIZE;i++) {
            for (j=0;j<SIZE;j++) { 
                 printf("/>"); scanf("%d",&k);
                 while(k<1||k>21)
                 {
                 printf ("your value is not correct\n\n enter any integer between 1 and 21 ");
                 printf ("/>");scanf("%d",&k);
                 m[i][j]=k;
                 }
                 }
                 }
    for (i=0;i<=SIZE;i++) {
            for (j=0;j<=SIZE;j++) { 
                 printf("%d", m[i][j]);
                 }
                 }
                 system ("PAUSE");
        return 0;
        }
    che cosa non va?

    Grazie

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Forse e' questo che deve fare ...

    Non pensi sia bene dire "cosa" dovrebbe fare normalmente il programma?

  3. #3
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Cosa dovrebbe fare il programma? Penso che sia un'informazione indispensabile, che andrebbe almeno indicata nel titolo, visto che non è tua abitudine usarne di significativi.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  4. #4
    Utente di HTML.it L'avatar di Lak3d
    Registrato dal
    Aug 2006
    Messaggi
    1,031
    codice:
    #include <stdio.h>
    #define SIZE 2
    
    int main()  {
    int m[SIZE][SIZE];
    int i,j,k;
    
    printf("enter any integer between 1 and 21");
    for (i=0;i<SIZE;i++) {
       for (j=0;j<SIZE;j++) {
          printf("/>");
          scanf("%d",&k);
          while(k<1||k>21){
             printf ("your value is not correct\n\n enter any integer between 1 and 21 ");
             printf ("/>");
             scanf("%d",&k);
          }
          m[i][j]=k;
       }
    }
    
    for (i=0;i<SIZE;i++) 
       for (j=0;j<SIZE;j++) 
          printf("%d ", m[i][j]);
    
    system ("PAUSE");
    
    return 0;
    }
    In pratica arricchisci una matrice bidimensionale e la stampi a video... il tuo problema è che l'istruzione di assegnamento m[i][j]=k; stava dentro il ciclo while di controllo, quindi arricchiva il vettore solo nel caso i valori venissero digitati errati la prima volta... diciamo che andava anche bene metterla all'interno del ciclo, però l'importante è che ci fosse (anche) fuori da quest'ultimo per il motivo sopracitato.

    Secondo errore la stampa dei valori a video... i due indici devono andare da 0 a <SIZE, non <=
    I vettori sono sì di due elementi, ma il loro conteggio parte da 0, quindi 0 e 1, due elementi in tutto.

    Mi sono spiegato bene?

    edit: ah, magari se usassi un'indentazione decente ci capiresti qualcosa in più tu stesso...

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.