Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    19

    [C] Memorizzare valori in vettori

    Salve a tutti!
    Ho realizzato un programma che però non funziona come dovrebbe.
    Il programma deve definire due vettori v1 e v2 di N elementi di tipo intero e memorizzare nei vettori valori “accettabili” acquisiti da tastiera secondo queste regole:
    a. In v1 devono essere memorizzati solo i valori positivi ed i valori negativi multipli di 3
    b. In v2 devono essere memorizzati solo i valori negativi non multipli di 3 e dispari
    Tutti gli altri valori acquisiti devono essere ignorati e quando uno dei due vettori è pieno deve finire il riempimento.

    Il mio programma però non mi inserisce i valori nel vettore.
    Mi spiegate dov è l'errore?

    codice:
    #include <stdio.h>
    #include <stdlib.h>
    #define N 5
    
    int main()
    {
        int v1[N], v2[N], ind1, ind2, dato, numdati1, numdati2;
    
        ind1 = 0;
        ind2 = 0;
        printf("Inserire elementi:\n");
    
        while ((ind1<N) && (ind2<N))
          {
              scanf("%d", &dato);
    
             if ((dato>=0) | (dato%3==0))
             {
                 v1[ind1] = dato;
                 ind1 ++;
             }
    
             else
                 if ((dato<0 && dato%3!=0) || (dato%2 != 0))
                 {
                     v2[ind2] = dato;
                     ind2 ++;
                 }
          }
    
     numdati1 = ind1;
     numdati2 = ind2;
        printf("Il contenuto del primo vettore e':\n");
              for (ind1=0; ind1<numdati1; ind1++)
                printf("%d\n", v1[N]);
    
        printf("Il contenuto del secondo vettore e':\n");
             for (ind2=0; ind2<numdati2; ind2++)
                 printf("%d\n", v2[N]);
    
    
        return 0;
    }

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,461
    Ti sembra corretta queste linee?

    printf("%d\n", v1[N]);

    printf("%d\n", v1[N]);
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    19
    Ah ecco allora! Anziché v1[N] avrei dovuto scrivere v1[ind1] e così anche sotto!

    Però mi spieghi una cosa? Se io non avessi introdotto le due variabili numdati1 e numdati2, allora avrei potuto scrivere v1[N] e v2[N], o sarebbe stato sbagliato lo stesso?

  4. #4
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    N è semplicemente sostituito con 5, fai le tue considerazioni...
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    20
    no, N è una costante e vale sempre 5. Ricorda che in questo caso gli indici del vettore devono andare da 0 a 4...

  6. #6
    Utente bannato
    Registrato dal
    Apr 2012
    Messaggi
    510
    v1[N] va fuori dagli indici dell' array, che essendo di dimensione N, ha N elementi che hanno indici 0,1,2,....,N-1 .

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.