esercizi parte 2 Programmazione C lez#17

Поделиться
HTML-код
  • Опубликовано: 10 сен 2024
  • Esercizi svolti passo passo ;
    esercizio di compattazione di un vettore
    esercizio ricerca di linee e colonne(particolari) in una matrice.

Комментарии • 27

  • @danielebuggio1125
    @danielebuggio1125 7 лет назад +17

    minuto 17.06...stampa di veriFIGA??? ora capisco perché è così bello il tuo corso ;)

    • @eugyscan
      @eugyscan 4 года назад +1

      Freddure per veri programmatori, fatti una vita

  • @maxmax-se3ic
    @maxmax-se3ic 4 года назад +4

    Il primo esercizio sul compattamento di un vettore di interi non funziona correttamente, perché se si inserisce una sequenza con uno o più zeri iniziali, nel risultato finale è memorizzato uno zero in prima posizione. L'errore sta nel fatto che nel secondo ciclo for (quello interno) la condizione k

    • @mariuscool7402
      @mariuscool7402 4 года назад

      Sono sceso apposta nei commenti per vedere se qualcuno ha menzionato: k

    • @giuseppeassante1795
      @giuseppeassante1795 3 года назад

      Io avevo risolto spostando la condizione
      “if(vett1[i]==0){
      stop=1;
      }”
      tra il primo e il secondo ciclo for, e funziona anche così. È una buona soluzione?

  • @gabrielegiudice
    @gabrielegiudice 3 года назад +1

    ESERCIZIO 1
    C'è un problema nel codice: la variabile j viene inizializzata a 0, e al ciclo for(k=0; k

  • @ivanrivoira3901
    @ivanrivoira3901 5 лет назад +3

    20:06 con le cuffie sono tipo saltato in aria dallo spavento. Ahahahah Bella spiegazione comunque!

  • @alessandromarzulli9582
    @alessandromarzulli9582 6 лет назад

    come faccio a:
    l'utente deve inserire una frase;
    il programma deve convertire tutte le iniziali di ogni parola da minuscolo a maiuscolo? grazie

  • @MrKappas
    @MrKappas 8 лет назад +2

    Ciao, prima di tutto complimenti per le lezioni, sto imparando a programmare grazie a te. Volevo chiederti perchè, scrivendo un programma identico al tuo per il primo esercizio, se inserisco 0 come primo numero lo stampa comunque.Per il resto funziona benissimo. Grazie e complimenti ancora

    • @alessandrocastello5193
      @alessandrocastello5193 8 лет назад

      stesso problema

    • @francescopuzzoni926
      @francescopuzzoni926 7 лет назад +1

      perchè se guardi bene il secondo ciclo for dell elaborazione , quello "for(k=0;k

    • @ILGiullareDiCorte
      @ILGiullareDiCorte 7 лет назад

      devi impostare

    • @Icemadhatter
      @Icemadhatter 5 лет назад +1

      @@ILGiullareDiCorte se metti minore uguale il ciclo fa un passaggio in più e scrive i valori agli indirizzi sbagliati, la miglior cosa è mettere un if da subito che fa eseguire il tutto solo se il valore è diverso da zero

  • @robertoschena2887
    @robertoschena2887 4 года назад

    Io l'ho scritto pari pari al tuo ma non funziona... Cosa può essere?

  • @samas69420
    @samas69420 3 года назад

    al primo credo si possa migliorare una cosa per renderlo più efficiente cioè controllare se vett1[i] sia zero prima di cominciare il secondo for, nella soluzione del video invece visto che il controllo avrà sempre lo stesso esito quando cambia solo j viene ripetuto inutilmente j-1 volte per ogni i

  • @davidepontis1428
    @davidepontis1428 6 лет назад

    io ho fatto quello sulle righe e colonne negative della matrice così:
    #include
    #include
    #define N 3
    /* data una matrice di dimensione uguale a 10 righe per 10 colonne contenente
    numeri reali, scrivere un programma in linguaggio C per individuare se esistono
    righe o colonne composte solo da elementi negativi.*/
    int main()
    { float matrix [N] [N];
    int i;
    int j;
    int flag=0;
    int flag2=0;
    printf("inserire i dati nella matrice

    ");
    for(i=0;i

  • @pentium968
    @pentium968 3 года назад

    ciao sei bravissimo.Se inserisco lo 0 per primo lo zero apparira' nel secondo vettore. Perche' ?

    • @gabrielegiudice
      @gabrielegiudice 3 года назад

      C'è un problema nel codice: la variabile j viene inizializzata a 0, e al ciclo for(k=0; k

    • @gabrielegiudice
      @gabrielegiudice 3 года назад

      Io l'ho svolto in questo modo e funziona in tutti i casi senza problemi, e la complessità computazionale del programma dovrebbe anche essere la minima possibile:
      #include
      // Costanti
      #define max 20
      int main(int argc, const char * argv[]) {
      // Variabili
      int n;
      int v1[max];
      int v2[max];
      int i;
      int j;
      int p = 0; // tiene traccia della posizione del vettore 2
      int add; // flag per stabilire se bisogna aggiungere o meno il valore di v1 in v2: 0=false, 1=true
      // Input
      printf("Quanti numeri vuoi inserire? ");
      scanf("%d", &n);
      for (i = 0; i < n; i++) {
      printf("Inserire il %d numero: ", (i+1));
      scanf("%d", &v1[i]);
      v2[i] = 0;
      }
      // Elaborazione
      for (i = 0; i < n; i++) {
      add = 1;
      if (v1[i] != 0) {
      for (j = 0; j

  • @ILGiullareDiCorte
    @ILGiullareDiCorte 7 лет назад

    Io ho fatto anche una piccola variante e ho impostato in modo diverso la verifica!
    #include
    #define R 3
    #define C 3
    int main(int argc, const char * argv[]){
    float matrix[R][C];
    int i, k;
    int th1;//flag
    int th2;
    printf("Inserisci i numeri nella matrice:
    ");
    for(i=0; i

  • @salmaniftikhar1941
    @salmaniftikhar1941 3 года назад

    IO HO SCRITTO QUESTO PROGRAMMA MA NON FUNZIONA, qualcuno saprebbe aiutarmi?
    #include
    #define max 20
    int main() {
    int vett1[max],i,N;
    int vett_risultato[max];
    int stop;
    int k;
    int j=0;
    printf("quanti numeri vuoi inserire:
    ");
    scanf("%d", &N);

    for(i=0;i

    • @andreapanzeri5252
      @andreapanzeri5252 2 года назад

      ma fatto in questo modo avvrebbe cmq risolto seguendo la traccia, giusto?:
      /*
      data una matrice 10x10 contenete elementi reali, scrivere un programma per
      individuare se esistono riche e colonne composto solo da elementi negativi
      */
      #include
      #define righe 3
      #define colonne 3
      int main(){
      //variabili
      float matrice[righe][colonne];
      int i,j;
      //input
      printf("
      Inserisci i valori nella matrice:
      ");
      for(i=0;i

  • @gabrielegiudice
    @gabrielegiudice 3 года назад

    ESERCIZIO 2
    Sia nell'analisi per righe sia in quella per colonne c'è un errore: il controllo dovrebbe essere
    if (mat[i][j] >= 0) {...}
    invece di
    if (mat[i][j] > 0) {...}
    Altrimenti se per esempio inserisco una riga/colonna come -1 0 0 -2 questa viene intesa come tutta negativa quando in realtà non lo è
    Inoltre, per ridurre notevolmente la complessità computazionale del programma, si potrebbe
    1) inserire dei break sia nei controlli if (mat[i][j] >= 0) {...} e if (trovato == 1) {...}
    2) avviare il ciclo for dell'analisi per colonne solo se valido == 0
    In questo modo il numero di cicli compiuti si abbasserebbe notevolmente

    • @gabrielegiudice
      @gabrielegiudice 3 года назад +1

      La mia soluzione all'esercizio è questa, che riduce al minimo la complessità computazionale eseguendo 1 solo ciclo for "globale", invece di usarne 1 per analizzare le righe e 1 per analizzare le colonne
      #include
      // Costanti
      #define n 10
      int main(int argc, const char * argv[]) {
      // Variabili
      float mat[n][n];
      int i;
      int j;
      int allNegativeRow = 0; // flag che determina se la riga presenta soli numeri negativi: 0=false; 1=true
      int allNegativeCol = 0; // flag che determina se la colonna presenta soli numeri negativi: 0=false; 1=true
      // Input
      for (i = 0; i < n; i++) {
      for (j = 0; j < n; j++) {
      printf("Inserire mat[%d][%d]: ", i, j);
      scanf("%f", &mat[i][j]);
      }
      }
      // Stampa di verifica
      printf("
      La matrice inserita è:
      ");
      for (i = 0; i < n; i++) {
      for (j= 0; j < n; j++) {
      printf("%f\t", mat[i][j]);
      }
      printf("
      ");
      }
      // Elaborazione
      for (i = 0; i < n; i++) {
      allNegativeRow = 1;
      allNegativeCol = 1;
      for (j = 0; j < n; j++) {
      if (mat[i][j] >= 0) {
      allNegativeRow = 0;
      }
      if (mat[j][i] >= 0) {
      allNegativeCol = 0;
      }
      if (allNegativeRow == 0 && allNegativeCol == 0) {
      break; // interrompe for j
      }
      }
      if (allNegativeRow == 1 || allNegativeCol == 1) {
      break; // interrompe for i
      }
      }
      // Stampa
      if (allNegativeRow == 1 || allNegativeCol == 1) {
      printf("
      La matrice contiene almeno una riga/colonna negativa.

      ");
      }
      else {
      printf("
      La matrice NON contiene righe/colonne negative.

      ");
      }
      return 0;
      }

  • @paquale9127
    @paquale9127 3 года назад

    Il primo l'ho fatto così, va bene?
    #include
    #define NMAX 20
    int main(int argc, const char * argv[]) {
    int N = 0;
    int v1[NMAX];
    int v2[2*NMAX];
    int j = 0;
    printf("Quanti elementi vuoi inserire nel vettore?
    ");
    scanf("%d",&N);
    for (int i=0; i

    • @andreapanzeri5252
      @andreapanzeri5252 2 года назад

      ma fatto in questo modo avvrebbe cmq risolto seguendo la traccia, giusto?:
      /*
      data una matrice 10x10 contenete elementi reali, scrivere un programma per
      individuare se esistono riche e colonne composto solo da elementi negativi
      */
      #include
      #define righe 3
      #define colonne 3
      int main(){
      //variabili
      float matrice[righe][colonne];
      int i,j;
      //input
      printf("
      Inserisci i valori nella matrice:
      ");
      for(i=0;i

    • @matteoloprete9852
      @matteoloprete9852 Год назад

      risulta errato se la sequenza di numeri che inserisci non è 'in ordine' (per capirci 1,2,3,4...)