|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Feb 2015
Messaggi: 50
|
[C] Esercizio Vettore - principiante
Salve ragazzi avrei bisogno di una mano relativamente a questo programma in C:
-Acquisire da tastiera elementi interi non nulli che compongono il vettore V (il valore nullo introdotto da tastiera interrompe l'acquisizione e non è elemento del vettore acquisito); -Ricercare il valore e la posizione del massimo positivo pari e del minimo negativo dispari della sequenza di numeri presenti nel suddetto vettore V. Potete costruirmi gentilmente il codice? (personalmente utilizzo DEV 5.8.3) Grazie |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jul 2008
Città: Roma
Messaggi: 542
|
No, non si costruisce codice qui ...
Mostra quello che hai fatto ... |
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Feb 2015
Messaggi: 50
|
Ok...
|
|
|
|
|
|
#4 |
|
Member
Iscritto dal: Feb 2015
Messaggi: 50
|
per il valore e la posizione ho bisogno di un metodo di ricerca sequenziale giusto?
|
|
|
|
|
|
#5 |
|
Member
Iscritto dal: Feb 2015
Messaggi: 50
|
Non potete proprio aiutarmi con quest'ultima richiesta in termini di codice?
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Jan 2014
Messaggi: 3826
|
|
|
|
|
|
|
#7 |
|
Member
Iscritto dal: Feb 2015
Messaggi: 50
|
Un po' tutto sto avendo un bel po' di problemi con la programmazione in C...se potete ve ne sarei grato altrimenti no problem...
|
|
|
|
|
|
#8 | |
|
Senior Member
Iscritto dal: Jan 2014
Messaggi: 3826
|
Quote:
|
|
|
|
|
|
|
#9 |
|
Member
Iscritto dal: Feb 2015
Messaggi: 50
|
Concentrandomi sulla prima parte, potrei fare così?:
#include "stdio.h" #define MAX 100 void input_vett(int V[], int i) { int t,m; for(m=0;m<MAX;m++) { printf("Inserire elementi del vettore\n V[%d]=",m); scanf("%d",&t); if(t!=0) V[m]=t; else break; } } Anche se non mi convince il break perchè, altrimenti, prenderebbe anche il valore nullo, o sbaglio? |
|
|
|
|
|
#10 | |
|
Senior Member
Iscritto dal: Jan 2014
Messaggi: 3826
|
Quote:
|
|
|
|
|
|
|
#11 |
|
Member
Iscritto dal: Feb 2015
Messaggi: 50
|
in questo caso non verrà prelevato lo zero e passerà alla procedura o funzione successiva giusto?
|
|
|
|
|
|
#12 | |
|
Senior Member
Iscritto dal: Jan 2014
Messaggi: 3826
|
Quote:
|
|
|
|
|
|
|
#13 |
|
Member
Iscritto dal: Feb 2015
Messaggi: 50
|
Ci saranno errori su errori ma sono qui per questo, ho soltanto provato a cercare minimo e massimo con le richieste sopracitate ma mi da sempre esito :"Il massimo dei numeri positivi è 1", cosa va modificato?
#include "stdio.h" #define MAX 100 void input_vett(int V[], int* i) { int t,m; for(m=0;m<MAX;m++) { printf("Inserire elementi del vettore\n V[%d]=",m); scanf("%d",&t); if(t!=0) V[m]=t; else break; } *i=m; } void ricerca_max_min_posizione (int V[], int i) { int x, min=-1, max=1, N=0, Z=0; for(x=0;x<i;x++) { if(V[x]%2==0 && V[x]>0) { N ++; if (V[x]>max) V[x]=max; } else (V[x]%2==1&&V[x]<0); { Z++; if (V[x]<min) V[x]=min; } } if (N!=0) { printf("Il massimo dei numeri positivi pari e''=%d\n",max); system("PAUSE"); } else (N=0); { printf("Non e' stato inserito alcun numero pari\n"); system("PAUSE"); } if (Z!=0) { printf ("Il minimo dei numeri negativi dispari e'=%d\n'", min); system("PAUSE"); } else (Z=0); { printf("Non e' stato inserito alcun numero dispari\n"); system("PAUSE"); } } void main() { int V[MAX], i; input_vett (V,&i); ricerca_max_min_posizione (V,i); } Ultima modifica di cicciopantera : 19-02-2015 alle 17:30. Motivo: Correzione per l'indentatura |
|
|
|
|
|
#14 |
|
Member
Iscritto dal: Feb 2015
Messaggi: 50
|
Come si usa la tag?
Ultima modifica di cicciopantera : 19-02-2015 alle 17:29. |
|
|
|
|
|
#15 | |
|
Senior Member
Iscritto dal: Sep 2005
Città: Torino
Messaggi: 606
|
Quote:
Codice:
if (V[x]>max) V[x]=max; "se l'elemento x è più grande di max, l'elemento x diventa uguale a max." Ps: i tags code si usano così: Codice:
(code) il tuo codice (/code)
__________________
"Se proprio dovete piratare un prodotto, preferiamo che sia il nostro piuttosto che quello di qualcun altro." [Jeff Raikes] "Pirating software? Choose Microsoft!" |
|
|
|
|
|
|
#16 |
|
Member
Iscritto dal: Feb 2015
Messaggi: 50
|
Codice:
#include "stdio.h"
#define MAX 100
void input_vett(int V[], int* i)
{
int t,m;
for(m=0;m<MAX;m++)
{
printf("Inserire elementi del vettore\n V[%d]=",m);
scanf("%d",&t);
if(t!=0) V[m]=t;
else break;
}
*i=m;
}
void ricerca_max_min_posizione (int V[], int i)
{
int x, min=V[0], max=V[0], N=0, Z=0, posmin=0, posmax=0;
for(x=0;x<i;x++)
if(V[x]%2==0&&V[x]>0)
{
if (V[x]>max)
{
max=V[x];
posmax=x;
N++;
}
else
{
max=max;
N++;
}
}
else if (V[x]%2!=0&&V[x]<0)
{
if (V[x]<min)
{
min=V[x];
posmin=x;
Z++;
}
else
{
min=min;
Z++;
}
}
if (N!=0&&Z!=0)
{
printf("Il massimo dei numeri positivi pari e'= %d\nLa sua posizione e'=%d\n",max,posmax);
printf("Il minimo dei numeri negativi dispari e'= %d\nLa sua posizione e'=%d\n",min,posmin);
system("PAUSE");
}
else
{
printf("Non e' stato inserito alcun numero pari o alcun numero dispari\n");
system("PAUSE");
}
}
void main()
{
int V[MAX], i;
input_vett (V,&i);
ricerca_max_min_posizione (V,i);
}
|
|
|
|
|
|
#17 |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2787
|
Togli N e Z, togli anche max=max e min=min e inizializza posmax e posmin a -1. Alla fine puoi vedere se hai trovato min o max controllando i valori di posmin e posmax.
Inoltre min e max sono slegati tra loro, non devi necessariamente trovarli entrambi (mi riferisco all'if (N!=0&&Z!=0)) |
|
|
|
|
|
#18 |
|
Member
Iscritto dal: Feb 2015
Messaggi: 50
|
Ok domani in mattinata riprovo
|
|
|
|
|
|
#19 |
|
Member
Iscritto dal: Feb 2015
Messaggi: 50
|
Ok ci sono, va bene anche così (dai me la sono cavata abbastanza bene, no?).
Codice:
#include "stdio.h"
#define MAX 100
void input_vett(int V[], int* i)
{
int m, t=0;
for(m=0;m<MAX;m++)
{
printf("Inserire elementi del vettore\n V[%d]=",m);
scanf("%d",&t);
if(t!=0) V[m]=t;
else break;
}
*i=m;
}
void ricerca_max_min_posizione (int V[], int i)
{
int x, min=V[0], max=V[0], posmin=-1, posmax=-1;
for(x=0;x<i;x++)
{
if(V[x]%2==0&&V[x]>0)
{
if (V[x]>max)
{
max=V[x];
posmax=x;
}
}
else if (V[x]%2!=0&&V[x]<0)
{
if (V[x]<min)
{
min=V[x];
posmin=x;
}
}
}
if (posmax!=-1)
{
printf("Il massimo dei numeri positivi pari e'= %d\nLa sua posizione e'= %d\n",max,posmax);
}
else
{
printf("Non e' stato inserito alcun numero pari o positivo\n");
}
if(posmin!=-1)
{
printf("Il minimo dei numeri negativi dispari e'= %d\nLa sua posizione e'= %d\n",min,posmin);
system("PAUSE");
}
else
{
printf("Non e' stato inserito alcun numero dispari o negativo\n");
system("PAUSE");
}
}
void main()
{
int V[MAX], i;
input_vett (V,&i);
ricerca_max_min_posizione (V,i);
}
Ultima modifica di cicciopantera : 20-02-2015 alle 10:44. |
|
|
|
|
|
#20 |
|
Senior Member
Iscritto dal: Sep 2005
Città: Torino
Messaggi: 606
|
Per fare una ricerca non è necessario fare un sort.
Nel tuo caso poi, non serve nemmeno fare una ricerca "a posteriori", se bene interpreto il testo dell'esercizio. Codice:
#include <stdio.h>
#define MAX 100
int main(int argc, char *argv[]) {
int input;
int i;
int max = 0;
int min = 0;
int pos_max = -1;
int pos_min = -1;
int vett[MAX];
for (i = 0; i < MAX; i++) {
printf("inserire numero: ");
scanf("%d", &input);
if (input == 0) {
break;
}
else if (input > 0 && (input % 2) == 0 && input > max) {
max = input; pos_max = i;
}
else if (input < 0 && (input % 2) != 0 && input < min) {
min = input; pos_min = i;
}
vett[i] = input;
}
printf("massimo numero pari positivo %d, in posizione %d\n", max, pos_max);
printf("minimo numero dispari negativo %d, in posizione %d\n", min, pos_min);
return 0;
}
__________________
"Se proprio dovete piratare un prodotto, preferiamo che sia il nostro piuttosto che quello di qualcun altro." [Jeff Raikes] "Pirating software? Choose Microsoft!" |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 06:13.




















