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

Problem z funkcja i tablicami

Ostatnio zmodyfikowano 2009-08-01 15:53
Autor Wiadomość
mefisto
Temat założony przez niniejszego użytkownika
Problem z funkcja i tablicami
» 2009-08-01 14:28:14
Witam wszystkich :) Niedawno zabralem sie za nauke C++ - ucze sie z ksiazki S.Prata "Szkoła Programowania" i w rozdziale 7 tej ze ksiazki napotkalem sie na zadanie ktorego mi nie dziala tak jak powinno. W czym rzecz ? Otóż zadanie polega na tym aby napisac 3 funkcje.

1) Funkcje wprowadzajaca dane do tablicy o rozmiarze maximum 10 liczb ale musi byc tez możliwosc wczesniejszego zakonczenia wprowadzania danych np: Podajemy rozmiar tablicy 10, wpisujemy 1,2,3,X
- przy wartosci X wprowadzanie jest przerywane.To chyba udalo mie zrobic :)

2)Napisac funkcje wyswietlajaca dane. I tu mam problem poniewaz funkcja "wypisz" która zamiesciłem poniżej nie działa - wprowadzajac rozmiar tablicy 10 a nastepnie wartosc np:1,2,3,4,x - funkcja nie wyswietla poprawnych danych tj:1,2,3,4 , ba - nie wyswietla nic ;/

Rozmiar tab :
4
5
podaj nastepna wartosc :1
podaj nastepna wartosc :q
wprowadzono :



3) Napisac funkcje licząca srednia podanych liczb.

O to co mam w chwili obecnej. Dodam tylko ze piszac funkcje wypisz wzorowalem sie zadaniem w którym była mowa o wskaźnikach na funkcje. Analogicznie chcialem postapić u siebie ale niestety poległem :P

Prosze wiec o Was o pomoc - co należy zrobic (poprawić) aby funkcja "Wypisz" działała ?

O to caly mój kod :

C/C++
#include <iostream>
using namespace std;
int wypelnij( int tab[], int r )
{
    int i = 0;
    while( i < r && cin >> tab[ i ] )
    {
        if( ++i < r )
        {
            cout << "podaj nastepna wartosc :";
        }
    }
    cin.clear();
    return i;
}

int wypisz( int tab[], int s, int( * p )( int *, int ) )
{
    cout << "wprowadzono : " << endl;
    int rozmiar = p( tab, s );
    for( int i = 0; i < rozmiar; i++ )
    {
        cout << tab[ i ] << endl;
    }
}

int main( int argc, char ** argv )
{
    int s;
    cout << "Rozmiar tab :\n";
    cin >> s;
    int tab[ s ];
    wypelnij( tab, s );
    wypisz( tab, s, wypelnij );
   
    return 0;
}

 
P-8937
DejaVu
» 2009-08-01 15:01:46
C/C++
#include <iostream>
using namespace std;
int wypelnij( int tab[], int r )
{
    int i = 0;
    cout << "podaj npierwsza wartosc :";
    while( i < r && cin >> tab[ i ] )
    {
        if( ++i < r )
        {
            cout << "podaj nastepna wartosc :";
        }
    }
    cin.clear();
    return i;
}

int wypisz( int tab[], int s, int( * p )( int *, int ) )
{
    int rozmiar = p( tab, s );
    cout << "wprowadzono : " << endl;
    for( int i = 0; i < rozmiar; i++ )
    {
        cout << tab[ i ] << endl;
    }
}

int main( int argc, char ** argv )
{
    int s;
    cout << "Rozmiar tab :\n";
    cin >> s;
    int tab[ s ];
    wypisz( tab, s, wypelnij );
   
    return 0;
}
Nie wiem skąd się nauczyłeś wskaźników na funkcje - zważywszy na fakt, że to książka i doszedłeś do 7 rozdziału...
P-8938
mefisto
Temat założony przez niniejszego użytkownika
» 2009-08-01 15:53:00
@Piotr Szawdyński
Dziekuje Ci za odpowiedź i pomoc w programie ! O wskaźnikach na funkcje w "Szkoła programowania"  jest poświęcony jeden przykład  w rozdziale 7 - strona 350 , listing 7.17.fun_ptr.cpp.

Ps. Dzieki za edycje postu - nie wiedzialem jak wkleic wiec uzylem code :)

Pozdrawiam i jeszcze raz dziękuje.
P-8939
« 1 »
  Strona 1 z 1