|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Jan 2006
Città: cp_well
Messaggi: 69
|
Programma in C per esame immediato
Dopo aver fatto lo scritto di informatica (sulla teoria) mi è stato assegnato un ultimo compito, quello di realizzare il seguente programma in C per DOMANI.Il probl però è che sia per lo scritto che per l'orale (sul programma in questione) ho avuto una sola settimana per studiare tutto (teoria + pratica C)...è ovvio quindi che al di fuori di qualche operazione semplice non so fare quasi nulla in C ....Mi dareste una mano per piacere?
"Realizzare un programma che consenta di acquisire una matrice A di n righe e m colonne di numeri a(i,j) tali che LB<=a(i,j)<=UB, con LB e UB fissati. Costruire poi un vettore di UB - LB + 1 componenti che contenga le frequenze dei valori immessi in A. Il vettore di frequenze deve essere sia salvato su file che visualizzato. Determinati gli elementi di frequenza minima e massima, sostituire l'elemento di frequenza massima con quello di frequenza minima all'interno della matrice, e visualizzare il risultato. ...Questo programma lo devo realizzare entro domani ...c'è in ballo l'esito di un esame che nello scritto è andato bene(18 )
|
|
|
|
|
|
#2 |
|
Moderatore
Iscritto dal: Nov 2003
Messaggi: 16211
|
A me sembra un compito faticoso, più che difficile.
Per cui, ti conviene cominciare a scrivere un po' di codice, e se non gira, postarlo spiegando i problemi. Ti dirò che l'unica cosa che mi spaventa un po', è la routine di input. Infatti, ogni volta che inserisci un nuovo valore, devi controllare non solo che l'inserimento sia stato corretto (suggerimento: controlla il valore restituito da scanf), ma anche che il valore immesso sia accettabile. Io scriverei una funzione per l'"immissione condizionata" di un singolo valore, e la inserirei in un doppio ciclo.
__________________
Ubuntu è un'antica parola africana che significa "non so configurare Debian" Scienza e tecnica: Matematica - Fisica - Chimica - Informatica - Software scientifico - Consulti medici REGOLAMENTO DarthMaul = Asus FX505 Ryzen 7 3700U 8GB GeForce GTX 1650 Win10 + Ubuntu |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quoto quanto detto da Ziosilvio.
In più aggiungo: i valori n (numero righe), m (numero colonne) ed anche LB e UB, sono da "cablare" nel programma o sono da richiedere in input??? In particolare per n ed m, se sono da richiedere in input, devi prevedere anche l'allocazione dinamica della matrice.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
#4 |
|
Member
Iscritto dal: Jan 2006
Città: cp_well
Messaggi: 69
|
Grazie ragazzi per la tempestività e le dritte, ma non vorrei sembrare scortese nel ripetere (me ne vergogno un pò, ma in parte sono comprensibile) che in una settimana di tempo non ho avuto modo di concentrarmi particolarmente sul C a causa di uno scritto basato su tutt'altro(algoritmi di ordinamento, rappresentaz numeri, tipi astratti di dato ecc...), vi prego quindi di darmi almeno l'inizio di questo programma sul quale non so proprio dove mettere le mani
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Ecco una base da cui partire:
Codice:
#include <stdio.h>
int main (void)
{
int n, m;
int ret;
do {
printf ("Inserire il numero di righe: ");
ret = scanf ("%d", &n);
} while (ret != 1 || n < 1);
do {
printf ("Inserire il numero di colonne: ");
ret = scanf ("%d", &m);
} while (ret != 1 || m < 1);
return 0;
}
Tieni presente che la scanf è una ciofeca di funzione ed è afflitta da un grave problema. Nel caso della specifica di formato %d, la scanf si aspetta di ricevere una sequenza di caratteri che rappresenti un numero. Se digiti ad esempio una lettera, il programma va in palla.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
#6 |
|
Member
Iscritto dal: Jan 2006
Città: cp_well
Messaggi: 69
|
Grazie, per la matrice di numeri a(i,j), tali che LB<=a(i,j)<=UB (con LB e UB fissati) non so sinceramente nulla, ho cercato nel manuale di C che mi sono procurato il significato di UB ed LB, ho visto che sono gli estremi di un vettore...ma in che modo inserirli nel prog. ??(considerato che poi devo costruire il vett di UB - LB + 1 componenti che contiene le frequenze dei valori immessi in A...anche questa un'operaz per me impossibile da eseguire
|
|
|
|
|
|
#7 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Quello che non so (e che non ci hai detto) è se la matrice deve contenere dei numeri interi o dei float/double. Presupponendo che anche LB ed UB debbano essere presi in input, prova a modificare il codice che ti ho postato in modo da prendere in input anche LB ed UB. Dopodiché ci sarebbe da fare: 1) Allocare la memoria per la matrice 2) Riempire la matrice 3) Allocare l'array delle frequenze 4) Calcolare le frequenze Inoltre, come già detto da te, si deve anche stampare e salvare su file il vettore delle frequenze.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#8 |
|
Member
Iscritto dal: Jan 2006
Città: cp_well
Messaggi: 69
|
Il programma mi è stato consegnato di persona dal Prof così com'è, presumo quindi che,se non specificato, intenda che si tratti di valori interi. Detto questo, non ho sinceramente la più pallida idea di come si possa realizzare tale programma con tutte le varie istruzioni richieste
|
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Ma hai un editor e un compilatore C sotto mano in questo momento? Se sì, prova il codice che ho postato, prova a modificarlo e ad aggiungergli l'input per LB/UB, per esempio.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
#10 |
|
Member
Iscritto dal: Jan 2006
Città: cp_well
Messaggi: 69
|
Ho il DevC++, ma LB e UB li devo aggiungere con le stesse condizioni di n e m?..Ti prego aiutami il + possibile non so fare praticamente niente ma realizzare questo programma potrebbe permettermi di superare l'esame. Grazie
|
|
|
|
|
|
#11 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Per quanto riguarda LB ed UB, penso che in teoria non ci siano limiti particolari. Un valore può andare da -1000 a +2000, tanto per dire. Potresti eventualmente forzare tu dei limiti min/max, magari per evitare che qualcuno ti metta una roba del tipo -1000000 e +1000000.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#12 |
|
Member
Iscritto dal: Jan 2006
Città: cp_well
Messaggi: 69
|
Ok, quindi dovrei fare
Codice:
#include <stdio.h>
int main (void)
{
int n, m, LB ,UB;
int ret;
do {
printf ("Inserire il numero di righe: ");
ret = scanf ("%d", &n);
} while (ret != 1 || n < 1);
do {
printf ("Inserire il numero di colonne: ");
ret = scanf ("%d", &m);
} while (ret != 1 || m < 1);
do {
printf ("Inserire LB: ");
ret = scanf ("%d", &LB);
} while (ret > -100 && ret < 100);
do {
printf ("Inserire UB: ");
ret = scanf ("%d", &UB);
} while (ret > -100 && ret < 100);
return 0;
}
|
|
|
|
|
|
#13 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Inoltre, almeno a livello di variabili, metti il nome in minuscolo.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#14 |
|
Member
Iscritto dal: Jan 2006
Città: cp_well
Messaggi: 69
|
Me lo immaginavo...se hai un'idea di come possa essere realizzato questo programma, la puoi postare x piacere?Purtroppo credo sia l'unico modo per avere questo prog. per domani, Grazie infinite
|
|
|
|
|
|
#15 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Tra l'altro adesso sto per uscire dall'ufficio e stasera non credo che avrei molto tempo.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#16 |
|
Member
Iscritto dal: Jan 2006
Città: cp_well
Messaggi: 69
|
Ok non ti preoccupare, grazie comunque dell'enorme pazienza e degli aiuti
|
|
|
|
|
|
#17 | |
|
Senior Member
Iscritto dal: Jul 2005
Città: Bologna
Messaggi: 1130
|
Quote:
Perchè dovresti poter superare un esame universitario senza sapere nulla?
__________________
-> The Motherfucking Manifesto For Programming, Motherfuckers |
|
|
|
|
|
|
#18 | |
|
Member
Iscritto dal: Jan 2006
Città: cp_well
Messaggi: 69
|
Quote:
|
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 23:20.



















