Diagrammi di flusso..da dove cominciare? ._.





Mi sono ribloccato..l'esercizio è uguale a quello appena qui sopra, esattamente lo stesso, soltanto che al posto di trovare i numeri inferiori di 120 mi chiede di trovare la posizione in cui risiede il numero più grande del vettore..

Tralasciando i primi due punti, arrivato al terzo punto in questione avrei in mente di fare una cosa del genere:

creare una variabile "INDICE = 0"
creare una variabile "Max = v[0]"
creare un for (i=0;i< lunghezzaVettore;i++)

In questo modo imposto il massimo uguale alla prima cella del vettore, gli faccio scorrere tutte le posizioni e quando arriva al numero più grande, una volta verificato che sia effettivamente il più grande tramite un if (vet[i] > Max), gli faccio scrivere "Max = v[i]" e "INDICE = i" Finito il ciclo gli faccio stampare una cosa come "Il numero più grande risiede nella posizione" + " " + i.

Che ne dici?
si per trovare il massimo o il minimo di un vettore si risolve sempre così:

1) primo elemento del vettore è il massimo (minimo)
2) cicli sugli elementi del vettore, se l'elemento è più grande (piccolo) del corrente massimo (minimo), quello è il nuovo massimo (minimo)
3) alla fine del ciclo hai il massimo (minimo)
Perfetto. Ma se l'esercizio mi chiede (e cavolo se lo chiede :mexe di trovare i 2 numeri massimi dentro un vettore? come posso trovare il secondo massimo una volta che ho trovato il primo? come punto di partenza è chiaro che il secondo massimo sarà inferiore al primo..potrei cominciare col dichiararlo: MAX2 <= MAX1 .. in questo modo chiarisco che il secondo massimo può essere o uguale o inferiore al primo massimo ma non superiore..e poi?
public class Massimo {

/**
* @param args
*/
public static void main(String[] args) {
int numeri[] = new int[100];

int max1 = 0;
boolean m1 = false;
int max2 = 0;
boolean m2 = false;

for (int i=0; i < numeri.length; i++){
if(!m1){
max1 = numeri[i];
m1 = true;
} else {
if(numeri[i] > max1){
max1 = numeri[i];
}
}
}

for (int i=0; i < numeri.length; i++){
if(!m2){
if(max1 != numeri[i])
max2 = numeri[i];
m1 = true;
} else {
if(numeri[i] > max2 && numeri[i] < max1){
max2 = numeri[i];
}
}
}

}

}


qualcosa del genere! L'ho fatto di corsa e non l'ho testato, ma dovrebbe essere corretto.
Prima trovi un massimo, per il secondo massimo ti assicuri sempre che sia minore del massimo trovato quando fai il confronto.
I boolean m1 e m2 servono a vedere se il massimo corrispondente contiene un valore 'utile'.
Che casino.

adesso prima di tutto vedo se riesco a tradurlo in diagrammi. Grazie.

ecco, appunto.. cosa significa il punto esclamativo? if(!m1)
significa NOT

if (m1) {
// eseguo qui quando m1 è TRUE
}
if (!m1) {
// eseguo qui quando m1 è FALSE (not true)
}
Sono nel pallone.

devo creare un diagramma di flusso per stampare questa roba qui:

AABB-AABB=AABB-AABB=AABB-AABB
AABB-AABB=AABB-AABB=AABB
AABB-AABB=AABB-AABB
AABB-AABB=AABB
AABB-AABB


Riesco a stampare AABB ma poi mi fermo..sono sull'orlo di una crisi.
Il sudore dalla fronte.

può andare bene?



dichiarando all'inizio int r=5 e boolean c=false
public class Lettere {

public static void main(String[] args) {

for (int i=6 ; i >= 2; i--){
for(int j=1 ; j<=i; j++){
if (j==i){
System.out.println("AABB");
} else {
if(j%2==0){
System.out.print("AABB=");
} else {
System.out.print("AABB-");
}
}
}
}

}

}


Io risolverei così, come al solito il ciclo esterno conta il numero di AABB alla riga corrente, e il ciclo interno lavora per stampare la riga corrente. Ti conviene impararti bene questi doppi cicli visto che sembrano essere una domanda molto ricorrente
Grazie..sempre gentilissimo.

Ultimi dubbi..ormai mancano 48 ore..

parliamo di massimo o minimo dentro un vettore..in pratica ho un vettore [] e voglio trovare il MINIMO dentro di esso...quando dichiaro la variabile MIN, prima di iniziare il ciclo for, la devo porre uguale a zero e quindi MIN=0 oppure devo scrivere MIN=V[0]?
iron mi stai mettendo angoscia, mettici meno patema e vedili come un rompicato, tipo un rebus

cosi' ti guasti tutto il divertimento


Io userei come minimo inziale il valore del primo elemento. Anche perchè se lo poni uguale a zero e il minimo è maggiore di zero non risci a trovarlo con l'arlgoritmo che ti ho proposto
Ciao a tutti sono nuova del forum.. Ho provato a fare degli esercizi simili a quelli postati seguendo i vostri consigli, ma a volte non capisco come si arrivi alla soluzione. Vi metto l'esercizio in questione sperando che qualcuno possa aiutarmi Non riesco a capire xkè tra un numero e l'altro si ripete sempre il 2.. Aspetto qualche dritta grazie

Cosa stampa in uscita il seguente programma se in ingresso vengono inseriti i numeri 2 e 3 ?

