|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Junior Member
Iscritto dal: Jan 2015
Messaggi: 10
|
c++ aiuto programma array
#include<stdio.h>
int main(){ int a[10],b[5],i,d; double c; d=1; for(i=0;i<10;i++){ printf("inserisci valore di a\n"); scanf("%d",&a[i]); c=i%2; if(c!=0) { b[d]=a[i]; d=d+1; } } for(d=0;d<6;d++){ printf("%d",b[d]); } return 0; } in questo programmma devo dichiarare un array ed inserire tutti i componenti pari in un altro array che deve essere visualizzato. non riesco a capire dove sbaglio |
![]() |
![]() |
![]() |
#2 | |
Senior Member
Iscritto dal: Jan 2012
Messaggi: 1267
|
Quote:
tipo if (c != 0), molto più leggibile... Poi, se un utente inserisce 10 numeri pari, tu hai dichiarato b con lunghezza 5... e gli altri 5? Poi, d parte da 1 per l'inserimento in b, anzichè da 0. |
|
![]() |
![]() |
![]() |
#3 |
Junior Member
Iscritto dal: Jan 2015
Messaggi: 10
|
grazie ce l ho fatta.
mi potresti aiutare con questo piccolo quesito: si considerino le seguenti dichiarazione di variabili e prototipo(intestazione di funzione): int vt[10] [20]; double x; int f(int &a,int b); la seguente espressione contiene degli errori f( vt[7] [2] + 2, x + 2 ) + 7.8 mi potresti spiegare gli errori grazie |
![]() |
![]() |
![]() |
#4 |
Junior Member
Iscritto dal: Jan 2015
Messaggi: 10
|
#include<stdio.h>
int F(int &x,int &y) { x=y+1; y=y+1; return x + 1; } int main() { int x,y; x=1; y=F(y,x); printf("%d",&y); return 0; } potresti dare un occhio anche a questo grazie |
![]() |
![]() |
![]() |
#5 |
Member
Iscritto dal: Nov 2010
Città: Genova
Messaggi: 186
|
Tra gli errori che vedo qua:
1- vt e x non sono inizializzati ed f non è definita. 2- il primo parametro di f è dichiarato come un riferimento a int (necessario per il cosidetto passaggio per riferimento, rispetto al passaggio per copia), mentre nell'espressione, il parametro che viene dato è un int. 3- f ritorna un int e gli viene sommato un float. La riga compilerebbe comunque perchè dovrebbe venir fatta la conversione del valore di ritorno di f in un float (per esempio, se f ritornasse 5, avremmo 5.0 + 7.8). Credo che, a compile time, tu riceva un Warning perchè non usi il valore dell'espressione (anzi, direi che ricevi un'errore visto che non c'è il punto e virgola ![]() 4- Il secondo parametro di f dovrebbe essere un int, mentre invece risulta un double. Per quanto riguarda il tuo ultimo post: che problema è? Dovresti calcolare il valore di y che viene stampato? Se è così, la cosa è abbastanza semplice, basta non confondersi tra la coppia di variabili x,y nel main e quella di parametri in F. Discutendo delle righe del main in ordine (x e y sono quindi le variabili nel main) abbiamo che: 1) A x viene assegnato il valore 1 2) viene chiamata la funzione F che: 2-1)Assegna a y il valore 2 2-2)Assegna a x il valore 2 2-3)Ritorna il valore 3, il quale viene assegnato a y 3) Stampa il valore di y: 3 4) Ritorna 0 e conclude il main |
![]() |
![]() |
![]() |
#6 |
Junior Member
Iscritto dal: Jan 2015
Messaggi: 10
|
#include<stdio.h>
int controlla(int &a,int b[10],int &c){ int i; for(i=0;i<10;i++){ if ((i>0)&&(c=b[i-1])&&(c=b[i])){ a=1; break; } else a=0; } printf ("il valore di a è %d",&a); return(0); } int main(){ int a[10],j,b,d; printf("dammi d"); scanf("%d",&d); for (j=0;j<10;j++){ printf("inserisci il valore nel vettore"); scanf ("%d",&a[j]); } controlla(b,a[j],d); return(0); } |
![]() |
![]() |
![]() |
#7 |
Junior Member
Iscritto dal: Jan 2015
Messaggi: 10
|
in questo esercizio devo stampare a=1 se ci sono due valori consecuitvi nell array che sono uguali se no stampo a=0. devo risolverlo con l uso di una funzione ma mi da errore perche ?
|
![]() |
![]() |
![]() |
#8 |
Member
Iscritto dal: Nov 2010
Città: Genova
Messaggi: 186
|
Potresti anche dire che tipo di errore ricevi
![]() Così ad occhio, dovresti ricevere un segmentation fault, perchè dai come input alla funzione l'intero a[10] (dove l'ultimo posto allocato è a[9]). Visto che vuoi avere un vettore in ingresso, quando chiami la funzione, dovrai scrivere: controlla(b, a, d) |
![]() |
![]() |
![]() |
#9 |
Junior Member
Iscritto dal: Jan 2015
Messaggi: 10
|
#include<stdio.h>
#include<stdlib.h> int controlla(int &a,int b[9],int c){ int i; a=0; for(i=0;i<9;i++){ if ((c==b[i])&&(c==b[i+1])) a=1; return (a); } int main(){ int a[9],j,b,d,ris; printf("dammi d"); scanf("%d",&d); for (j=0;j<10;j++){ printf("inserisci il valore nel vettore"); scanf ("%d",&a[j]); } ris=controlla(b,a,d); printf("stampa il risultato %n",&ris); return(0); } ora mi da un errore che non riesco a capire. qualcuno mi aiuta ? Ultima modifica di bro41 : 21-01-2015 alle 10:52. |
![]() |
![]() |
![]() |
#10 |
Member
Iscritto dal: Nov 2010
Città: Genova
Messaggi: 186
|
Non hai chiuso il for statement dopo "a=1;"
|
![]() |
![]() |
![]() |
#11 |
Junior Member
Iscritto dal: Jan 2015
Messaggi: 10
|
grazie adesso non mi da errore pero quando faccio andare il programma alla fine mi da un risultato assurdo perche ?
|
![]() |
![]() |
![]() |
#12 | |
Senior Member
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
|
Quote:
Inoltre, il testo sembra chiederti si stampare a=1 se ci sono due elementi consecutivi uguali. Quindi, a cosa ti serve chiedere all'utente di inserire d? E poi, cosa ti serve passare una variabile b - che non contiene alcun valore sensato - a controlla()? in controlla() poi le utilizzi con il nome a e le assegni subito un valore. Tanto vale dichiararla locale, giusto?
__________________
In God we trust; all others bring data |
|
![]() |
![]() |
![]() |
#13 |
Junior Member
Iscritto dal: Jan 2015
Messaggi: 10
|
d mi serve perchè oltre a dover avere due valori uguali consecutivi nell vettore devono essere uguali anche ad un paramtro fornito da utente. per quanto riguarda il vettore perchè non va bene ? deve essere contenere 10 elementi e quello che ho fatto io va da 0 a 9. mentre inserisco la variabile b perchè l esercizio mi impone tre parametri.
|
![]() |
![]() |
![]() |
#14 | |
Senior Member
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
|
Quote:
Resta comunque il parametro a (il primo parametro della controlla()) che non ha senso, potresti dichiarare una variabile locale, al suo posto.
__________________
In God we trust; all others bring data |
|
![]() |
![]() |
![]() |
#15 |
Junior Member
Iscritto dal: Jan 2015
Messaggi: 10
|
anche togliendo il parametro la funzione il programma non funziona:
#include<stdio.h> #include<stdlib.h> int controlla(int b[9],int &c){ int a,i; a=0; for(i=0;i<9;i++){ if ((c==b[i])&&(c==b[i+1])) a=1;} return (a); } int main(){ int a[9],j,d,ris; printf("inserisci d"); scanf("%d",&d); for (j=0;j<10;j++){ printf("inserisci il valore nel vettore"); scanf ("%d",&a[j]); } ris=controlla(a,d); printf("stampa il risultato %d",&ris); return(0); } nella funzione faccio arrivare il cilo fino ad 8 perchè tanto attraverso l if uso la posizione 9 |
![]() |
![]() |
![]() |
#16 | |
Senior Member
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
|
Quote:
![]() Codice:
int main(){ int a[9],j,d,ris; printf("inserisci d"); scanf("%d",&d); for (j=0;j<10;j++){ printf("inserisci il valore nel vettore"); scanf ("%d",&a[j]); } ris=controlla(a,d); printf("stampa il risultato %d",&ris); return(0); }
__________________
In God we trust; all others bring data |
|
![]() |
![]() |
![]() |
#17 |
Junior Member
Iscritto dal: Jan 2015
Messaggi: 10
|
ragazzi io studio economia e sn capitato qua per avere quaòche dritta
![]() cosa ho sbagliato nel printf ? grazie |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 13:05.