PICCOLA CALCOLATRICE

di il
5 risposte

PICCOLA CALCOLATRICE

Buona sera a tutti... ..è da circa una settimana che provo a programmare in C..tutto ok..fino ad oggi..
Ecco il programma che dovrei fare con mia soluzione..sballata ...sperando in una mano..
/*Scrivere un programma C che:
· chiede all’utente di immettere due array op1[ ] e op2[ ] ciascuno composto da 5 numeri
interi
· produce l’array risultati[ ] che contiene nella posizione di indice i il risultato di una
operazione aritmetica fra op1[i] op2[i] secondo la seguente regola:
- indice i pari: se op1[i] >op2[i] esegue la sottrazione tra i due operandi altrimenti
ne esegue la somma
- indice i dispari: se op1[i] >op2[i] esegue la divisione tra i due operandi altrimenti
ne esegue la moltiplicazione
A tale scopo si usi la funzione int operazione(int num1, int num2, char operatore) che
riceve in input due numeri interi e un carattere corrispondente ad uno tra i seguenti operatori
aritmetici: +, -, /,* e restituisce il risultato dell’operazione richiesta.
ESEMPIO:
Nel caso in cui l’utente immetta:
per op1[ ] i seguenti valori: 2 4 3 5 6
per op2[ ] i seguenti valori: 3 2 2 6 11
Il programma deve produrre un output del tipo:
Primi 5 operandi immessi:
2 4 3 5 6
Gli altri 5 operandi immessi:
3 2 2 6 11
I risultati sono:
5 2 1 30 17  */


#include<stdio.h>
#define dim 5
int operazione(int num1, int num2, char operatore);


int main(){
int op1[dim];
int op2[dim];
int risultati[dim];
int i,j;
char segno;
printf("Inserisci i numeri di op1:\n");
for(i=0;i<dim;i++){
scanf("%d",&op1[i]);                  
                  } 
printf("Inserisci i numeri di op2:\n");
for(i=0;i<dim;i++){
scanf("%d",&op2[i]);                         
                  }
 printf("Primi 5 operandi immessi:\t"); 
 for(i=0;i<dim;i++){
printf("%d",op1[i]);
                   }
                  
 printf("\nGli altri 5 operandi immessi:\t"); 
 for(i=0;i<dim;i++){
printf("%d",op2[i]);
                   } 
                   
 for(i=0;i<dim;i++){     
   if(op1[i]%2==0 && op2[i]%2==0){
             segno='-';
                                 }else{ 
                                        segno='/';
                                      } 
                   }                  
                    printf("\n%c",segno);
                    
operazione(op1[i],op2[i],segno);                  
 
printf("\nI risultati sono : ");
for(i=0;i<dim;i++){                   
printf("%d",&operazione);                
                               }                              
          }

int operazione(int num1, int num2, char operatore){
       int risultato,i;
        
     if(operatore =='-'){
               if(num1>num2){   
           risultato= num1-num2;
                             }
                        else{
           risultato=num1+num2;                  
                             }
                             }
      if(operatore =='/'){
               if(num1>num2){    
           risultato= num1/num2;
                      
                            }else{
           risultato=num1*num2;
                             }                  
                             }                        
       
       return risultato;
                                                 
                                                 }

5 Risposte

  • Re: PICCOLA CALCOLATRICE

    DIMENTICAVO....quando compilo..tutto ok..e quando eseguo..ecco cosa esce..


    Inserisci i numeri di op1:
    2
    4
    3
    5
    6
    Inserisci i numeri di op2:
    3
    2
    2
    6
    11
    Primi 5 operandi immessi: 24356
    Gli altri 5 operandi immessi: 322611
    /
    I risultati sono : 41995024199502419950241995024199502
  • Re: PICCOLA CALCOLATRICE

    Ci sono parecchi problemi, ma il più "grave" è che dimostri di non sapere usare il valore restituito dalla funzione. In pratica, se una funzione restituisce un valore, questo deve essere assegnato ad una variabile (o ad un elemento di un vettore) quando viene chiamata, ad esempio

    x = func(a, b ,c);

    Se chiami solamente

    func(a, b, c);

    il valore restituito viene perso.

    In pratica, il codice corretto diventa
    
    int main()
    {
    	int op1[dim];
    	int op2[dim];
    	int risultati[dim];
    	int i;
    	char segno;
    
    	printf("Inserisci i numeri di op1:\n");
    	for(i=0;i<dim;i++)
    	{
    		scanf("%d",&op1[i]);                  
    	} 
    
    	printf("Inserisci i numeri di op2:\n");
    	for(i=0;i<dim;i++)
    	{
    		scanf("%d",&op2[i]);                         
    	}
    
    	printf("Primi 5 operandi immessi:\t"); 
    	for(i=0;i<dim;i++)
    	{
    		printf("%d ",op1[i]);
    	}
                      
    	printf("\nGli altri 5 operandi immessi:\t"); 
    	for(i=0;i<dim;i++)
    	{
    		printf("%d ",op2[i]);
    	} 
                       
    	for(i=0;i<dim;i++)
    	{
    		if(i%2 == 0)
    		{
    			if(op1[i]>op2[i])
    				segno='-';
    			else
    				segno='+';
    		}
    		else
    		{
    			if(op1[i]>op2[i])
    				segno='/';
    			else
    				segno='*';
    		}
    
    		risultati[i] = operazione(op1[i],op2[i],segno);                  
    	}                  
                       
    	
    	printf("\nI risultati sono : ");
    	for(i=0;i<dim;i++)
    	{                   
    		printf("%d ", risultati[i]);                
        }                              
    }
    
    int operazione(int num1, int num2, char operatore)
    {
    	int risultato=0;
            
    	switch(operatore)
    	{
    		case '+':
    			risultato=num1+num2;
    			break;
    		case '-':
    			risultato=num1-num2;
    			break;
    		case '*':
    			risultato=num1*num2;
    			break;
    		case '/':
    			risultato=num1/num2;
    			break;
    	}
           
        return risultato;
    }
    
  • Re: PICCOLA CALCOLATRICE

    Grazie per la risposta...per quanto riguarda la funzione operazione..ed eventualmente funzioni simili dovrò farli solo con lo switch o ho altre possibilità..grazie per la pazienza..
  • Re: PICCOLA CALCOLATRICE

    Puoi usare le if al posto dello switch ...
  • Re: PICCOLA CALCOLATRICE

    GRAZIE...al prossimo
Devi accedere o registrarti per scrivere nel forum
5 risposte