Compila ma non parte cosa sbaglio?

di il
20 risposte

Compila ma non parte cosa sbaglio?

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

//definizione prptotipo//////////////

int controllo(int i,int x,int y);
int getnum(int x,int y);

////////////////////////////main////////////////////////////////////////////

int main(){
	
	int leyland[1000];
	int i=4,k=0,j,x,y;
	
	int seed;
	seed=time(0);
	srand48(seed);

	printf("Scrivere un programma che trovi i numeri di Leyland compresi tra 4 e 1000 e, una volta trovati, li classifica\n");
	
	x&&y==getnum(x,y);
	printf("%d,%d",x,y);
	
	do{
		leyland[k]=controllo(i,x,y);
		
		k++;
		i++;
		
		printf("leyland= %d ,k = %d,h =%d,\n", leyland[k],k,i);
		
	}while(i!=1000);
	
	printf("ciao\n");
	
	return 0;
	
	}
	




// definizione funzioni/////////////////////////

int controllo(int i,int x,int y){
	int j;
	
// verifico che i sia di leyland
		do{
			
			if(((pow(x,y)+pow(y,x))==i)&&(i%2==0)){
			j=i;
			}
			else{i++;
			}
		
		}while(j!=i);
	
	return(j);	
}

int getnum(int x,int y){
	
	do{
			x=((int)lrand48()/RAND_MAX)*(1000);
			y=((int)lrand48()/RAND_MAX)*(1000);
			
		}while(((x%2)!=0)&&((y%2)!=0)&&(1>y)&&(y>x));
		
		return (x&&y);
	
}

20 Risposte

  • Re: Compila ma non parte cosa sbaglio?

    Non fai prima a studiarti due pagine di un libro di programmazione in C? Perdi meno tempo...
  • Re: Compila ma non parte cosa sbaglio?

    Ho chiesto solo aiuto se non me lo vuoi dare non ti esprimere.
  • Re: Compila ma non parte cosa sbaglio?

    Sei molto lontano dalla soluzione, poi certe righe che hai scritto, tipo x&&y==getnum(x,y); richiedono che ti fermi un attimo per studiare le basi, ed è già il secondo thread. Poi fai quello che credi
  • Re: Compila ma non parte cosa sbaglio?

    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    #include <time.h>
    
    //definizione prptotipo//////////////
    
    int controllo(int i,int x,int y);
    
    ////////////////////////////main////////////////////////////////////////////
    
    int main(){
    	
    	int leyland[1000];
    	int i=4,k=0,j,x,y;
    	
    	int seed;
    	seed=time(0);
    	srand48(seed);
    
    	printf("Scrivere un programma che trovi i numeri di Leyland compresi tra 4 e 1000 e, una volta trovati, li classifica\n");
    	
    	do{
    			x=((int)lrand48()/RAND_MAX)*(1000);
    			y=((int)lrand48()/RAND_MAX)*(1000);
    			
    		}while(((x%2)!=0)&&((y%2)!=0)&&(1>y)&&(y>x));
    	
    	
    	do{
    		leyland[k]=controllo(i,x,y);
    		
    		k++;
    		i++;
    		
    		printf("leyland= %d ,k = %d,h =%d,\n", leyland[k],k,i);
    		
    	}while(i!=1000);
    	
    	printf("ciao\n");
    	
    	return 0;
    	
    	}
    	
    
    
    
    
    // definizione funzioni/////////////////////////
    
    int controllo(int i,int x,int y){
    	int j;
    	
    // verifico che i sia di leyland
    		do{
    			
    			if(((pow(x,y)+pow(y,x))==i)&&(i%2==0)){
    			j=i;
    			}
    			else{i++;
    			}
    		
    		}while(j!=i);
    	
    	return(j);	
    }
    inizialmente era così ma non parte lo stesso
  • Re: Compila ma non parte cosa sbaglio?

    Il programma compila e parte, ma si blocca nella funzione "controllo" in un ciclo infinito. Prova a mettere delle printf nell'if e vedi che succede:
    
    int controllo(int i,int x,int y){
    	int j;
    	
    // verifico che i sia di leyland
    	do{
    		if(((pow(x,y)+pow(y,x))==i)&&(i%2==0)){
    			j=i;
    			printf("si\n");
    		}
    		else{
    			i++;
    			printf("no\n");
    		}
    		
    	}while(j!=i);
    	
    	return(j);	
    }
    
  • Re: Compila ma non parte cosa sbaglio?

    Hai ragione viene un ciclo infinito nella else. è come se non entrasse mai nell'if
  • Re: Compila ma non parte cosa sbaglio?

    Se la if non risulta mai vera, chiediti perché.
  • Re: Compila ma non parte cosa sbaglio?

    int controllo(int i,int x,int y){
    	
    // verifico che i sia di leyland
    			
    	if(((pow(x,y)+pow(y,x))==i)&&((i%2)==0)){
    	return i;
    	}
    }
    provando a imporre la funzione controllo così escono fuori dei valori, ma la i che viene ritornata non è quella che mi aspettavo. dovrebbe ritornare un numero intero compreso tra 4 e 1000 che soddisfa la condizione della if. ma ritorna tutt'altro
  • Re: Compila ma non parte cosa sbaglio?

    Sia la k che la i incrementano (ho provato a fare delle print) ma quando vado a stampare l'array mi stampa tutti 0. il che è decisamente improbabile perchè l'ho riempito con tutte le i che soddisfano la condizione della funz. controllo.
  • Re: Compila ma non parte cosa sbaglio?

    Penso sia per lo stesso motivo di prima. ossia non entra nella if della funz. controllo perchè quando metto delle print nella if non le gira. ma non capisco il motivo per cui non ci entra
  • Re: Compila ma non parte cosa sbaglio?

    Nella if ci entra SOLO se la condizione viene soddisfatta, no?

    Quindi metti delle printf prima della if per controllare i valori che stai confrontando e dicci cosa ottieni. E capirai perché la if non viene soddisfatta.
  • Re: Compila ma non parte cosa sbaglio?

    Se stampo la i mi itera fino a 1000 ( e questo va bene) se stampo x,y (che dovrebbero essere generati casualmente tra 0 e 1000) mi esce sempre 0 per entrambi
  • Re: Compila ma non parte cosa sbaglio?

    La condizione che devo soddisfare è questa:
    x e y interi positivi con 1<y<=x
  • Re: Compila ma non parte cosa sbaglio?

    Quindi la mia condizione di uscita dalla while che genera x e y è:
    while(((x%2)!=0)&((y%2)!=0)&(1>y)&(y>x));
Devi accedere o registrarti per scrivere nel forum
20 risposte