View Full Version : 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
vendettaaaaa
17-01-2015, 15:20
#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
Innanzitutto metti gli spazi tra gli operatori, non si capisce un'acca...
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.
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
#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
dStefano93
18-01-2015, 17:30
snip
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 :ciapet: )
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
#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);
}
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 ?
dStefano93
20-01-2015, 17:58
Potresti anche dire che tipo di errore ricevi :D
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)
#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 ?
dStefano93
21-01-2015, 11:30
Non hai chiuso il for statement dopo "a=1;"
grazie adesso non mi da errore pero quando faccio andare il programma alla fine mi da un risultato assurdo perche ?
sottovento
22-01-2015, 10:34
grazie adesso non mi da errore pero quando faccio andare il programma alla fine mi da un risultato assurdo perche ?
Come ti diceva DStefano93, non hai allocato abbastanza elementi, quindi vai oltre la capacita' del vettore.
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?
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.
sottovento
22-01-2015, 14:04
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.
Il tuo array va da 0 a 8, quindi 9 elementi. La variabile d non era stata indicata nel testo dell'esercizio che avevi pubblicato, quindi ho pensato di farlo notare.
Resta comunque il parametro a (il primo parametro della controlla()) che non ha senso, potresti dichiarare una variabile locale, al suo posto.
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
sottovento
22-01-2015, 15:22
Ho fatto girare il tuo programma, a me funziona, probabilmente non stai dando i valori di ingresso correttamente, es.
...
Beh, piu' che funziona direi che "ha girato" :D
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);
}
ragazzi io studio economia e sn capitato qua per avere quaòche dritta :). abbiate pazienza ma che dimensione dovrei mettere ?
cosa ho sbagliato nel printf ?
grazie
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.