Gotowy program bez jednej opcji (C++,tablice)

0

Witam.
Poniżej zamieszczam kod mojego programu zapelnia on tablice jednowymiarowa liczbami losowymi z przedzialu (k,100k)(k definiuje użytkownik), następnie podaje wartość max i min znaleziona w tej tablicy. Wszytko działa ok tylko nie wiem jak zrobić żeby oprocz max i min wyświetlało miejsce w tablicy w której ta wartość została znaleziona. Proszę o pomoc.

#include <cstdlib>
#include <iostream>
#include <ctime>
#include <stdio.h>

using namespace std;

int main(int argc, char *argv[])
{
   int k;
   int g =100*k;
   int poz;
   again:
	printf("Podaj wartosc k z przedzialu 1-100:\n");
	scanf("%i", &k);
	printf("k = %i\n", k);
   if (k>=1 && k<=100)
  	{
		int i;
		const int l = 1000;
		int tab[l];
		srand(time(0));
		for(int i = 0;i<=1000;i++)
		{   
			tab[i] = k+rand()%(g-k+1);
		} 
		
		int min=tab[0];
		int max=tab[0];

		
		min=tab[0];
	    max=tab[0];
	    poz =0;
	          for(i=0; i<1000; i++)
	          {
				if(tab[i]>max)
	          	max=tab[i];
	          	poz = i;
	        
	          	if(tab[i]<min);
	          	min=tab[i];
	          	poz = i;
	          	
	          }
	          
	    
	          printf("Element maksymalny w tablicy ma wartosc: %i\n", max);
	          printf("Element maksymalny w tablicy ma indeks: %i\n", i);
	          printf("Element minimalny w tablicy ma wartosc: %i\n", min);
	          printf("Element maksymalny w tablicy ma indeks: %i\n", i);
		
			
			
	}
  	else
	{ 
  	printf("Wartosc k nieprawidlowa podaj nowa z zakresu 1-100:\n");
    goto again;   
	} 
    system("PAUSE");
    return EXIT_SUCCESS;
}
 
0

coś takiego: [pseudokod]:

int miejsce_min, miejsce_max;
for(int i = 0; i < rozmiar_tablicy; i++)
{
      if(tablica[i] == min)
          miejsce_min = i;
      if(tablica[i] == max)
         miejsce_max = i;
}
cout << "Miejsce na ktorym wystepuje liczba maxymalna to: " << miejsce_max  << "\n";
 

Usuń goto z kodu bo to zło !
Poza tym w Twoim kodzie wykraczasz poza zakres tablicy:
for(int i = 0;i<=1000;i++)
powinno być : for(int i = 0;i<1000;i++)

0

Nie wgłębiałem się w kod, ale na pierwszy rzut oka brakuje Ci klamer po if

if(coś tam){
    robimy jedną rzecz 
    robimy druga rzecz
    a nawet trzecia
}

ale jeżeli wyjdziemy poza klamry, to już nie odnosi się do ifa...
0

Trochę nie chciało mi się czytać twojego kodu bo była to dla mnie ciężka lektura, napisałem własny

 #include<iostream>
#include<cstdlib>
#include <stdio.h>

using namespace std;

int losuj(int x, int k)
{
    int result;
        do
        {
            result = rand()%100*k+k;
        }while(result != x);
    return result;
}

int main(int argc,char* argv[])
{
const int N = 100;
int tab[N];
int min, max;
int min_index, max_index;
int losowa, k;

printf("%s", "Podaj k \n");
scanf("%d", &k);


for (int i=0; i<N; i++)
{
    losowa=rand()%100*k + k;
    tab[i] = losuj(losowa, k);
    //cout << tab[i] << endl;
}

min=max=tab[0];

for (int i=1; i<N; i++)
{
    if (tab[i] < tab[i-1])
    {
      min=tab[i];
      min_index=i;
    }
    if (tab[i] > tab[i-1])
    {
        max=tab[i];
        max_index=i;
    }
}

printf("Max: %d%s", max, "\n");
printf("Min: %d%s", min, "\n");
printf("Max index: %d%s", max_index, "\n");
printf("Min index: %d%s", min_index, "\n");
    system("PAUSE");
    return EXIT_SUCCESS;
}

Wydaje mi się, że źle ustawiłem random'a z którym mój komputer nie radzi sobie przy losowaniu (nawet z użyciem srand)
Musiałem dopisać własną funkcje

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