Programma non funzionante - strutture di controllo

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
mazinga_2016
Prode Principiante
Messaggi: 2
Iscrizione: mercoledì 13 aprile 2016, 11:00
Desktop: Ubuntu 14.04
Distribuzione: Ubuntu 14.04
Sesso: Maschile

Programma non funzionante - strutture di controllo

Messaggio da mazinga_2016 »

Salve a tutti,

Il programma funziona, ma non fà quello che deve fare e non rispetta la traccia, dove ho sbagliato?

Codice: Seleziona tutto

//02 - COSTRUTTI DI SELEZIONE - PARTE 1
//17) Dato un valore intero stampare "ciao" se è minore di 5 o maggiore di 12 ma diverso da 3.

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

int main()
{

	int n1;

	printf("\nInserisci il 1° valore: ");
	scanf("%d", &n1);

	if (n1 < 5)
		printf("Ciao\n");
		if (n1 > 12 && n1 != 3)
		printf("Ciao\n");
	else
		printf("Il valore non è accettabile\n");

}

L'altro esercizio mi dà l'errore nel cast, come mai?
Dove ho sbagliato?

Codice: Seleziona tutto

//02 - COSTRUTTI DI SELEZIONE - PARTE 1
//15) Dati un valore reale, dire se il valore ha oppure
//non ha cifre dopo la virgola diverse da zero.

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

int main()
{
	float n1;
	int temp;

	printf("\nInserisci il 1° valore: ");
	scanf("%f", &n1);

	if (n1 == temp) {
		temp = int(n1);
		printf("Non ha cifre dopo la virgola %d.\n",temp);
		if (n1 != temp) {
			n1 = n1 - temp;
			printf("Il valore ha cifre dopo la virgola: %.2f\n",n1);
		}
	}
	else
		printf("Valore non accettabili\n");
}

L'altro esercizio, il programma esegue senza errori, ma non fa nulla, dove ho sbagliato?

Codice: Seleziona tutto

//02 - COSTRUTTI DI SELEZIONE - PARTE 1
//08) Dati 2 interi stampare il secondo solo se la somma di due interi
//è inferiore a 15 oppure se il prodotto dei due è superiore a 100.

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

int main()
{

	int n1, n2, somma, prodotto;

	printf("\nInserisci il 1° valore: ");
	scanf("%d", &n1);
	printf("Inserisci il 2° valore: ");
	scanf("%d", &n2);

	if (somma <= 15) {
		somma = n1 + n2;
		printf("%d + %d = %d\n",n1, n2, somma);
		if (prodotto >= 100) {
			prodotto = n1 * n2;
			printf("%d * %d = %d\n", n1, n2, prodotto);
		}
	else
		printf("I valori richiesti non corrispondono ( <= 15 oppure >= 100\n");}
}
Gerry Ghetto

Re: Programma non funzionante - strutture di controllo

Messaggio da Gerry Ghetto »

mazinga_2016 ha scritto:Il programma funziona, ma non fà quello che deve fare e non rispetta la traccia, dove ho sbagliato?
Se n1 > 12, poi n1 non è mai 3! Logico, ma vero. Guarde e pensa bene.
L'altro esercizio, il programma esegue senza errori, ma non fa nulla, dove ho sbagliato?
Le variabili somma e prodotto sono null.

Usa l'opzione -Wall per compilare:

Codice: Seleziona tutto

gcc -o programma programma.c -Wall
Avatar utente
Gionatha
Prode Principiante
Messaggi: 155
Iscrizione: mercoledì 28 ottobre 2015, 23:02
Desktop: Gnome
Distribuzione: Ubuntu
Sesso: Maschile
Località: Pisa

Re: Programma non funzionante - strutture di controllo

Messaggio da Gionatha »

Stai utilizzando delle variabili (somma,prodotto,temp ecc..),non inizializzandole.In poche parole,non gli assegni un valore prima del loro uso,per esempio nei confronti.
In questo caso devi sapere che : se non inizializzi una variabile,a quest'ultima verra' assegnata un valore casuale,provare per credere.

Se compilli con tutti i Warning attivi Es : gcc -Wall pippo.c -o pippo.o vedrai che gcc ti segnala questi errori.

Un altra cosa,devi migliorare l'identazione : metti le parentesi graffe anche per una sola istruzione,
inoltre alcuni if ,sembrano annidati tra loro quando invece compiono azioni diverse.
Computer science is no more about computers than astronomy is about telescopes
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 4 ospiti