Sumowanie elementów tablicy/jezyk c

Sumowanie elementów tablicy/jezyk c
02
  • Rejestracja:ponad 9 lat
  • Ostatnio:ponad 9 lat
  • Postów:10
0

Witam. Program losuje 10 liczb: dla liczb ujemnych przypisuje -1, dla dodatnich 1, a dla zera wartość 0. Mam pytanie, jak zsumować te jedynki i ewentualnie zera?
int main()
{
int a[10],i;
srand(time(NULL));
for(i=0;i<10;i++)
{
a[i]=rand()%21-10;
printf("\n%d",a[i]);

	}
	for(i=0;i<10;i++)
	{
		if(a[i]>0 && a[i]<11)
		printf("\nliczba %d   to: 1",a[i]);
		else
		if(a[i]>-11 && a[i]<0)
		printf("\nliczba %d   to: -1",a[i]);
		else 
		if(a[i]==0)
		printf("\nliczba %d to: 0",a[i]);
	}
	return 0;
}
twonek
  • Rejestracja:prawie 11 lat
  • Ostatnio:prawie 2 lata
  • Postów:2500
0

Popraw post: Dlaczego nikt nie odpowiada w moim wątku?

Kopiuj
int minusy = 0, plusy = 0, jajeczka = 0;
...
if (a[i] < 0) ++minusy;
if (a[i] > 0) ++plusy;
if (a[i] == 0) ++jajeczka;
02
  • Rejestracja:ponad 9 lat
  • Ostatnio:ponad 9 lat
  • Postów:10
0

Dziękuję bardzo za odpowiedź. If'y poprawione, ale niezbyt rozumiem co dalej..

twonek
  • Rejestracja:prawie 11 lat
  • Ostatnio:prawie 2 lata
  • Postów:2500
0

Ja też nie wiem co dalej. Pytałeś jak zliczyć (właściwie zsumować, ale rozumiem że chodzi o zliczanie wystąpień) to Ci pokazałem. A co dalej robić z tym to przecież Ci nie wymyślę.

02
  • Rejestracja:ponad 9 lat
  • Ostatnio:ponad 9 lat
  • Postów:10
0

Mam na mysli to jak zapisać wynik, bo ciagle wyskakuje mi 10. (mam na myśli sume -1+1+0+(-1)+...=...). Niezbyt jeszcze ogarniam C także, sory jak pytam o takie banały.

_13th_Dragon
Jak nie ogarniasz to zacznij od najkrótszego kursu.
_13th_Dragon
  • Rejestracja:ponad 19 lat
  • Ostatnio:7 dni
1
0204 napisał(a):

... ale niezbyt rozumiem co dalej ...
Dalej wywalić i napisać porządnie.

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

#define size 10
int main()
  {
   int i,a[size],sum[3]={0};
   srand(time(NULL));
   for(i=0;i<size;++i) a[i]=rand()%21-10;
   for(i=0;i<size;++i) printf("%d\n",a[i]);
   printf("\n");
   for(i=0;i<size;++i) printf("liczba %d  to: %d\n",a[i],(a[i]>0)-(a[i]<0));
   for(i=0;i<size;++i) ++sum[1+(a[i]>0)-(a[i]<0)];
   printf("\n");
   printf("Ujemnych %d\n",sum[0]);
   printf("Zerowych %d\n",sum[1]);
   printf("Dodatnich %d\n",sum[2]);
   return 0;
  }

http://ideone.com/5NJgmX


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
02
  • Rejestracja:ponad 9 lat
  • Ostatnio:ponad 9 lat
  • Postów:10
0

int ... sum[3]={0}
.
.
.
++sum[1+(a[i]>0)-(a[i]<0)];

Czy jest bardziej elementarny sposób zapisu tej sumy? Typu sum=a[i]+...

_13th_Dragon
  • Rejestracja:ponad 19 lat
  • Ostatnio:7 dni
1

Tak, można zamienić to: int sum[3]={0}; ... ++sum[1+(a[i]>0)-(a[i]<0)];
na to: int neg=0,nil=0,poz=0; if(a[i]<0) ++neg; else if(a[i]>0) ++pos; else ++nil;


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
02
  • Rejestracja:ponad 9 lat
  • Ostatnio:ponad 9 lat
  • Postów:10
0

Dziękuję za odpowiedź.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.