Problema c++

di il
9 risposte

Problema c++

Scrivere un programma che restituisce una matrice quadrata di n righe e colonne tali che ogni elemento della matrice sia dato dalla differenza del fattoriale dell'indice colonna e dell'indice riga.
ho un errore che non mi fa funzione il programma in modo corretto, dicendomi le seguenti parole:
invalid operands of types 'void' and 'void' to binary 'operator-'
nella riga in cui determino la matrice diff[n][n]. posto il codice.
#include <iostream>
#include <iomanip>
using namespace std;

void fatt(int n){  //definisco la funzione fattoriale//
	for(int i=n;i<=n;i--)
	{
	int fatt=0;
	fatt=fatt*i;
	cout<<fatt;
	}
    }
int main()
    {
	int n; //inserisco dimensione matrice//
	cout<< "INSERIRE DIMENSIONE"<<endl;
	cin>>n;
	int diff[n][n];    //introduco la matrice che ha per termini la differenza dei fattoriali//
    for(int i=0;i<n;i++)
    {
    for(int j=0;j<n;j++)
    {
    diff[i][j]= fatt(i)-fatt(j);    //singoli termini della matrice (qui mi da errore)//
    }
    }
    for (int i=0; i<n; i++)    //funzione per stampare matrice//
    {
    cout<<endl;
    for (int j=0; j<n; j++)
    {
    cout<<diff[i][j];
    }
    cout<<endl;;
    }
    }

9 Risposte

  • Re: Problema c++

    Nella funzione fattoriale devi far ritornare un intero altrimenti sotto non puoi fare una sottrazione tra le chiamate di due fatt che non ritornano niente... Spero di essermi capito
    Sent from my RM-846_eu_italy_307 using Tapatalk
  • Re: Problema c++

    In questo caso che valore intero faresti tornare tu? ho provato con 0, 1 e anche il return fatt ma non funziona lo stesso.non ho ben compreso quando utilizzare uno o l'altro e in questo caso quale valore usare.se me lo spiegassi mi chiariresti molto le idee,grazie.
  • Re: Problema c++

    Dato che dovresti fare la sottrazione tra i due fattori di due numeri allora fai ritornare quel fattore.


    Chiama funzione(3) - chiama funzione(2)

    In questo caso se fai ritornare da quella funzione per esempio 1 allora sarebbe

    1-1

    Se fai ritornare dalla funzione il valore fatt allora sarebbe

    Valore della variabile fattore con 3 - valore Della var fattore con 2

    Spero di essermi spiegato... In qualsiasi caso cerca su google Return in c++ se non hai capito quello
  • Re: Problema c++

    É giusto il Return fatt ma nel for della funzione devi fare int y = n; y > 0; y--
  • Re: Problema c++

    Anzi devi mettere y = n - 1; y>0; y--
  • Re: Problema c++

    Anche con il return fatt mi da lo stesso errore, anzi se ne aggiunge uno nuovo :
    Multiple markers at this line
    - Return has value, in function returning void
    - return-statement with a value, in function returning 'void' [-fpermissive]

    non riesco a capire dove sia l'errore
  • Re: Problema c++

    Non puoi fare ritornare un intero su una funzione void.
    Prova a ripassare le funzioni, void si usa esclusivamente se non fai ritornare nessun valore quindi se devi fare ritornare un intero (in questo caso il fatt) allora dovrai mettere int funzione()
    Sul for della tua funzione devi mettere int y= n - 1; y > 0; y--
  • Re: Problema c++

    Forse è meglio partire da un esempio funzionante: prova a guardare questo codice
    
    #include <stdio.h>
    #include <stdlib.h>
    
    int fattoriale_1 (int num)
    {
        int i, risultato = 1;
        for(i=num; i>0; i--)
        {
            risultato *= i;
        }
        
        return risultato;
    }
    
    int fattoriale_2 (int num)
    {
        if(num == 1)
        {
            return num;
        }
        
        return (num * fattoriale_2(num-1));
    }
    
    
    
    int main()
    {
        int numero = 5;
        
        printf("Primo metodo: %d\n", fattoriale_1(numero));
        printf("Secondo metodo: %d\n", fattoriale_2(numero));
        
        return 0;
    }
    
    Il fattoriale è calcolato prima in modo iterativo e poi ricorsivo. Soprattutto controlla la struttura delle funzioni, i prototipi e i return.

    Facci sapere se hai dubbi.
  • Re: Problema c++

    Ho cambiato la scrittura del fattoriale utilizzando il fattoriale 2 e il programma funziona . grazie mille a tutti per l'aiuto.
Devi accedere o registrarti per scrivere nel forum
9 risposte