GRY-Online.pl --> Archiwum Forum

Proste a nie chce działać

20.10.2008
22:35
[1]

swee [ Gunslinger ]

Proste a nie chce działać

Na jutrzejsze laborki z infy mam napisać program C++ wyszukujący największą liczbę z tablicy. Banał jakich mało bo tablica nawet nie jest dwuwymiarowa... Pisałem to już na początku tamtego semestru i wszystko hulało a teraz kicha. I co tutaj jest źle? :|


#include <stdio.h>
#include <string.h>
#include <stdlib.h>



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

int tab[3] = ‹666,888,111›;


int max(int*tab,int wymiar);

int i;
int naj;
naj = tab[0];
for(i=1;i<10;++i)

if (tab>naj)
naj=tab;

return naj;


printf("%d",max(tab,1));
system("PAUSE");
return 0;



Z resztą czego oni chcą ode mnie, ja strony robię a nie jakieś programy :)

edit. GOL pozamienial nawiasy, a to dziad ;) Wszystkie ostrzaki to te takie wąsy

Toshi to sobie patrz ‹‹‹‹‹‹‹‹‹‹‹‹‹

Z resztą nawiasy sobie poprawić umiem, no bez jaj :)


Proste a nie chce działać - swee
20.10.2008
22:37
smile
[2]

Toshi_ [ Generaďż˝ ]

Eeee... Może chodzi o to, że stosuje się klamry (‹ ›) zamiast znaków < >? ;]

EDIT: Hahahahahah, GOL automatycznie zamienia te znaki! Niezła lipa :D

20.10.2008
22:39
[3]

Moby7777 [ Generaďż˝ ]

1. Dlaczego funkcja max jest definiowana wewnatrz funkcji main?
2. tworzysz tablice trzech elementow a w wywolaniu printf przekazujesz, że ma tylko jeden...
3. Nieważne z resztą co przekazujesz bo i tak przeszukujesz 10 (for(i = 1; i<10; ++i)). W tym przypadku wychodzisz więc poza zakres tablicy i odczytujesz z pamięci kupę śmieci (jeśli w ogóle system operacyjny Ci na to pozwala).

Swoją drogą jak masz problem z takim programikiem to czarno widzę Twoją przyszłość webmastera...

20.10.2008
22:41
[4]

swee [ Gunslinger ]

Dzięki wielkie, już sobie poprawiam.

Sorry, ale do tej pory flash całkiem dobrze sobie radził bez C, oby tak zostalo.


Moby - a bo C++ jest GUPIE a AS fajny! :) Jedyne słuszne wytłumaczenie.

20.10.2008
22:43
[5]

Moby7777 [ Generaďż˝ ]

swee --> Ale błąd który popełniłeś nie zależy tak naprawdę od języka programowania a zrypanego algorytmu. Czyli we flashu też by nie przeszło... :D

20.10.2008
22:48
[6]

Toshi_ [ Generaďż˝ ]

Teeee... A mi kompilator wyrzucał błedy na temat porównywania zmiennej int ze wskaźnikiem...
Dokładniej chodzi o linie:
if (tab > naj)
naj = tab;


Chodziło ci chyba o porównywanie z każdym elementem tablicy. Od tego masz licznik pętli.
Nie powinno być tak?
if (tab<I> > naj)
naj = tab<I>;


Tylko te < > zamień na [ ], bo "[ i ]" wspaniały GOL odczytuje jako tag pochylający :P

20.10.2008
22:49
smile
[7]

swee [ Gunslinger ]

Już działa, Moby miał racje - definiowanie funkcji w mainie to przejaw ciemnej strony mocy.

edit.
Czyli Gol zmienia znaki, widzisz? Co z tego, ze z mojej winy ;)

20.10.2008
22:54
[8]

Toshi_ [ Generaďż˝ ]

No cooo, zobaczyłem kod, stwierdziłem brak klamer więc podałem diagnozę ;P

20.10.2008
23:01
smile
[9]

Chuck kNorris [ Centurion ]

Toshi_ - to trzeba było tak mu napisać :

if (*(tab+i) > naj) naj = *(tab + i);

20.10.2008
23:44
[10]

swee [ Gunslinger ]

No dobra, a teraz coś trudniejszego: podajemy temu dziadowi liczbę np. '5' i on wyrazy do piątego zamienia na 0, z tych powyżej robi jedynki. Tyle mam i przynajmniej to działa:


#include <stdio.h>
#include <string.h>
#include <stdlib.h>



int max(int*tab,int wymiar)

int i;
int naj;
naj = tab[0];


for(i=1;i<10;++i)

if (tab>naj)
naj=tab;


return naj;




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


int tab[100] = ‹6886,988,111,888,4,98,123,87,45,10›;
int pozycja;
printf("%d \n",max(tab,10));
system("PAUSE");
return 0;

21.10.2008
00:18
[11]

Chuck kNorris [ Centurion ]

masz gotowe :
#include <iostream>

using namespace std;

int max (int *table, int size)

if(size>0)

int index_max = 0;
for(int i =0; i < size; ++i) if ( *(table+i) > *(table + index_max) ) index_max = i;

return index_max;

return (-1);


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

int tab[100] = ‹6886,988,111,888,4,98,123,87,45,10›;
int i_max = max(tab, 5);
if ( i_max >= 0 ) cout<<"maximum: " << tab[i_max];
else cout << "BLAD";
return 0;

21.10.2008
00:27
[12]

swee [ Gunslinger ]

hmm ale on ciągle pokazuje tylko maksimum, nici z podmieniania wyrazow na 0 i 1

21.10.2008
00:51
[13]

Chuck kNorris [ Centurion ]

nie zrozumiałem myślałem ze nie działa :P
tu funkcja do tego co chcesz:

void insert(int *table, int index, int size, int value_1, int value_2)

for(int i = 0; i < index && i < size; ++i) *(table + i) = value_1;
for(int i = index; i < size ; ++i) *(table + i) = value_2;


table - wskaźnik na tablice
index - do którego elementu sa wstawiane wartości value_1 (powyżej znajda sie wartości value_2)
size - rozmiar tablicy

© 2000-2025 GRY-OnLine S.A.