|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Sep 2005
Città: 127.0.0.1
Messaggi: 3321
|
[C] Come si risolve una cosa del genere?
So che è elementare, ma mi serve con una certa urgenza...
Scrivere e far girare un programma C che: 1. legge un numero n minore di 30 2. legge n interi e li mette in un array int a[] 3. legge un intero m, 4. calcola la somma degli elementi dell’array a maggiori o uguali ad m utilizzando la funzione (che si deve definire) int somma(int a[], int p, int m) che restituisce la somma dei primi p elementi dell’array a maggiori di m 5. stampa: a. la media degli interi letti maggiori di del numero m letto (cioè la somma diviso per quanti sono). Ad esempio se Leggo 5 (dimensione dell’array) Leggo i numeri 2 7 3 4 10 Leggo 4 Stamperò: La somma dei numeri letti maggiori o uguali a di 4 è 21 thx.
__________________
Intel Core 2 Duo E6420 | 2x1 GB Team Group XTreem PC6400 CL4 + 2x2 GB Corsair XMS2 | Gigabyte P35C - DS3R | XFX nVidia GeForce 8800 GTS 640 MB Extreme Edition | Western Digital Raptor 74GB | Samsung HD153WI 1,5 TB | NEC ND-4551A | Seasonic S12 600W | Coolermaster Stacker STC-01 Black | Acer AL1916w. ~ Trattative positive: 30 negative: 1 (Insane_Tech) |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Nov 2000
Città: MILANO
Messaggi: 2662
|
senza offesa ma già il titolo è strairritante
io te lo faccio anche se vuoi, anche con una certa urgenza... se me lo paghi |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Sep 2005
Città: 127.0.0.1
Messaggi: 3321
|
Boh scusa non mi sembrava di esser stato così sgarbato per meritarmi una risposta del genere... mi serviva sapere come farlo per studiarci un po' sopra, ma non è che obbligo nessuno eh...
__________________
Intel Core 2 Duo E6420 | 2x1 GB Team Group XTreem PC6400 CL4 + 2x2 GB Corsair XMS2 | Gigabyte P35C - DS3R | XFX nVidia GeForce 8800 GTS 640 MB Extreme Edition | Western Digital Raptor 74GB | Samsung HD153WI 1,5 TB | NEC ND-4551A | Seasonic S12 600W | Coolermaster Stacker STC-01 Black | Acer AL1916w. ~ Trattative positive: 30 negative: 1 (Insane_Tech) |
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Nov 2000
Città: MILANO
Messaggi: 2662
|
Quote:
no no non sei sgarbato figurati ma è come dire 'io non ho voglia di farlo fatelo voi'. inizia a fare qualcosa. avrai un libro da consultare. prova e posta il tuo codice. poi ti si aiuta volentieri. |
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Nov 2004
Messaggi: 357
|
Inizia a scrivere un po' di codice, altrimenti ti assicuro che non imparerai mai.
Poi quando hai buttato giù qualcosa ti si da una mano volentieri |
|
|
|
|
|
#6 |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
no no ma tranquillo, se ci paghi te lo facciamo in 2 minuti contati con la massima urgenza...
|
|
|
|
|
|
#7 | |
|
Senior Member
Iscritto dal: Sep 2005
Città: 127.0.0.1
Messaggi: 3321
|
Quote:
__________________
Intel Core 2 Duo E6420 | 2x1 GB Team Group XTreem PC6400 CL4 + 2x2 GB Corsair XMS2 | Gigabyte P35C - DS3R | XFX nVidia GeForce 8800 GTS 640 MB Extreme Edition | Western Digital Raptor 74GB | Samsung HD153WI 1,5 TB | NEC ND-4551A | Seasonic S12 600W | Coolermaster Stacker STC-01 Black | Acer AL1916w. ~ Trattative positive: 30 negative: 1 (Insane_Tech) |
|
|
|
|
|
|
#8 |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
allora prova a realizzare la funzione somma senza usare il parametro p: vedrai che ti accorgerai che non ci si riesce
|
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Sep 2005
Città: 127.0.0.1
Messaggi: 3321
|
Sì ma non ho ben capito cosa rappresenta quella p... cioè se ci sono 3 elementi >= m p è uguale a 3?
__________________
Intel Core 2 Duo E6420 | 2x1 GB Team Group XTreem PC6400 CL4 + 2x2 GB Corsair XMS2 | Gigabyte P35C - DS3R | XFX nVidia GeForce 8800 GTS 640 MB Extreme Edition | Western Digital Raptor 74GB | Samsung HD153WI 1,5 TB | NEC ND-4551A | Seasonic S12 600W | Coolermaster Stacker STC-01 Black | Acer AL1916w. ~ Trattative positive: 30 negative: 1 (Insane_Tech) |
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Nov 2004
Messaggi: 357
|
Codice:
che restituisce la somma dei primi p elementi dell’array a maggiori di m Somma dovrà quindi cercare un numero di elementi <= m, quando ne ha trovati p, li somma e restituisce il valore |
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Sep 2005
Città: 127.0.0.1
Messaggi: 3321
|
Ah ok, quindi devo anche chiedere all'utente di inserire p, oltre ad m e agli elementi dell'array!
__________________
Intel Core 2 Duo E6420 | 2x1 GB Team Group XTreem PC6400 CL4 + 2x2 GB Corsair XMS2 | Gigabyte P35C - DS3R | XFX nVidia GeForce 8800 GTS 640 MB Extreme Edition | Western Digital Raptor 74GB | Samsung HD153WI 1,5 TB | NEC ND-4551A | Seasonic S12 600W | Coolermaster Stacker STC-01 Black | Acer AL1916w. ~ Trattative positive: 30 negative: 1 (Insane_Tech) |
|
|
|
|
|
#12 |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
no: p è il numero di elementi dell'array. per il futuro quando ti capita una situazione del genere ripeto: prova a scrivere il codice senza usare quei dati che secondo te sono superflui; ti accorgerai durante la scrittura che superflui non sono.
|
|
|
|
|
|
#13 | |
|
Senior Member
Iscritto dal: Nov 2000
Città: MILANO
Messaggi: 2662
|
Quote:
mi raccomando il fatto che il testo chiami a[] e m sia le variabili che i parametri della funzione è solo per comodità e farti capire. la funzione puo avere anche 3 parametri che si chiamano in altro modo ma da fuori non conta. Ultima modifica di Black imp : 16-07-2006 alle 23:23. |
|
|
|
|
|
|
#14 |
|
Senior Member
Iscritto dal: Sep 2005
Città: 127.0.0.1
Messaggi: 3321
|
Una cosa che non ho capito è questa (grassetto
Scrivere e far girare un programma C che: 1. legge un numero n minore di 30 2. legge n interi e li mette in un array int a[] 3. legge un intero m, 4. calcola la somma degli elementi dell’array a maggiori o uguali ad m utilizzando la funzione (che si deve definire) int somma(int a[], int p, int m) che restituisce la somma dei primi p elementi dell’array a maggiori di m 5. stampa: a. la media degli interi letti maggiori del numero m letto (cioè la somma diviso per quanti sono). Ad esempio se Leggo 5 (dimensione dell’array) Leggo i numeri 2 7 3 4 10 Leggo 4 Stamperò: La somma dei numeri letti maggiori o uguali a di 4 è 21
__________________
Intel Core 2 Duo E6420 | 2x1 GB Team Group XTreem PC6400 CL4 + 2x2 GB Corsair XMS2 | Gigabyte P35C - DS3R | XFX nVidia GeForce 8800 GTS 640 MB Extreme Edition | Western Digital Raptor 74GB | Samsung HD153WI 1,5 TB | NEC ND-4551A | Seasonic S12 600W | Coolermaster Stacker STC-01 Black | Acer AL1916w. ~ Trattative positive: 30 negative: 1 (Insane_Tech) |
|
|
|
|
|
#15 |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
si, in effetti hai ragione, il punto 4 è impreciso; io considererei come se dicesse sempre "maggiori o uguali"; nella funzione somma, includi nel calcolo anche i numeri uguali ad m.
|
|
|
|
|
|
#16 |
|
Senior Member
Iscritto dal: Sep 2005
Città: 127.0.0.1
Messaggi: 3321
|
Non capisco, perché devo usare una funzione? Non posso usare due array, in modo che il secondo contenga gli elementi >=m del primo?
__________________
Intel Core 2 Duo E6420 | 2x1 GB Team Group XTreem PC6400 CL4 + 2x2 GB Corsair XMS2 | Gigabyte P35C - DS3R | XFX nVidia GeForce 8800 GTS 640 MB Extreme Edition | Western Digital Raptor 74GB | Samsung HD153WI 1,5 TB | NEC ND-4551A | Seasonic S12 600W | Coolermaster Stacker STC-01 Black | Acer AL1916w. ~ Trattative positive: 30 negative: 1 (Insane_Tech) |
|
|
|
|
|
#17 | |
|
Senior Member
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13827
|
Quote:
I testi dei problemi li fanno per verificare se hai capito come funzionano le cose, sicuramente ci saranno infinite soluzioni diverse e magari più eleganti, ma ti chiedono di usare una funzione per imparare a progettare una funzione in C (se è una esercitazione) o per verificare se lo sai fare (se è un esame) Ciao
__________________
GPU Compiler Engineer |
|
|
|
|
|
|
#18 |
|
Senior Member
Iscritto dal: Sep 2005
Città: 127.0.0.1
Messaggi: 3321
|
Adesso ad esempio perché mi da segmentation fault?
Codice:
#include <stdio.h>
int main()
{
int n;
printf("Inserisci il numero massimo di elementi dell'array (massimo 30)\n");
scanf("%d", &n);
if (n <= 30){
int i;
int j;
int a[n];
int b[j];
int m;
int total;
int average;
for(i = 0; i < n; i++) {
printf("Inserisci l'elemento in posizione i = %d dell'array:\n", i);
scanf("%d", &a[i]);
}
printf( "%5s%20s", "Pos array", "Elemento array\n");
for(i=0; i < n; i++) {
printf("%5d%20d\n", i, a[i]);
}
}
else printf("La dimensione massima dell'array deve essere 30!\n");
return 0;
}
__________________
Intel Core 2 Duo E6420 | 2x1 GB Team Group XTreem PC6400 CL4 + 2x2 GB Corsair XMS2 | Gigabyte P35C - DS3R | XFX nVidia GeForce 8800 GTS 640 MB Extreme Edition | Western Digital Raptor 74GB | Samsung HD153WI 1,5 TB | NEC ND-4551A | Seasonic S12 600W | Coolermaster Stacker STC-01 Black | Acer AL1916w. ~ Trattative positive: 30 negative: 1 (Insane_Tech) |
|
|
|
|
|
#19 |
|
Senior Member
Iscritto dal: Aug 2005
Messaggi: 2755
|
non riesco ad aprire l'allegato, cmq di solito segmentation fault avviene se andando a leggere gli elementi dell'array sfondi l'array andando a leggere dati nn appartenenti al tuo programma.
controlla di far variare l'indice dell'array da 0 a LUNGHEZZA_ARRAY-1
__________________
|
|
|
|
|
|
#20 |
|
Senior Member
Iscritto dal: Nov 2000
Città: MILANO
Messaggi: 2662
|
la j non è inizializzata e la usi per allocare un array b di dimensioni ignote quindi.
Ultima modifica di Black imp : 17-07-2006 alle 14:50. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 07:52.



















