Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[Rozdział 22] Zadanie domowe

Ostatnio zmodyfikowano 2015-03-11 02:19
Autor Wiadomość
Gage
Temat założony przez niniejszego użytkownika
[Rozdział 22] Zadanie domowe
» 2015-03-08 23:34:17
Witam wszystkich! :)
Zwracam się z, z tego co widzę, dość nietypowym tematem, bowiem nie szukam rozwiązania zadania, a odpowiedzi na krótkie pytanie (jeśli będzie twierdząca - porady). Mowa o zadaniu ostatnim z rozdziału 22, mianowicie:
Napisz program który wykona wszystkie poniższe kroki w podanej kolejności:
Losuje 10 liczb z przedziału od 10 do 30 włącznie i zapisuje je do tablicy;
Wypisuje 10 wylosowanych liczb od początku do końca;
Wypisuje 10 wylosowanych liczb od końca do początku;
Znajduje najmniejszą oraz największą wylosowaną liczbę.
Wypisuje najmniejszą i największą wylosowaną liczbę.
Program nie może używać pętli innych niż pętla for.

Chwilkę posiedziałem, pomyślałem i doszedłem do tego, jak zrobić to zadanie. Mój kod wygląda następująco:
C/C++
#include <iostream>
#include <cstdlib>
#include <ctime>

using namespace std;


void losowanie( int t[], int ile )
{
    srand( time( NULL ) );
    for( int i = 0; i < ile; i++ )
         t[ i ] =( rand() % 21 ) + 10;
   
}


void wypisanie1( int t[], int ile )
{
    for( int i = 0; i < ile; i++ )
         cout << t[ i ] << ", ";
   
    cout << endl;
}


void wypisanie2( int t[], int ile )
{
    for( int i = 9; i >= ile; i-- )
         cout << t[ i ] << ", ";
   
    cout << endl;
}



int najmniejsza( int t[], int ile )
{
    for( int o = 0; o < 20; o++ )
    {
        for( int i = 0; i < ile; i++ )
        {
            if( t[ i ] == 10 + o )
                 return t[ i ];
           
        }
    }
}


int najwieksza( int t[], int ile )
{
    for( int o = 0; o < 20; o++ )
    {
        for( int i = 0; i < ile; i++ )
        {
            if( t[ i ] == 30 - o )
                 return t[ i ];
           
        }
    }
}



void wypisz( int najmniejsza, int najwieksza )
{
    cout << najmniejsza << endl;
    cout << najwieksza << endl;
}



int main()
{
    int tablica[ 10 ];
    losowanie( tablica, 10 );
    wypisanie1( tablica, 10 );
    wypisanie2( tablica, 0 );
    int a = najmniejsza( tablica, 10 );
    int b = najwieksza( tablica, 10 );
    wypisz( a, b );
    system( "pause" );
    return 0;
}



Mimo to, nie wiedzieć dlaczego, mam wrażenie, że przy znajdowaniu wartości minimalnej i maksymalnej chodziło o coś zdecydowanie innego. Niedawno dowiedziałem się o istnieniu pomocniczych funkcji min i max, jednak nie wiem, jak je używać.
Pytanie jest następujące: czy zrobiłem to zadanie w najprostszy możliwy sposób, czy też istnieje jakiś łatwiejszy? Zdaję sobie sprawę, że wygląda to na pytanie bezsensowne (przecież, w gruncie rzeczy, udało mi się wykonać zadanie), jednak postanowiłem, że będę upraszczał swój kod już od podstaw nauki programowania i stąd to pytanie.
Dziękuję za odpowiedzi i pozdrawiam wszystkich! :)
P-127993
Esteban
Da się
» 2015-03-09 00:50:33
C/C++
int najwieksza( int t[], int ile )
{
    int najwiekszaLiczba;
    for( int i = 0; i < ile; i++ )
         if( t[ i ] > najwiekszaLiczba ) najwiekszaLiczba = t[ i ];
   
    return najwiekszaLiczba;
}
W funkcji ,,najmniejsza" analogicznie.

Możesz jeszcze w funkcji ,,wypisanie2" zrobić tak, żebyś nie używał cyfry 9

Oraz możesz spełnić wymagania zadania domowego bez użycia zmiennych ,,a" ,,b" ,,najwiekszaLiczba" ,,namniejszaLiczba"
To właśnie zadanie specjalne dla Ciebie
P-127997
aksen
» 2015-03-09 01:15:05
do #Esteban

Źle.

"najwiekszaLiczba" ma przypadkową wartość (a jak będzie większa od wszystkich liczb w tablicy?)
Porównywanie z przypadkową liczbą nie ma sensu. Taka funkcja często da w wyniku bzdury.

funkcja powinna wyglądać tak:
C/C++
int najwieksza( int t[], int ile )
{
    int najwiekszaLiczba = t[ 0 ];
   
    for( int i = 1; i < ile; i++ )
         if( t[ i ] > najwiekszaLiczba ) najwiekszaLiczba = t[ i ];
   
    return najwiekszaLiczba;
}
P-127998
kynol
» 2015-03-11 02:19:46
Najlepiej funkcje typu max, min, strcpy, strcat i tego typu blachostki najlepiej pisac samemu, zawsze ci wyjdzie to na dobre :) korzystajac z gotowcow za wiele sie nie nauczysz, takie jest moje zdanie. Czas na uzywanie takich latwych, gotowych funkcji powinien przyjsc w pozniejszym wieku, kiedy to czlowiek staje sie leniwy.. :)))
P-128136
« 1 »
  Strona 1 z 1