|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Aug 2006
Messaggi: 177
|
Mi aiutate per favore? grazie mille
potete darmi una mano a fare questi 5 semplici programmini in c, non ho proprio idea di come si fanno e devo consegnarli tra pochi giorni.
grazie Esercizio 1 Si scriva un programma che prenda da input due interi n e x. Il programma calcolerà e stamperà le prime n potenze di x. Esempio: se il numero di potenze n è pari a 5 e x=2 allora il programma dovrà calcolare e stampare le prime 5 potenze di 2: 20 , 21 , 22 , 23 , 24 Il programma quindi stamperà in output 1 2 4 8 16 Esercizio 2 Si scriva un programma che prenda da input due interi l1 e l2. Il programma calcolerà e stamperà la somma degli interi nell’intervallo [l1,..,l2] estremi inclusi. L1 indica l’estremo inferiore dell’intervallo; l2 l’estremo superiore. Esempio: se l1= 1 e l2=5 il programma stamperà in output 15 Se l1=4 e l2=7 il programma stamperà in output 22 Se l1=5 e l2=3 il programma stamperà in output 0 Esercizio 3 Si scriva un programma che dato un numero n dispari dato da input stampi in output il seguente tipo di figura geometrica (dove n è il numero di asterischi della prima riga e il numero di righe). ******* * * ******* * * ******* * * ******* Esempi: se n=7 il programma stamperà ******* * * ******* * * ******* * * ******* Se n=5 il programma stamperà ***** * * ***** * * ***** Se n=3 il programma stamperà *** * * *** * * *** Esercizio 4 Si scriva un programma che prenda in input due interi x e y. Calcoli e stampi il numero più grande d che sia un divisore sia di x che di y. Esempi Se x=3 e y=7 il programma stamperà 1 Se x=3 e y=9 il programma stamperà 3 Se x=40 e y=35 il programma stamperà 5 Esercizio 5 Si scriva un programma che dato un numero intero x stampi il numero delle sue cifre. Esempi Se x=17390 il programma stamperà 5 Se x=9 il programma stamperà 1 Se x=15590562 il programma stamperà 8 |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jan 2006
Messaggi: 2722
|
Il primo programma puo' essere scritto così:
Codice:
#include <stdio.h>
int main(void)
{
int n, x, i;
int risultato;
printf("Inserisci due numeri interi positivi separati da spazio (es: 5 2): ");
scanf("%d %d", &n, &x);
/* Calcolo le n potenze di x */
for (i = 0; i < n; i++)
{
if (i == 0) /* Caso particolare: x elevato a 0 */
risultato = 1;
else
risultato = risultato * x;
printf("%d^%d = %d\n", x, i, risultato);
}
return 0;
}
NOTA: non c'è alcun controllo d'errore nel codice, essendo un semplice esercizio sul ciclo for...
__________________
- Spesso gli errori sono solo i passi intermedi che portano al fallimento totale. - A volte penso che la prova piu' sicura che esiste da qualche parte una forma di vita intelligente e' il fatto che non ha mai tentato di mettersi in contatto con noi. -- Bill Watterson Ultima modifica di -fidel- : 16-10-2006 alle 11:55. |
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Aug 2006
Messaggi: 177
|
ti ringrazio moltissimo, ho appena cominciato programmazione I all'universita ma non ci riesco proprio a fare sti esercizietti, bo, ci so quasi riuscito a fa quello degli intervalli, poi gli altri li provo domani
grazie ancora |
|
|
|
|
|
#4 |
|
Member
Iscritto dal: Aug 2006
Messaggi: 177
|
per uno che ha gia fatto programmazione sono facili questi, ma per me che faccio programmazione da 2 settimane non sono facilissimi.
|
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: Jan 2006
Messaggi: 2722
|
Quote:
__________________
- Spesso gli errori sono solo i passi intermedi che portano al fallimento totale. - A volte penso che la prova piu' sicura che esiste da qualche parte una forma di vita intelligente e' il fatto che non ha mai tentato di mettersi in contatto con noi. -- Bill Watterson |
|
|
|
|
|
|
#6 |
|
Member
Iscritto dal: Aug 2006
Messaggi: 177
|
il problema è l'approccio
stasera mi ci metto con calma e provo a farne qualcuno quello con gli asterischi non lo farò mai, ho sentito parlare di matrici ecc.., non so nemmeno cosa sono, se potete darmi un aiutino ve ne sarei molto grato ciao |
|
|
|
|
|
#7 | ||
|
Senior Member
Iscritto dal: Jan 2006
Messaggi: 2722
|
Quote:
Quote:
__________________
- Spesso gli errori sono solo i passi intermedi che portano al fallimento totale. - A volte penso che la prova piu' sicura che esiste da qualche parte una forma di vita intelligente e' il fatto che non ha mai tentato di mettersi in contatto con noi. -- Bill Watterson |
||
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Jan 2006
Messaggi: 2722
|
A titolo esplicativo, dal momento che penso hai bisogno di esempi per capire come formalizzare un algoritmo, posto la soluzione all'esercizio numero 3, completamente commentato. Soffermati al modo che ho usato per risolvere il problema. Vedi le domande che mi sono posto e come le ho formalizzate via codice.
Quando fai un programma, anche semplice, pensa ai passi che compiresti per risolverlo: in questo caso, se avessi preso un foglio di carta e avessi voluto disegnare quella figura, cosa avresti fatto? Probabilmente i passi che avresti compiuto nella tua mente (forse in modo "inconscio") sono gli stessi di questo programma: Codice:
/*
NOTA 1: L'operatore % (percentuale), usato per controllare la parità o meno di un
numero, realizza semplicemente l'operazione matematica "modulo". Esso fa la
divisione tra due numeri interi, ma restituisce il RESTO della divisione
invece che il risultato.
Ad esempio, 7 % 5 restituira' 2, 4 % 2 restituira' 0, ecc.
Quindi, se il resto della divisione tra un qualunque numero e 2 restituisce 0,
il numero e' sicuramente pari, altrimenti e' dispari.
NOTA 2: Nel primo ciclo for, parto da i = 1 invece che da i = 0 perche', altrimenti, la
prima riga sarebbe stata considerata come una riga in posizione pari.
Ovviamente, la condizione di uscita dal ciclo for diventa i <= x (a differenza
del secondo ciclo for, in cui si parte come al solito da j = 0, quindi la
condizione di uscita e' la solita j < x).
*/
#include <stdio.h>
int main(void)
{
int x, i, j;
printf("Inserisci un numero intero positivo dispari: ");
scanf("%d", &x);
/* Il numero letto da tastiera e' dispari? */
if ((x % 2) != 0)
{
/* Si', il numero e' dispari: OK! */
/*
Con il ciclo for stampo un numero di righe pari al numero inserito.
Per ogni riga, vedo se corrisponde ad una riga dispari o pari:
se e' una riga dispari, stampo un numero di asterischi pari al
numero inserito (con un altro ciclo for), mentre se e' una riga pari
stampo solo due asterischi (direttamente).
*/
for (i = 1; i <= x; i++)
{
/* Sono su una riga dispari o su una riga pari? */
if ((i % 2) != 0)
{
/* Sono su una riga dispari: stampo un numero di asterischi pari a x */
for (j = 0; j < x; j++)
printf("*");
}
else
/* Sono su una riga pari: stampo 2 asterischi */
printf("**");
/* Vado a capo per la prossima riga */
printf("\n");
}
}
else
/* No, il numero e' pari... */
printf("Il numero inserito e' pari!\n");
return 0;
}
__________________
- Spesso gli errori sono solo i passi intermedi che portano al fallimento totale. - A volte penso che la prova piu' sicura che esiste da qualche parte una forma di vita intelligente e' il fatto che non ha mai tentato di mettersi in contatto con noi. -- Bill Watterson Ultima modifica di -fidel- : 16-10-2006 alle 17:42. |
|
|
|
|
|
#9 |
|
Member
Iscritto dal: Aug 2006
Messaggi: 177
|
non so come ringraziarvi, prendo spunto da sti 2 esercizi e da stasera mi ci metto anche io.
il problema è che io comincio subito a scrivere in c, invece penso che sarebbe meglio farsi un idea sulla carta, ma mi sembra una perdita di tempo un 'altra cosa che mi frega è che sottovaluto sti esercizietti, sembrano stupidi, ma non lo sono affatto... |
|
|
|
|
|
#10 | ||
|
Senior Member
Iscritto dal: Jan 2006
Messaggi: 2722
|
Quote:
Quote:
Ah, vedi che ho leggermente modificato i commenti nel programma postato prima, per semplificarti la vita
__________________
- Spesso gli errori sono solo i passi intermedi che portano al fallimento totale. - A volte penso che la prova piu' sicura che esiste da qualche parte una forma di vita intelligente e' il fatto che non ha mai tentato di mettersi in contatto con noi. -- Bill Watterson |
||
|
|
|
|
|
#11 |
|
Member
Iscritto dal: Aug 2006
Messaggi: 177
|
ok, stasera mi ci metto con calma poi a giorni vi faccio sapere.
ora sono alle prese con un'altra materia non facilissima ma che mi riesce meglio. architettura degli elaboratori p.s io facevo esattamente quello che dici, mi mettevo subito davanti al pc. ciao |
|
|
|
|
|
#12 |
|
Member
Iscritto dal: Aug 2006
Messaggi: 177
|
domandina.
cosa mi consigliate di usare per vedere il risultato del programma sullo schermo? io uso sempre #include <cstdlib> e system("PAUSE"); alla fine cosi alla fine del programma mi dice premere un tasto per continuare mica mi verrà considerato errore quando lo correggeranno gli insegnanti? conoscete un altro metodo? grazie |
|
|
|
|
|
#13 | |
|
Senior Member
Iscritto dal: Jan 2006
Messaggi: 2722
|
Quote:
"sh: PAUSE: command not found" Ti consiglio, molto più semplicemente, di fare così: Codice:
printf("Premere INVIO per continuare...");
getchar();
EDIT: Se lanci i tuoi programmi dalla console di Windows (prompt dei comandi), non hai assolutamente bisogno di far uscire un messaggio di quel tipo. Immagino che tu la usi perchè avvii i programmi console con un doppio click da Esplora risorse, quindi la console si chiude automaticamente alla fine del programma. Per comodità, usa le due righe di codice che ho postato, ma anche se non metti nulla il tuo programma sarà corretto (perchè il prof. sa tutto questo e lancerà i programmi dal prompt dei comandi
__________________
- Spesso gli errori sono solo i passi intermedi che portano al fallimento totale. - A volte penso che la prova piu' sicura che esiste da qualche parte una forma di vita intelligente e' il fatto che non ha mai tentato di mettersi in contatto con noi. -- Bill Watterson Ultima modifica di -fidel- : 16-10-2006 alle 18:23. |
|
|
|
|
|
|
#14 |
|
Member
Iscritto dal: Aug 2006
Messaggi: 177
|
sisi, infatti penso di mettere il classico return 0 per evitare rischi
comq i programmi devono essere compatibili con gcc mi sembra si chiami cosi, cioè su linux |
|
|
|
|
|
#15 |
|
Member
Iscritto dal: Aug 2006
Messaggi: 177
|
ho provato a incollare alla fine le due righe che mi hai detto ma non funzionano
la finestra si chiude subito come quando metto return 0 |
|
|
|
|
|
#16 | |
|
Senior Member
Iscritto dal: Jan 2006
Messaggi: 2722
|
Quote:
Codice:
while(getchar() != '\n');
printf("Premere INVIO per continuare...");
getchar();
__________________
- Spesso gli errori sono solo i passi intermedi che portano al fallimento totale. - A volte penso che la prova piu' sicura che esiste da qualche parte una forma di vita intelligente e' il fatto che non ha mai tentato di mettersi in contatto con noi. -- Bill Watterson |
|
|
|
|
|
|
#17 |
|
Member
Iscritto dal: Aug 2006
Messaggi: 177
|
funziona perfettamente
|
|
|
|
|
|
#18 |
|
Member
Iscritto dal: Aug 2006
Messaggi: 177
|
sto provando a fare il 4. mi date qualche piccolo indizio su come risolverlo?
io sto giocando un po con for,if else e while e con l'operatore di resto, ma non esce niente di buono |
|
|
|
|
|
#19 |
|
Member
Iscritto dal: Aug 2006
Messaggi: 177
|
sono riuscito a farlo con la formula di euclide
ora mi mancano il secondo e il quinto esercizio, dopo ci provo. sono accettati piccoli suggerimenti, che mi mettano sulla buona strada ciao |
|
|
|
|
|
#20 | |
|
Senior Member
Iscritto dal: May 2006
Città: Salerno
Messaggi: 936
|
Quote:
devi usare l'operatore % buon lavoro |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 03:07.



