import java.util.*;
public class Prova{
public static void main(String[] args) {
int[] vet = new int[12] ;
int a,b,i;
System.out.println("Inserire due numeri interi: ");
Scanner sc = new Scanner(System.in);
a=sc.nextInt();
b=sc.nextInt();

for (i=0;i<10;i=i+2) {
System.out.print("K");
vet[i]=a;
vet[i+1]=b+i;
}
for (i=4;i<10;i++) {
System.out.println(vet[i]);
}
}
}

SOLUZIONE:
KKKKK2
7
2
9
2
11
1. Evita di scrivere in nero cristiddio, è illeggibile; se hai fatto copia&incolla abbi almeno la pazienza, visto che sei qui a chiedere una mano, di perderci un secondo a togliere la formattazione la prossima volta per favore metti anche il codice tra i tag , grazie.

2. Hai provato a "srotolare" i cicli a mano? cioè a seguire il programma passo passo e vedere come viene costruito vet[]?
In particolare prendi un foglio di carta e prova ad eseguire tutti i passi del ciclo:
[CODE]
for (i = 0; i < 10; i = i+2) {
System.out.print("K");
vet[i] = a;
vet[i+1] = b+i;
}


3.



edit: ps benvenuta
Grazie ok allora ti scrivo il ragionamento che ho provato a fare:

i=0 i<10 0<10 dato che 0 è minore di 10 stampo K
vet[i]=2 e invece per vet[i+1]=b+i cosa devo fare? Vet[i+1]= 3+0

i=2 i<10 2<10 dato che 2 è minore di 10 stampo K
vet[i]=2 Vet[i+1]=3+2=5

i=4 i<10 4<10 dato che 4 è minore di 10 stampo K
vet[i]=2 Vet[i+1]=3+4=7

i=6 i<10 6<10 dato che 6 è minore di 10 stampo K
vet[i]=2 Vet[i+1]=3+6=9

i=8 i<10 8<10 dato che 8 è minore di 10 stampo K
vet[i]=2 Vet[i+1]=3+8=11

E' giusto così?
Allora, ho formattato il codice perchè mi stava venendo il mal di testa

import java.util.*;
public class Prova {
public static void main(String[] args) {
int[] vet = new int[12] ;
int a,b,i;
System.out.println("Inserire due numeri interi: ");
Scanner sc = new Scanner(System.in);
a=sc.nextInt();
b=sc.nextInt();

for (i=0; i<10; i=i+2) {
System.out.print("K");
vet[i]=a;
vet[i+1]=b+i;
}
for (i=4; i<10; i++) {
System.out.println(vet[i]);
}
}
}

Poi senza sapere quanto valgono a e b è dura dire se la tua esecuzione è corretta
Suppongo che a=2 e b=3, giusto?

Se così fosse l'esecuzione è questa
a=2
b=3
i=0 (<10)
* Stampo K
* vett[0]=a=2
* vett[0+1]=b+i=3+0
* i=i+2 = 2
i=2 (<10)
* Stampo K
* vett[2] = a = 2
* vett[2+1]= b+i= 3+2 = 5
* i=i+2=2+2=4
i=4 (<10)
* Stampo K
* vett[4]= a = 2
* vett[4+1] = b+i = 3+4 = 7
* i = i+2 = 4+2 = 6
i=6 (<10)
e così via fino a i=10

Dopodichè stampi gli elementi di vett da 4 a 10

Esatto, è giusto, manca una parte però.
Come ha fatto nano qui sopra, sostituisci anche i vari vet[i] e vet[i+1] usando il valore di i volta per volta.

Nel solito foglio di carta, riscriviti una colonnina con tutti i valori di vet (vet[0] = ..., vet[1] = ....) e poi continua il ragionamento col secondo ciclo:
for (i=4;i<10;i++) {
System.out.println(vet[i]);
}


Poi prova a scrivere come mai ottieni ciò che ottieni, se sbagli non ti preoccupare che qui non sei all'esame
Ok dovrei aver capito devo stampare i valori di vet[i] a partire da vet[4] perchè mi dice i=4 e arrivo fino a vet[9] perchè i<10. Grazie dell'aiuto se ho difficolta in qualche altro esercizio vi scrivo ok?
Prego
Ciao a tutti chi mi da una mano con questo esercizio?


Cosa stampa in uscita il seguente programma se in ingresso viene inserito il numero 5 ?


import java.util.*;
public class XMain {


public static void main(String[] args) {
String[] vet ;
int max,stop,i,j;
System.out.println("Inserire un numero intero: ");
Scanner sc = new Scanner(System.in);
max=sc.nextInt();
max = max*2;
vet = new String[max];


for (i=0;i vet[i]="I";
if( i< (max/2)) stop = i;
else stop= max-i-1;
for (j=0; j vet[i]=vet[i]+"+I";
}
}
System.out.println("RISULTATO");
for (i=0;i System.out.println(vet[i]);
}
}
}



RISULTATO
I
I+I
I+I+I
I+I+I+I
I+I+I+I+I
I+I+I+I+I
I+I+I+I
I+I+I
I+I
I

Allora vi scrivo il mio ragionamento ma poi arrivo ad un punto in cui mi blocco e non so più come andare avanti..
max=10 i=0
i=0 i
j=0 j
i=1 i
j=0 j
i=2 i
j=1 j
i=3 i
j=2 j
i=4 i
j=3 j
i=5 i
j=4 j
e poi non so più come continuare.. datemi una mano x favore