[c++] argumenty funkcji - co przekazac?

#include 

#include 

#include "bib.h"


using namespace std;


int main(int argc, char *argv[])

{ int a;

    cout<<"ile elementow ma zawierac tablica ?";

    cin>>a;

    tab(a);

    wypisz(tab,a);

    cout<<"podales"<
    system("PAUSE");

    return EXIT_SUCCESS;

}

[/code]

[code]#ifndef __bib_h #define __bib_h void tab(int a); void wypisz(int tab, int a); #endif

#include 

#include "bib.h"

using namespace std;

void tab(int a){

     int* tabdyna;

     tabdyna=new int [a];

     for(int i=0;i
             cin>>tabdyna[i];

                             if((tabdyna[i]>25)||(tabdyna[i]<1)){

                                                            cout<<"zly zakres danych";

                                                            i--;

                             }

    }

}

void wypisz(int tab, int a)

{

  for(int i=0; i
  cout<

}

[/code]

zbliza sie kolowkium chcialem troche przecwiczyc slabe pkt tj funkcje i wskazniki

utknalem na funkcji ktora ma wyswietlic tablice wiec musze (tak na moje ?) przekazac do funkcji liczby z funkcji tab oraz rozmiar tablicy

przypuszczam ze blad moze znajdowac sie :

a) plik naglowkowy - wczesniej uzylem void tab(int a) a nastepnie chce odwolac sie do funkcji int tab ?(czy mozna zapisac funkcje tak ?

np:void wypisz(void tab(int a),a)?

b)w funkcji glownej main musialbym uzyc wskaznika na tablice albo brakuje znaku & ?

docelowo program na przeprowadzic sortowanie babelkowe na tablicy n elementowej(prosze nie podawac mi tu gotowych programow, sam musze to umiec zrobic)

z gory dziekuje za pomoc

instrukcje:

int* tabdyna;

tabdyna=new int [a];

przerzuć do main.

do funkcji tab oraz wypisz

przekazujesz

(int *tb,int a)

wywołanie:

tab(tabdyna,a);

wypisz(tabdyna,a);

zastanów się nad typem zmiennej a, int sugeruje że może być ujemna, użyj unsigned.

dziekuje bardzo za pomoc

teraz wciaz w temacie wskaznikow…

z tego co wyczytalem z error loga, nie moge przeprowadzac operacji porownania kiedy uzywam wskaznikow, wiec jak obejsc przy sortowaniu babelkowym taki o to problem ?

if (tab>tab[i+1])

void sort(int *tabdyna, int a)

{

  int temp;

  for(int j=a-1; j>0; j--)

    for (int i=0; i
    if (tab[i]>tab[i+1])

     temp=tab[i]; tab[i]=tab[i+1]; tab[i+1]=temp;

}

Możesz. Jeszcze klamry po IF-ie, nazwa tablicy, będzie działać.

void sort(int *tab, int a)

{

	for(int j=a-1; j>0; j--)

		for (int i=0; i
			if (tab[i]>tab[i+1]) swap(tab[i], tab[i+1]);

}

tak racja :slight_smile:

kolejne pytanie:

chcialbym zrobic prowizoryczny wykres ze znaku ‘0’ ktory zobrazuje jak przechodzily zmiany w sortowaniu tzn podajac liczby [5,2,6,3]

wyswietli mi odpowienio 5zer 2zera 6zer 3zera nastepnie 2zera 5zer 6zer 3zera potem 2zera 5zer 3zera 6zer -> 2zera 3zera 5zera 6zer

zrobilem osobna funkcje wyswietlajaca :

void wyswietl(int*sort, int a){

     for(int i=0; i
             for(int j=0; j
                  cout<<"*";

                  }

     cout<
     }

}


[/code]

jest male ale… chcialbym aby wyswietlalo krok po kroku jak przedstawilem wyzej a nie odrazu wynik koncowy, rozumiem ze powinienem dopisac to do funkcji sort ?

kolejne pytanie jak przeksztalcic funkcje aby wykres obrocil sie o 90stopni ? tzn zeby znaki byly rysowane pionowo (kolumnami) a nie poziomo ( wersami)

Wypisywanie wizualizacji po każdej iteracji w sorcie wydaje się chyba najrozsądniejsze.

Natomiast kolumnami nie da się za bardzo pisać bezpośrednio. Ja bym zrobił coś takiego, że najpierw wyznaczę sobie wysokość całego wykresu, a potem będę sprawdzał wiersz po wierszu wszystkie elementy tablicy - czy sięgają danego wiersza. Jeżeli tak, to wypisuję asterisk, jak nie spacja. Czyli coś takiego:

void wyswietl(int *sort, int a)

{

	int height = sort[0];

	for(int i=1; i height) height = sort[i];


	for(int i=0; i
	{

		for(int k=0; k
		{

			cout << (sort[k] < height-i ? " " : "*");

		}

		cout << endl;

	}

	cout << endl;

}[/code]

cout << (sort[k] < height-i ? " " : “*”);

moglbym prosic o komentarz do tego ?

nie spotkalem sie wczesniej z takim zapisem ( znak zapytania ) oraz takiego wybor (" " :"*")

Edit: dobra wybaczcie , mam google :slight_smile: to wszystko