Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2016
    Messaggi
    10

    Aiuto programmazione in c

    Questa è la consegna:
    Scrivere un programma che dato una sequenza di N valori reali (con N definito come costante),carica i valori in un vettore e copia in un secondo vettore tutti i valori maggiori di 0 e ne stampa ilcontenuto.

    Ho creato il tutto:
    #include <stdio.h>
    #define N 10
    int main(void) {
    int i;
    float vett1[N];
    float vett2[N];
    int p=0;
    printf("Inserisci i valori del vettore\n");
    for (i = 0; i < N; i++) {
    printf("Inserimento numero %d\n", i + 1);
    scanf_s("%f", &vett1[i]);
    }
    for (i = 0; i < N; i++) {
    if (vett1[i] > 0) {
    vett1[i] = vett2[p];
    p++;
    }
    }
    printf("I numeri positivi del vettore sono:\n");
    for (p = 0; p < N; p++) {
    printf("%f, ", vett2[p]);
    }
    }



    Il problema è che nell'eseguirlo mi stampa prima tutti i numeri positivi e poi alla fine mi mette dei numeri negativi a caso. Cosa sbaglio?

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2016
    Messaggi
    10
    Ho modificato così ma l'errore rimane:
    #include <stdio.h>
    #define N 10
    int main(void) {
    int i;
    float vett1[N];
    float vett2[N];
    int p=0;
    int m = 0;
    printf("Inserisci i valori del vettore\n");
    for (i = 0; i < N; i++) {
    printf("Inserimento numero %d\n", i + 1);
    scanf_s("%f", &vett1[i]);
    }
    for (i = 0; i < N; i++) {
    if (vett1[i] > 0) {
    vett1[i] = vett2[p];
    p++;
    m=m+1
    }
    }
    printf("I numeri positivi del vettore sono:\n");
    for (p = 0; p < m; p++) {
    printf("%f, ", vett2[p]);
    }



    }

  3. #3
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    vett2[p] = vett1[i];
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2016
    Messaggi
    10
    Quote Originariamente inviata da badaze Visualizza il messaggio
    vett2[p] = vett1[i];

    Ok ho aggiustato questa svista ma continua a presentarsi lo stesso errore. Che potrebbe esserci di errato?

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Quote Originariamente inviata da Alee Visualizza il messaggio
    Ok ho aggiustato questa svista ma continua a presentarsi lo stesso errore. Che potrebbe esserci di errato?
    Forse non hai ricompilato correttamente. In questa riga

    m=m+1

    manca il ; finale (fra l'altro potresti scrivere m++; o addirittura usare p al posto di m)
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6
    Utente di HTML.it
    Registrato dal
    Mar 2016
    Messaggi
    10
    Quote Originariamente inviata da oregon Visualizza il messaggio
    Forse non hai ricompilato correttamente. In questa riga

    m=m+1

    manca il ; finale (fra l'altro potresti scrivere m++; o addirittura usare p al posto di m)


    Ho modificato così ma ho sempre il solito problema:
    #include <stdio.h>
    #define N 10
    int main(void) {
    int i;
    float vett1[N];
    float vett2[i];
    int m = 0;
    printf("Inserisci i valori del vettore\n");
    for (i = 0; i < N; i++) {
    printf("Inserimento numero %d\n", i + 1);
    scanf_s("%f", &vett1[i]);
    }
    for (i = 0; i < N; i++) {
    if (vett1[i] > 0) {
    vett2[i] = vett1[i];
    m = m + 1;
    }
    }
    printf("I numeri positivi del vettore sono:\n");
    for (i = 0; i < m; i++) {
    printf("%f, ", vett2[i]);
    }
    }

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Perché hai cambiato questa linea

    float vett2[i];

    che prima era giustamente

    float vett2[N];

    ?

    E poi, ovviamente devi usare m altrimenti a che serve, quindi deve essere

    vett2[m] = vett1[i];
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  8. #8
    Utente di HTML.it
    Registrato dal
    Mar 2016
    Messaggi
    10
    Ho semplificato il tutto così ma ovviamente mi deve fare impazzire sempre con lo stesso problema.

    #include <stdio.h>
    #define N 10
    int main(void) {
    int i;
    float vett1[N];
    float vett2[N];
    int m = 0;
    printf("Inserisci i valori del vettore\n");
    for (i = 0; i < N; i++) {
    printf("Inserimento numero %d\n", i + 1);
    scanf_s("%f", &vett1[i]);
    }
    for (i = 0; i < N; i++) {
    if (vett1[i] > 0) {
    vett2[m] = vett1[i];
    printf("I numeri positivi del vettore sono:\n", vett2[m]);

    }
    }

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Ad ogni risposta cambi codice introducendo altri errori. Adesso dove sta

    m=m+1;

    ??

    Utilizza il codice che avevi postato con le ultime mie modifiche.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  10. #10
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    m non è incrementato. Oppure fai un printf di vett1[i]
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

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.