[C] Determinare se un numero è divisibile per un secondo numero dato

di Anonimizzato21278 il
13 risposte
Ciao, ho iniziato da poco a programmare e mi sono imbattuto in un esercizio abbastanza semplice, ma che quando vado a compilare presenta due errori che io non capisco..
l'esercizio è creare un file “main.c”. Nel file, si realizzi in linguaggio C la funzione corrispondente alla seguente
dichiarazione:
 extern int ismultiple (int x, int y);
La funzione riceve due numeri interi x e y e restituisce 1 se x è un multiplo di y, 0 altrimenti.

Io ho provato a fare cosi:
int main (void) {
	int x;
	int y;
	int z;
	x = 4;
	y = 2;

	z = ismultiple(x, y);
	return 0;
	}
Però ho due problemi:
1) riferimento al simbolo esterno ismultiple non risolto nella funzione main (nella riga 1)
2) 1 esterni non risolti (nella riga 1)
Qualcuno saprebbe spiegarmi come risolvere questi due problemi?

13 Risposte

  • Ciao Matte...
    Ma la funzione ismultiple l'hai scritta?
  • In che senso? (scusa la domanda, ma ho iniziato da poco a studiare questa materia, quindi sono molto inesperto..)
  • Nel senso che manca la funzione che stai utilizzando nel main

    Devi scriverne il codice!
  • Penso che l'esercizio ti chieda di CREARE la funzione ismultiple, e dopo di usarla. Sai cos'è e come si scrive una funzione?
  • Si, un suggerimento per come crearla?
  • Prima rispondi: sai come si crea una funzione in generale? Se la risposta è si, proponi la tua idea, sennò vai a vedere come si fanno le funzioni, e rispondi di nuovo alla domanda
  • Che suggerimento vorresti?

    Devi scrivere il codice della funzione tu ... se è un esercizio non puoi farlo risolvere al forum.

    Qui hai chiesto informazioni sugli errori che non comprendevi e ora hai la risposta e tutto quello che ti serve.
    Unico consiglio è riprendere in mano libri/appunti del professore e rivederli.
  • Andando a studiare di nuovo gli appunti, ho riprovato a fare in questo modo.. qualcuno può darmi una mano?
    #include <stdio.h>
    #include <stdlib.h>
    int main(void) {
    	int x;
    	int y;
    	int z;
    z = ismultiple(x, y);
    if (x == 4 & y == 2);
    z = 1;
    else
    z = 0;
    	return 0;
    }
    
  • Mmm...no, non credo che vada bene (è un modo per dire che quello che hai scritto non ha senso), vabbè, evidentemente non sai come si scrive una funzione, e non sai nemmeno che quell'"&" non ha senso, pure perché x e y non sono inizializzati. Creca bene di capire come si scrivono le funzioni, perché quello proprio non ci azzecca niente. Comunque in teoria dovrebbe darti degli errori quando vai a compilare, ti consiglio di iniziare a vedere cosa dicono per capire cosa non va
  • Butta quel codice e ricomincia con i tuoi appunti. Devi scrivere il codice all'interno della funzione richiesta non nel main.
  • @oregon
    ora mi sembra di aver capito, prima non riuscito proprio da dove cominciare..
    comunque ci ho riflettuto tanto su questo problema e ho rifatto tutto da capo, facendo una funzione cosi:
    int ismultiple(int x, int y)
    {
    	if (x % y == 0) 
    	{
    		return 1;
    	}
    	else return 0;
    }
    
    e infine ho fatto la funzione main. Il programma compila, dovrebbe andare bene, perchè comunque il resto della divisione tra due numeri è zero se sono multipli. Va bene?
  • Si così va bene, comunque l'else puoi anche levarlo e mettere semplicemente return 0, tanto non serve a niente, ma è solo una scelta, non influisce affatto sul funzionamento della funzione
  • Grazie mille!
Devi accedere o registrarti per scrivere nel forum
13 risposte