Tablica jednowymiarowa

0

Program się kompiluje jednak tablica się nie wyświetla. Dopiero się uczę programować wiec liczę na pomoc i jakieś sugestie.

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

#define N 10

int array[N];

int main()
{

    void losowe(int array[])
    {
        srand(time(0));
        int i;
        for (i = 0; i < N; i++) {
            array[i] = -10 + rand() % 21;
            printf("%d", array[i]);
        }
    }
    return 0;
}
0

Bo nie wywołujesz funkcji losowe() w main :/

0

Na pewno się kompiluje? To nie jest poprawny C, nie można definiować funkcji w funkcji. Pomijając już fakt, że nigdzie tejże funkcji nie wywołujesz.

0
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 10

void losowe(int array[])
{	
	int i;
	for (i = 0; i<N; i++)
	{
		array[i] = -10 + rand() % 21;
		printf("%d, ", array[i]);
	}
}

int main()
{
	srand((unsigned)time(NULL));
	int array[N];	
	losowe(array);
	return 0;
}
  • Nie wywołujesz funkcji losowe w main;
  • Definiujesz ciało funkcji w funkcji, co o dziwo się kompiluje, bo w C tak nie można (na ideone przechodzi ale MS już nie pozwala);
  • Tablica niepotrzebnie jest zmienną globalną.

@kq https://ideone.com/CCYMfq też się zdziwiłem.

0

Dzięki za pomoc chyba sobie poradziłem, dodatkowo dodałem funkcje która znajduje maksymalna wartość.

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 10

int  main()
{
    int array[N];
    losowe(array);
    m_wartosc(array);
    return 0;
}

void losowe(int array[N])
{
srand(time(0));
int i;
puts("TABLICA:");
for(i=0;i<N;i++)

{
  array[i]=-10+rand()%21;

  printf("%d\n",array[i]);

}
puts("\n");
}

void m_wartosc(int *array)
{

int max;
int a;
max=array[0];
for(a=1;a<N;a++)
    if(max<array[a])
    max=array[a];
    puts("WARTOSC NAJWIEKSZA:");
    printf("%d\n",max);
return max;
}
0

Daj srand(time(0)); do main'a gdyż starczy tylko jedno wywołanie. Wsadzając to do osobnej funkcji możesz wywołać srand'a kilka razy.
Takie formatowanie kodu serio Ci odpowiada? :)

Odseparuj też funkcje liczące od tych prezentujących dane np:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 10

int max_value(int array[N])
{
	size_t i = 0;
	int max = array[i];
	for (; i < N; ++i)
		if (array[i] > max)
			max = array[i];
	return max;
}

void randomize(int array[N])
{
	size_t i = 0;
	for (; i < N; ++i)
		array[i] = -10 + rand() % 21;
}

void show_details(int array[N])
{
	size_t i = 0;
	for (; i < N; ++i)
		printf("%d, ", array[i]);
	printf("\nMax: %d\n", max_value(array));
}

int main()
{
	srand((unsigned)time(NULL));
	int array[N];

	randomize(array);
	show_details(array);

	return 0;
}
0

Dzięki za sugestie, postaram się trochę jeszcze nad tym popracować

1 użytkowników online, w tym zalogowanych: 0, gości: 1