Advertisement
u53r

Moltiplicazione e Divisione implementate con sola addizione

Nov 1st, 2019
184
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.33 KB | None | 0 0
  1. /*
  2. Realizzare un programma che effettui la moltiplicazione o la divisione tra due numeri interi positivi utilizzando solo l'addizione
  3. */
  4.  
  5. #include <stdio.h>
  6.  
  7. void molt(int,int); // Prototipo della funzione moltiplicazione
  8. void div(int,int); // Prototipo della funzione divisione
  9.  
  10. int main() {
  11.   int s,a,b; // s => scelta, a,b => fattori / dividendo (a) - divisore (b)
  12.   while(1){
  13.     printf("Inserisci 2 valori positivi\n");
  14.     printf("1Β° valore --> ");
  15.     scanf("%d", &a);
  16.     printf("2Β° valore --> ");
  17.     scanf("%d", &b);
  18.  
  19.     if(a < 0 || b < 0){ // Nel caso venga inserito un valore negativo, stampo un messaggio di errore e passo alla prossima iterazione
  20.       printf("ERRORE: hai inserito dei valori negativi\n\n\n");
  21.       continue; // Non eseguo le istruzioni successive e passo alla prossima iterazione
  22.     }
  23.  
  24.     printf("Cosa vuoi fare?\n");
  25.     printf("1) Moltiplicazione\n");
  26.     printf("2) Divisione\n");
  27.     printf("DEFAULT) Esci\n");
  28.     printf("--> ");
  29.     scanf("%d", &s);
  30.  
  31.     switch (s) {
  32.       case 1: // Moltiplicazione
  33.         molt(a,b);
  34.       break;
  35.       case 2: // Divisione
  36.         div(a,b);
  37.       break;
  38.       default: // Uscita
  39.         return 0;
  40.       break;
  41.     }
  42.   }
  43.   return 0;
  44. }
  45.  
  46. // Moltiplicazione
  47. void molt(int f1, int f2){ // f1 => primo fattore, f2 => secondo fattore
  48.   int i,p = 0; // i => contatore, p => prodotto
  49.   if(f1 == 0 || f2 == 0){ // Se uno dei due fattori Γ¨ zero, il risultato sarΓ  sicuramente zero
  50.     p = 0;
  51.   }else{
  52.     for (i = 0; i < f2; i++) { // Sommo f1 a se stesso per f2 volte
  53.       p += f1;
  54.     }
  55.   }
  56.   printf("%d\n\n", p); // Stampo il prodotto
  57. }
  58.  
  59. // Divisione
  60. void div(int dvd, int dvs){ // dvd => dividendo, dvs => divisore
  61.   int i,q=0,r=0; // i => contatore, q => quoziente, r => resto
  62.  
  63.   if(dvs == 0){ // Mi assicuro che non venga effettuata una divisione per zero.
  64.     printf("Errore: divisione per zero\n\n");
  65.   }else{
  66.       for (i = dvs; i <= dvd; i += dvs) { // Calcolo del quoziente (aumento i del divisore, incrementando q di 1 ad ogni ciclo)
  67.         q++;
  68.       }
  69.       r = dvd - (q*dvs); // Calcolo il resto ( resto = dividendo - (divisore * quoziente) )
  70.     // Stampa dei risultati
  71.     printf("%d\n", q);
  72.     if(r != 0){ // Stampo il resto nel caso in cui sia diverso da zero
  73.       printf("Con resto di %d\n\n", r);
  74.     }
  75.  
  76.   }
  77. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement