C|Stampare interi compresi tra decimali

di il
12 risposte

C|Stampare interi compresi tra decimali

Buon pomeriggio, Sono ancora qui perché, testando questo programma, ho notato che qualcosa non va;
ho provato a cambiare varie volte le condizioni nel do while, che secondo me sono la causa, ma senza risultati.
Questo è il testo:

Scrivere un programma che stampi tutti gli interi compresi tra due numeri decimali forniti in input,
estremi esclusi

E questo ciò che ho fatto:
#include <stdio.h>
#include <stdlib.h>
int main(){
	float decimale1, decimale2,  min, max, cont;
	do{
		printf("Inserire il primo numero: ");
		scanf("%f", &decimale1);
	}while(decimale1 == 0);
	do{
		printf("Inserire il secondo numero: ");
		scanf("%f", &decimale2);
	}while(decimale2 == 0);
	if(decimale1 < decimale2){
		min = decimale1;  /*IL PRIMO VALORE E' MINORE*/
		max = decimale2;
	}else{
		if(decimale2 < decimale1){
			min = decimale2; /*IL SECONDO VALORE E' MINORE*/
			max = decimale2;
		}else{
			max = decimale1;/*I VALORI SONO UGUALI*/
			min = decimale1;
		}
	}
	do{
		for(cont = min + 1; max - 1; cont++){
			printf("\nValori interi compresi tra %f e %f: ", decimale1, decimale2);
			printf("\n-%d", (int)cont);
		}
	}while(decimale1 == (int) decimale1 || decimale2 == (int) decimale2);
	return 0;
}
Potrebbe essere il casting che ho fatto nel do while errato, o proprio la verifica che siano decimali (?)

12 Risposte

  • Re: C|Stampare interi compresi tra decimali

    Ok ma COSA non va? Ce lo spieghi?
  • Re: C|Stampare interi compresi tra decimali

    Ma sei sicuro che decimale significhi proprio float?

    Perché magari significa solo intero espresso in decimale, non esadecimale ne ottale
  • Re: C|Stampare interi compresi tra decimali

    Oregon io pensavo alla condizione del do while, ho provato a cambiare le equivalenze ma non è cambiato niente, continuava in loop a stampare quello che c'è dentro.
    Comunque StandardOil potresti avere ragione, forse ho frainteso io ma la consegna è quella e non posso esserne sicuro
  • Re: C|Stampare interi compresi tra decimali

    Non hai risposto alla mia domanda ma non fa nulla ... comunque questa for

    for(cont = min + 1; max - 1; cont++){

    non è scritta correttamente
  • Re: C|Stampare interi compresi tra decimali

    For(cont = min + 1; cont = max - 1; cont++){
    Niente io ho provato così ma mi da all'infinito non i numeri che stanno in mezzo ai due decimali ma il numero dei numeri, ad esempio metto 1.2 e 6.4 e mi stampa 5
  • Re: C|Stampare interi compresi tra decimali

    Ma non sarebbe male provare a leggere la documentazione del for
    che magari non sbagli per la seconda volta dopo che te lo hanno indicato
  • Re: C|Stampare interi compresi tra decimali

    Infatti ... non credo la prenderai a male se ti si dice di studiare la for dal libro, no?

    Fermati e studia la teoria altrimenti come scrivi codice che non comprendi?
  • Re: C|Stampare interi compresi tra decimali

    For(cont = min + 1; cont < max - 1; cont++){
    Studierò meglio la teoria, purtroppo ero rimasto indietro e avendo molti esercizi da svolgere sono passato direttamente a farli
  • Re: C|Stampare interi compresi tra decimali

    Un consiglio:
    programmare senza una base teorica è solo uno spreco di lavoro, una fatica inutile
    fai prima, molto prima, a fare le cose alla "maniera di come vanno fatte"
    non è un manierismo, non è una posa, una balla, una cavatina
    è "l'orribile verità che sfocia dalla cruda realtà"
    fai prima a studiare e capire e poi metterti a programmare
    che partire "a tutto vapore" nella direzione sbagliata
  • Re: C|Stampare interi compresi tra decimali

    Grazie del consiglio;
    effettivamente ho potuto osservare la conferma di ciò che hai detto, ma meglio tardi che mai.
    cercherò di recuperare quello che non ho capito
  • Re: C|Stampare interi compresi tra decimali

    Forse c'era un piccolo errore e forse l'ultimo do while non serve.
    Vedi un po' così se gira; a me funziona ma non ho fatto molti test:
    
    #include <stdio.h>
    #include <stdlib.h>
    int main(){
    	float decimale1, decimale2,  min, max, cont;
    	do{
    		printf("Inserire il primo numero: ");
    		scanf("%f", &decimale1);
    	}while(decimale1 == 0);
    	do{
    		printf("Inserire il secondo numero: ");
    		scanf("%f", &decimale2);
    	}while(decimale2 == 0);
    	
    	if(decimale1 < decimale2){
    		min = decimale1;  /*IL PRIMO VALORE E' MINORE*/
    		max = decimale2;
    	}else{
    		if(decimale2 < decimale1){
    			min = decimale2; /*IL SECONDO VALORE E' MINORE*/
    			max = decimale1;
    		}else{
    			max = decimale1;/*I VALORI SONO UGUALI*/
    			min = decimale1;
    		}
    	}
    	printf("\nValori interi compresi tra %f e %f: ", decimale1, decimale2);
    
    		for(cont = min + 1; cont < max - 1; cont++){
    
    			printf("\n- %d", (int)cont);
    		}
    
    		return 0;
    }
    
    A domani! Notte!
    p.s forse anche cont potrebbe essere direttamente un intero, ma ho dimenticato di sistemarlo.
  • Re: C|Stampare interi compresi tra decimali

    Grazie Antragorn, direi che funziona tutto bene!
    Buonanotte
Devi accedere o registrarti per scrivere nel forum
12 risposte