Per l'istruzione del ciclo. Compiti tipici


Attività
Trova la somma di tutti i numeri interi compresi tra 100 e 500. 

Scriviamo un programma che risolva questo problema senza usare una formula. Se scriviamo solo il risultato dell'addizione alla variabile s, per esempio, come
\(s=100+101+102+103+...+500\),

dedicheremo molto tempo alla registrazione stessa, perché il computer non capirà come usare i puntini di sospensione in un'espressione aritmetica e dovremo scrivere tutti i numeri da 100 a 500. E il valore di un tale programma sarà trascurabile. Soprattutto se vogliamo cambiare i nostri numeri e prendere una gamma diversa.

Cosa dobbiamo fare?
Se prestiamo attenzione alla voce sopra, allora usiamo costantemente l'addizione "+".
Puoi provare ad aggiungere gradualmente i numeri alla variabile s. Ad esempio, utilizzando questa notazione
s = s + i.
Cosa abbiamo fatto:
1) a destra mettiamo l'espressione s + i, , cioè prendiamo il valore della variabile s e aggiungiamo il valore della variabilead esso i;
2) a sinistra impostiamo il nome della variabile s, ovvero l'intero risultato del calcolo a destra verrà memorizzato nella stessa variabile s, quindi cambieremo il valore della variabile s
Resta solo da modificare il valore della variabile i nell'intervallo desiderato. Questo può essere fatto con un ciclo for.
 
I numeri da 100 a 500 che sono nel nostro intervallo dovrebbero essere inseriti a turno nella variabile i
Esempio
// IMPORTANTE! Per prima cosa devi resettare la variabile s, // in modo che al primo passaggio il numero 100 venga aggiunto a zero, // e non a ciò che è in memoria! s=0; for ( i = 100; i <= 500; i++) // intestazione del ciclo in cui la variabile i s = s + io; // cambia il suo valore da 100 a 500 con incrementi di 1, // nel corpo del ciclo gradualmente fino alla variabile s,   // somma il valore della variabile variabile i, // e il risultato viene memorizzato nella variabile s Questa soluzione è molto simile al calcolo della somma sulle azioni:
\(s = 0 + 100 = 100, \\ s = 100 + 101 = 201, \\ s = 201 + 102 = 303 \\ ... \)

Numero massimo tra i numeri dati

Durante lo studio dell'operatore condizionale, abbiamo toccato l'argomento della ricerca del numero massimo da diversi numeri inseriti. Nel problema "Massimo di quattro numeri" abbiamo utilizzato il seguente algoritmo:
1. assegnare il valore alla variabile M alla prima delle quattro variabili;
2. se il valore della seconda variabile è maggiore del valore della variabile M, allora sostituisci il valore della variabile con il valore della seconda variabile;
3. se il valore della terza variabile è maggiore del valore della variabile M, allora sostituisci il valore della variabile M con il valore della terza variabile;< br /> 4. se il valore della quarta variabile è maggiore del valore nella variabile M, sostituire il valore della variabile con il valore della quarta variabile.

Si può vedere che ogni  il numero (denotiamolo con X) lo abbiamo confrontato con la variabile M, come segue:
 
pseudocodice
ingresso X
se (M < X) allora
  M = X

La cosa principale in questo codice è determinare quale valore iniziale avrà la variabile M.
Di solito, quando si risolve un problema per trovare un massimo o un minimo, il valore iniziale della variabile M viene assegnato uguale al primo numero.
Pertanto, il codice di cui sopra deve essere eseguito 1 volte meno del numero di numeri (poiché il primo numero deve essere inserito e memorizzato come valore iniziale della variabile M).
Se abbiamo il numero di numeri impostati da tastiera (ad esempio, nella variabile n), allora possiamo organizzare un ciclo (da 2 a n), utilizzando il stesso numero per memorizzare la variabile numero.

Prova a scrivere tu stesso il programma.

Massimo non tra tutti

