Kezdőoldal » Számítástechnika » Programozás » Hogyan írnátok ilyen algoritmust?

Hogyan írnátok ilyen algoritmust?

Figyelt kérdés

Írjon algoritmust, mely beolvas maximum 20db nullától különböző egész számot. A beolvasás végét a bevitt "0" számjegy, vagy a 20. bevitt érték jelenti.

Írassa ki a második legnagyobb beolvasott szám értékét !



2012. nov. 29. 00:26
1 2
 1/18 A kérdező kommentje:

Én valami ilyesmire gondoltam (eleje valószínűleg hibás, talán a vége is):


BE(20): X

Ha X(i) == 0 AKKOR vége


Ciklus maximumkiválasztás

MAX:=X(1)

Ciklus X:=2-től N-ig

Ha X(i) > X(MAX), akkor MAX:=i

Ciklus vége

KI: MAX



Ebben megtudnátok mondani mi a hibám, vagy hogyan kéne megoldani ?

2012. nov. 29. 00:28
 2/18 anonim ***** válasza:

i := 1

ciklus amíg i <= 20 és x[i] <> 0

___be: x[i]

___i := i + 1

cvége


ciklus j := 1..(i-1)

___ciklus k := 2..i

______ha x[j] < x[k] akkor csere(x, j, k)

___cvége

cvége


ha i > 1 akkor

___ki: x[2]

különben

___ki: x[1]

hvége



_: ezek a kiemelés miatt kellenek, mert itt nem lehet ám akármennyi szóközt írni sajnos

2012. nov. 29. 00:42
Hasznos számodra ez a válasz?
 3/18 anonim ***** válasza:

javítanék a válaszomon:

i := 0

ciklus

___i := i + 1

___be: x[i]

amíg i <= 20 és x[i] <> 0

2012. nov. 29. 00:46
Hasznos számodra ez a válasz?
 4/18 anonim válasza:

Itt egy Java-s megoldás, annyi különbséggel, hogy tömböket használ, és a tömböket 1-től 20-ig véletlenszámokkal tölti fel.



import extra.*;

public class Db_20

{

public static void main(String[] args)

{

final int Max=20;

int ir[]=new int[Max];

for(int i=0; i<Max; i++)

{

ir[i]=(int)(Math.random()*20);

System.out.print(ir[i]+"\n"); //tomb feltoltese szamokkal

}

int max=0;

for(int j=0; j<Max; j++)

{

max=max;

if(max<ir[j])

{

max=ir[j];

}

}

System.out.print(max);

int bmax=0;

for(int f=0; f<Max; f++)

{

bmax=bmax;

if((bmax<ir[f])&&ir[f]<max) //maximum elotti szamot nezi...

{

bmax=ir[f];

}

}


System.out.print(bmax);

}

}

2012. nov. 29. 01:24
Hasznos számodra ez a válasz?
 5/18 anonim válasza:
Azt már nem írtam bele (mert tömböket alkalmaztam), de hozzátenném, hogy a beolvasás végét jelző 0 vizsgálatát egy while ciklus végzi, tehát ha 0 kerül a változóba akkor befejeződik a sorozat, és a program megcsinálja a kalkulációt.
2012. nov. 29. 01:26
Hasznos számodra ez a válasz?
 6/18 anonim ***** válasza:

Itt van c++ ban:

//main.cpp

#include<iostream>

#include<algorithm>

#include<time.h>

using std::cout;

using std::endl;

using std::sort;

typedef unsigned short ushort;


int main(void){

srand(time(0));

const ushort maxNumber = 20;

ushort randomArray[maxNumber];


cout << "A szamok: ";

for(ushort i = 0; maxNumber > i; ++i){

randomArray[i] = rand() % 100 + 1;

cout << randomArray[i] << " ";

}


sort(randomArray, randomArray + maxNumber);

cout << "\nA masodik legnagyobb szam a: " << randomArray[18];



return 0;

}

2012. nov. 29. 02:42
Hasznos számodra ez a válasz?
 7/18 zsomkovacs ***** válasza:
#2: ha minden igaz, akkor ha &nbsp; -t írsz, azt megjeleníti szóközként, és többet is beírhatsz belőle. (_ helyett)
2012. nov. 29. 06:27
Hasznos számodra ez a válasz?
 8/18 A kérdező kommentje:
Köszönöm a válaszokat !
2012. nov. 29. 12:31
 9/18 anonim ***** válasza:
Miért kell eltárolni a számokat? Ennyi számnál persze nem nagy előny, de elvi kérdés hogy ha nem muszáj akkor ne tároljunk fölösleges adatokat.
2012. nov. 29. 14:07
Hasznos számodra ez a válasz?
 10/18 anonim ***** válasza:
Azért, mert nem a legnagyobb, hanem a MÁSODIK legnagyobb számot kell kiírni.
2012. nov. 29. 14:14
Hasznos számodra ez a válasz?
1 2

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!