Skocz do zawartości
raven_ns

Tablica N-el ,suma,srednia,max,min // Pisane W C

Rekomendowane odpowiedzi

Witam postanowilem napisac kolejny programik jako ze C jest bardzo wciagajacym to od razu zabralem sie do roboty. Program powinien prosic uzytkownika o kolejne liczby do tablicy i w razie gdy wpiszemy 0 to powinien pominac 0 i policzyc sume srednia max i min wszystkich liczb wpisanych to dablicy ale bez owego zera. Wszystko dziala do 14el po wpisaniu 14 el program sie wiesza.Moze moglibyscie mi w tym pomoc bo chyba zamarlem w martwym punkcie.

 

 

Tresc zadanka

Napisać program wczytujący do tablicy n-elementowej n liczb ( 0 < n <=20 ) rzeczywistych. Program ma wypisać sumę, średnią arytmetyczną wczytanych liczb oraz liczby największą, najmniejszą i ile razy każda z nich wystąpiła.Nieograniczony żadną tablicą (mogący przetwarzać ciągi liczb dowolnej długości). Dla uproszczenia przyjmiemy, że program zakończy wczytywanie liczb i wypisze wyniki po wprowadzeniu wartości 0.

 

#include <stdio.h>#include <stdlib.h>/*Proram sluzacy do wyliczenia sumy , sredniej , min i max dla ciagu n-el*/int main(){	int i,x, s, srd,  min, max, lmax, lmin, k, ilo; /*deklaracja zmiennych*/	float  tab[i];		ilo=-1;	i=0;	s=0;	k=1;	printf("Proram sluzacy do wyliczenia sumy , sredniej , min i max dla ciagu n-el\n\n");	printf("Program zakonczy wpisywanie liczb jezeli jako kolejna liczbe podasz mu\nwartosc neutralna 0\n\n\n"); 			do 	{			printf("Podaj %d element tablicy\n",i+1);  //tutaj robimy myk techniczny;), zmienna ilo liczy przebieg petli 		scanf("%f", &tab[i]);  		k=tab[i];		i++;			ilo++;	}	  while ( k != 0); //tutaj waruneczek na zatrzymanie petelki a mianowicie jezeli do tablicy wpiszemy 0 to petla sie konczy	  	  	printf("--------------------------\n\n");		i=0;		/*Suma Ciagu*/		do		  {		  s = s + tab[i];	   		  i++;	   		  }		while(i<ilo);	printf("Suma wynosi %d\n\n",s);				/*Srednia Ciagu*/	  srd = s/ilo;			 	  printf("Srednia wynosi %d\n\n",srd);	   	  	  /*Minimum i maximum*/	  		i=0;			  		max=tab[i];		min=tab[i];	   i++;		while (i<ilo) 		 {  		   if (tab[i] > max)		   {					   max = tab[i];					  		   }		   		  	   		  if ( tab[i] <  min)		   		   {		  					  min = tab[i];		   }		   		   i++;		   		  }		  		  printf("Maximum w ciagu wynosi %d a minimum %d\n\n",max,min);		   	 i=0;	 lmax = 0;	 lmin = 0;	   while (i<ilo)	   	   {		 if (max == tab[i])			{				  lmax = lmax + 1;			}				 		if (min == tab[i])		   { 				lmin = lmin + 1;		   }		i++;		}	 	 printf("Maximum wystepuje w ciagu %d razy a minimum %d razy\n\n",lmax , lmin);				 		system("PAUSE");   	return 0;}

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

albo ja jestem jakis nie zabardzo ale od kiedy to mozna zadeklarowac tablice bez okreslonej liczby lementow w ten sposob

float tab.

C dziala w ten sposob, ze najpierw rezerwuje pamiec, dlatego nie da rady od tak zdefiniowac sobie tablic o dowlnej liczbie elementow. Jesli rozmiar tablicy nie jest znany to musisz posluzyc sie lista jedno lub dwukierunkowa tak np.

Jakiego kompilatora uzywasz bo moj borland to odrazu mowi, ze Constant expression required - czyli musi byc stala wartosc podczas deklaracji.

 

Twoj kompilator kompiluje taki program bez bledu?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

taka user frendly uwaga ;)

nie wiem jak długo programujesz i jakie masz przyzywczajenia/ umiejętności ale w takich językach jak C/C++ ( dotyczy to jednak chyba wszystkich języków) gdzie kompilator traktuje programistę za tego, który wie co robi ( nie jest tak restrykcyjny jak np w pascalu) to polecam inizjalizację wszystkich zmiennych w momencie ich deklarowania, można dzięki temu uniknąć wielu problemów.

inna sprawa.. odnośnie tego że kompliator to puścił, o ile mi wiadomo to dev cpp uzywa jako kompilatora gcc a ten jest nieco zmodyfikowany, inna sprawa że w c++ ( a więc chyba i w c) tablica jest czymś abstarakcyjnym,

tak na prawdę nie ma tablic , tylko jest wskaźnik do elementu. to oznacza liczę przesunięć wskaźnika. - z dużym p-stwem to miało właśnie wpływ na kompliację i wystąpienie błędu.

 

ps ten program to taki mix c/c++ w czystym c nie wystepuje komentarz jednej linni - // wprowadzono go dopiero w c++;)

ale to taka mała dygresja

Edytowane przez liechmaster

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie


×
×
  • Dodaj nową pozycję...