Se dobbiamo trovare il massimo (minimo) non tra tutti i numeri inseriti, ma solo tra i numeri che soddisfano una certa condizione, allora dobbiamo tenere conto del fatto che il primo numero che prendiamo come valore iniziale del massimo (minimo) non sempre soddisfa i nostri requisiti.

Ad esempio, se stiamo cercando il numero massimo negativo, avendo il set di dati: \(\{5, -2, 4, 2, -1, -3\}\ ) otterremo il numero 5 nel valore iniziale del massimo, ed è positivo e maggiore di qualsiasi negativo. E quindi la condizione X > M sarà sempre false.

Pertanto, non è sufficiente aggiungere un solo controllo per un numero negativo all'algoritmo del problema precedente, è anche necessario tenere conto del fatto che il primo numero potrebbe non soddisfare la condizione richiesta (in questo caso essere negativo ).

Puoi risolvere questo problema aggiungendo la seguente condizione all'interno del ciclo:

pseudocodice
se X è negativo, allora
  se M >= 0 o M < X, allora
    M=X

Nel codice specificato, la condizione  M >= 0 consente di eseguire l'azione  M = X anche se la condizione la variabile contiene inizialmente un valore che è ovviamente maggiore del resto (nel nostro esempio, il valore è uguale a 5).

Notiamo anche che se l'intervallo di numeri è noto, il numero minimo (massimo) dall'intervallo specificato può essere preso come valore iniziale del massimo (minimo).

Compito

Sono dati N numeri. Trova il secondo elemento più grande in una sequenza.

Questo problema consente due interpretazioni.
Ad esempio, se ci viene fornito un insieme di numeri: \(10\ 15\ 20\ 35\ 14\ 35\ 10\), quale dovrebbe essere la risposta ?
Sotto il "secondo elemento più grande" o semplicemente "secondo massimo", può essere inteso come:
1) il valore che sarebbe al penultimo posto se disponessimo (ordinando) tutti i valori in ordine non decrescente (ciascuno successivo è maggiore o uguale al precedente). Quindi per l'insieme di numeri considerato la risposta sarà il valore 35;
2) il valore dell'elemento, che è maggiore solo del massimo. Allora la risposta è 20.
Se c'è un solo elemento massimo nell'insieme dei numeri (tutti gli altri sono inferiori), entrambe le interpretazioni sono le stesse e la risposta sarà la stessa per entrambi i casi, altrimenti la risposta sarà diversa.

Considera il primo caso (scriveremo l'algoritmo su pseudocodice).
Per trovare la risposta, utilizzeremo due variabili:
1) maximum1 - valore massimo (primo massimo);
2) maximum2 - secondo massimo (la nostra risposta).

Se il range di valori cambia è noto, allora come valori iniziali prendiamo un numero che è ovviamente minore del limite inferiore del range (ad esempio, con un range da -1000 Da a 1000 - prendi il numero -1001)
Se l'intervallo di valori è sconosciuto, puoi scrivere i primi due numeri di input nei valori iniziali delle variabili max1 e max2, quindi confrontarli due variabili.
input N //numero di numeri
ingresso a, b
massimo1 = a
massimo2 = b
se b > un, quindi
    massimo1 = b
    massimo2 = a

Successivamente, consideriamo tutti gli altri elementi (i primi 2 sono già stati visualizzati, quindi inizieremo dal 3°)
nc per i da 3 a n
    ingresso A
    se un > massimo1 //c'era un valore maggiore di massimo1
      Quello
        max2 = max1 //ex primo massimo diventa secondo
        max1 = a //il nuovo elemento sarà il primo massimo
      Altrimenti
        //elemento successivo non più di max1
        // deve essere confrontato con il valore massimo2
        se un > massimo 2
          Quello
            max2 = a //prenderlo come nuovo valore max2
                           // max1 non cambia in questo caso
        Tutto
    Tutto
kts

Prova a implementare questo algoritmo da solo.