• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Zastępowanie "x" elementu tablicy innym

VPS Starter Arubacloud
0 głosów
595 wizyt
pytanie zadane 8 listopada 2017 w C i C++ przez dominiv2604 Początkujący (350 p.)

Witam serdecznie, męczę się od wczoraj nad kawałkiem programu, który miałem wykonać na podstawie zadania, umieszczam tutaj treść zadania:

Napisz program, który wczyta dowolną liczbę liczb całkowitych od użytkownika (nie mniej niż jedną, nie więcej niż 1000), jako jeden ciąg liczb oddzielonych spacjami od siebie. Załóż, że wartość -1 nie jest daną, a określeniem końca danych. Następnie wyznacz i wypisz (jako liczby, każda w nowej linii): liczbę elementów tablicy, najmniejszą i największą wartość, średnią oraz iloczyn wszystkich elementów. Przykładowy wektor wejściowy:1 2 3 4 5 6 5 4 3 5 6 7 8 9 9 8 7 6 5 4 1 5 5 5 −1

Przykładowe wyjście:

24

1

9

5.125

1110900736

To jest zadanie które wykonałem i działa, a teraz mam je przerobić w następujący sposób:

Dla tablicy z zadania 5.18 wyświetl dodatkowo indeksy komórek, zawierających wartości najmniejsze i największe tablicy. Zwróć uwagę, że ta samą wartość może być przechowywana w wielu komórkach.

 

Oto kod który nabazgrałem:

 

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



int main(void) {
	
	int podana_liczba = 0;
	int licznik_petli = 0;
	int tablica[299999];
	int tablica_minimum[20000];
	int tablica_maximum[20000];
	int max = -2147483648;
	int min = 2147483647;
	float sr;
	int iloczyn = 1;
	int i=0;
	int c=0;
	int z=0;
	
	puts("Podaj wartosci twojej tablicy. -1 konczy tworzenie tablicy.");

	while(1) {
		
		scanf("%i", &podana_liczba);
		
		if(podana_liczba == -1) break;
		
			else {
		
			tablica[licznik_petli] = podana_liczba;
		
			licznik_petli++;
			}
	}
			
	for(i=0 ; i < licznik_petli ; i++) {
		
	
		
		if(tablica[i] <= min) {	
			min = tablica[i];
			tablica_minimum[c] = i;
			c++;

			if(tablica[i] < min) {
				c--;
				tablica_minimum[c] = i;
				c++;
			}
		}
			
			
			
		if(tablica[i] >= max) {	
			max = tablica[i];
			tablica_maximum[z] = i;
			z++;
		
			if(tablica[i] > max) {
				z--;
				tablica_maximum[z] = i;
				z++;
			}
		}
		
		
		sr = sr + tablica[i];
		iloczyn = iloczyn*tablica[i];
	}
		sr = sr/licznik_petli;
	
	printf("Ilosc elementow: %i\n", licznik_petli-1);
	printf("Wartosc minimalna: %i\n", min);
	printf("Wartosc srednia: %.3f\n", sr);
	printf("Wartosc maksymalna: %i\n", max);
	printf("Iloczyn: %i\n", iloczyn);
	
	
	puts("\n\nPozycje maximum:");
	for(i=0 ; i<z ; i++) {
		printf("%i  ", tablica_maximum[i]);
	}
	
	puts("\nPozycje minimum:");
	for(i=0 ; i<c ; i++) {
		printf("%i ", tablica_minimum[i]);
	}
		
}
	
	

I teraz, przechodzę do meritum mojej udręki. Indeksy najmniejszych oraz największych elementów tablicy.

Program odczytuje te indeksy, ale dajmy na to jeżeli podam ciąg: 20 10 5 0, to wyświetla mi indeksy minimum jako 0 1 2 3, a powinien tylko 3, bo jest ona najmniejszą podaną liczbą w ciągu. Nie potrafię skonstruować mechanizmu który by sprawdzał w tablicy czy jeżeli pojawiła się jakaś cyfra większa od tej która aktualnie jest najmniejsza to żeby indeks tej większej jakoś wyrzucić a zostawić jedynie tej mniejszej. Liczę na waszą pomoc. Pozdrawiam Serdecznie!

1 odpowiedź

+1 głos
odpowiedź 8 listopada 2017 przez Piotr Batko Stary wyjadacz (13,190 p.)
Podczas wczytywania ustal sobie tylko jaka wartość była najmniejsza, a jaka największa. Dopiero jak już wszystko odczytasz wyszukaj w tablicy z wczytanymi liczbami wartości minimalne i maksymalne.
komentarz 8 listopada 2017 przez dominiv2604 Początkujący (350 p.)
To wydaje się być logiczne. Dzięki wielkie za odpowiedź sprawdzę później czy wszystko mi gra :)

Podobne pytania

+2 głosów
1 odpowiedź 356 wizyt
pytanie zadane 10 marca 2021 w JavaScript przez Kalindoreks Użytkownik (620 p.)
0 głosów
3 odpowiedzi 834 wizyt
0 głosów
4 odpowiedzi 686 wizyt

92,830 zapytań

141,771 odpowiedzi

320,817 komentarzy

62,159 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...