Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 17 su 17

Discussione: [C]Errore da Xcode

  1. #11
    Ahhh quindi devo metterle prima del while, forse era per quello che mi dava un numero grande come output?

    EDIT: se faccio cosi:
    codice:
    #include <stdio.h>
    
    
    int main () {
       
    	int numeri[50];
    	int operazioni = 0, contatore = 1;
    	
    	do {
    		printf("%d numero o 0 per calcolare: \n", contatore);
    		scanf("%d",&numeri[operazioni]);
    		operazioni++;
    		contatore++;
    	}while (numeri[operazioni] != 0);
    	printf("%d", numeri[1]);
        return 0;
    }
    le incrementa prima del while e quando metto 0 non si blocca il ciclo, per quello avevo fatto cosi

  2. #12
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da gennahouse
    codice:
    #include <stdio.h>
    int main () {   
    	int numeri[50];
    	int operazioni = 0, contatore = 1;
    	
    	do {
    		printf("%d numero o 0 per calcolare: \n", contatore);
    		scanf("%d",&numeri[operazioni]);
    		operazioni++;
    		contatore++;
    	}while (numeri[operazioni] != 0);
    	printf("%d", numeri[1]);
        return 0;
    }
    le incrementa prima del while e quando metto 0 non si blocca il ciclo, per quello avevo fatto cosi
    Così torni al problema di prima... Quello che volevo farti capire è che quel operazioni++ ti "sposta avanti" e che quindi quella condizione non va bene!

    Banalmente puoi usare numeri[operazioni - 1] ma solo se operazioni >= 1! Oppure puoi spostare l'incremento di operazioni direttamente nella condizione: numeri[operazione++].

    Inoltre c'è un altro problema: numeri è un array di 50 elementi. Attualmente non c'è alcun controllo sul numero di elementi inseriti: quando inserirai il 51esimo otterrai segmentation fault (o un altro errore di violazione della memoria).

    Poi. Perché usi operazioni e contatore? Da quel che vedo qui te ne basta solo uno...
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  3. #13
    Originariamente inviato da Alex'87
    Così torni al problema di prima... Quello che volevo farti capire è che quel operazioni++ ti "sposta avanti" e che quindi quella condizione non va bene!

    Banalmente puoi usare numeri[operazioni - 1] ma solo se operazioni >= 1! Oppure puoi spostare l'incremento di operazioni direttamente nella condizione: numeri[operazione++].

    Inoltre c'è un altro problema: numeri è un array di 50 elementi. Attualmente non c'è alcun controllo sul numero di elementi inseriti: quando inserirai il 51esimo otterrai segmentation fault (o un altro errore di violazione della memoria).

    Poi. Perché usi operazioni e contatore? Da quel che vedo qui te ne basta solo uno...
    ma se io faccio:
    codice:
    while (numeri[operazioni++] != 0);
    oppure:

    codice:
    while (numeri[operazioni] != 0);{
    operazioni++;
    }
    come avevo fatto prima, per me è la stessa cosa, perche in ogni caso incrementa quando il ciclo è finito, però non è cosi vero?

    uso contatore perche quando inserisci i numeri, se uso operazioni per scrivere inserisci numeri 1 partirebbe con 0 e non starebbe bene ( in alternativa potrei mettere operatori+1 ma cambierebbe poi il valore a tutto il ciclo, perche salterebbe delle array).



    per il discorso delle array non basterebbe fare cosi:


    int numeri[operazioni];

    in questo modo ci sara il numero esatto di array, però non sono sicuro che si possa fare... perche sto dichiarando un valore prima che sia stato dichiarato...

  4. #14
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da gennahouse
    ma se io faccio:
    codice:
    while (numeri[operazioni++] != 0);
    oppure:

    codice:
    while (numeri[operazioni] != 0);{
    operazioni++;
    }
    come avevo fatto prima, per me è la stessa cosa, perche in ogni caso incrementa quando il ciclo è finito, però non è cosi vero?
    Non è la stessa cosa (a meno che tu non abbia sbagliato a scrivere), nel secondo esempio operazioni++; è fuori dal ciclo (lascio a te dirmi il perché).

    Originariamente inviato da gennahouse
    uso contatore perche quando inserisci i numeri, se uso operazioni per scrivere inserisci numeri 1 partirebbe con 0 e non starebbe bene ( in alternativa potrei mettere operatori+1 ma cambierebbe poi il valore a tutto il ciclo, perche salterebbe delle array).
    Guarda che sei scrivi operazioni + 1 il valore di operazioni non cambia! Cambierebbe se ci fosse scritto operazioni = operazioni + 1 o operazioni++ (o ++operazioni).

    Originariamente inviato da gennahouse
    per il discorso delle array non basterebbe fare cosi:

    int numeri[operazioni];

    in questo modo ci sara il numero esatto di array, però non sono sicuro che si possa fare... perche sto dichiarando un valore prima che sia stato dichiarato...
    In C questa istruzione non è permessa. Lo è in C++ SE E SOLO SE operazioni è dichiarata come const.
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  5. #15
    Per il discorso while credo perché nel secondo caso se il ciclo e' vero non lo incrementa. Giusto? :malol

    Si hai ragione sul discorso del contatore

  6. #16
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da gennahouse
    Per il discorso while credo perché nel secondo caso se il ciclo e' vero non lo incrementa. Giusto?
    No.
    codice:
    while (numeri[operazioni] != 0) ;  {
    operazioni++;
    }
    Lo vedi quel ;? Il while si chiude lì (in pratica hai creato un ciclo vuoto).
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  7. #17
    oh siiii non ci avevo fatto caso... è stato un errore di distrazione perche non si deve mettere...
    Posso farti una domanda sulle array oppure devo aprire un nuovo topic?

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 © 2026 vBulletin Solutions, Inc. All rights reserved.