Tags:
create new tag
view all tags

Soluzioni esercizi Homework 1

Esercizio 1

#include <stdio.h>

int main () {
  int riga, colonna, rimanenti;  // contatori cicli
  int n;  // numero input
  int ultimo_bit;  // ultimo bit della riga
  int curr;  // indice sottomatrice di dimensione (n-1) x (n-1)

  scanf("%d", &n);
  printf("n = %d\n",n);
  curr = n;

  for (riga = 0; riga < n; riga++) {  // scorre le righe
    for (colonna = 0; colonna < curr; colonna++) {  // scorre le colonne fino a curr 
      if (((colonna+1)%2) == 0) { // se colonna pari
        ultimo_bit = 0;
        printf ("%d", ultimo_bit);
      }
      else {  // se colonna dispari
        ultimo_bit = 1;
        printf ("%d", ultimo_bit);
      }
    }
    if ((curr != n) && (curr > 0)) {  // controllo se ci sono elementi rimanenti
      for (rimanenti = 0; rimanenti < (n - curr); rimanenti++)
        printf("%d", ultimo_bit);
    }
    printf("\n");  // termina riga corrente e passa alla successiva
    curr--;  // aggiorna la dimensione della sottomatrice
  }
  return 0;
}

Eserzicio 2

#include <stdio.h>

int main () {
  unsigned long int n;   // numero di input
  int sin, dest;                // mantengono rispettivamente le 3 cifre piu' e meno significative di n

  scanf ("%lu", &n);  // legge il numero di input
  printf ("n = %lu\n", n);

  if (n < 1000000) { 
    printf ("NO\n");
    return 0;
  }

  dest = n % 1000;           // des mantiene le 3 cifre meno significative di n
  sin = (n - dest)/10000;  // sin ora contiene le 3 cifre piu' significative di n
  dest = (dest % 10)*100+ ((dest/10)%10)*10+(dest/100);  // rovesciamento delle cifre di dest
  printf ("sin = %d dest = %d\n", sin,dest);
  if (sin == dest) printf ("YES\n");
  else printf ("NO\n");
  return 0;
}  // end main

Esercizio 3

#include <stdio.h>


int main () {
  unsigned long int n;  // input
  unsigned long int f_prec = 1;
  unsigned long int f_curr = 1;
  unsigned long int aux = 0;
  unsigned long int i=2;  // contatore while

  scanf ("%lu", &n);  // legge input

  if (n < 0) {
    printf ("Input errato\n");
    return 1;
  }

  while(i <= n) {
    aux = f_curr;  // mantiene f_curr in aux
    f_curr = f_prec + f_curr;  // aggiorna f_curr
    f_prec = aux;  // aggiorna f_prec
    i++;
  }  // end while

  printf ("n = %lu\n", n);
  printf ("%lu\n", f_curr);
  return 0;
}

Esercizio 4

#include <stdio.h>


int main () {
  unsigned long int n;  // input
  unsigned long int fact_curr = 1;
  unsigned long int i=2;  // contatore while

  scanf ("%lu",&n);  // legge input

  if (n < 0) {
    printf ("Input errato\n");
    return 1;
  }
  while (i <= n) {
    fact_curr = fact_curr * i;  // aggiorna f_curr
    i++;
  }  // end while

  printf ("n = %lu\n%lu\n",n,fact_curr);
  return 0;

}

Esercizio 5

#include <stdio.h>
#include <math.h>

int main () {
  float a, b, c;  // input
  float discriminante;

  scanf("%f", &a);
  scanf("%f", &b);
  scanf("%f", &c);
  
  if ((a + b) == 0.0) return 0; // non ha soluzioni

  if (a == 0.0) {  // ha una soluzione reale
    printf ("x1 = %.3f\n", (-1)*c/b);
    return 0;
  }
  if ((b == 0.0) && (c < 0)) {  // caso ax^2 + c = 0 con c < 0
    printf ("x1 = 0\n");
    printf ("x2 = %.3f\n", sqrt((-1)*c/a));
    return 0;
  }

  discriminante = pow(b, 2)-4*a*c;
  if (discriminante < 0) {  // caso soluzioni non reali
    float parte_reale = ((-1)*b)/(2*a);
    float parte_imm = sqrt((-1)*discriminante)/(2*a);
    printf ("x1 = %.3f + i%.3f\n", parte_reale, parte_imm);
    printf ("x2 = %.3f - i%.3f\n", parte_reale, parte_imm);
    return 0;
  }

  // caso soluzioni reali
  printf ("x1 = %.3f\n", (((-1)*b)+sqrt(discriminante))/(2*a));
  printf ("x2 = %.3f\n", (((-1)*b)-sqrt(discriminante))/(2*a));
  return 0;
}  // end main

-- JulindaStefa - 26 Oct 2007

Edit | Attach | Watch | Print version | History: r3 < r2 < r1 | Backlinks | Raw View | Raw edit | More topic actions
Topic revision: r3 - 2007-11-14 - JulindaStefa






 
Questo sito usa cookies, usandolo ne accettate la presenza. (CookiePolicy)
Torna al Dipartimento di Informatica
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2021 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback