Zadanie na zliczanie elementów dodatnich i ujemnych

0

Dzień dobry,

Szukałem, jednak nie udało mi się znaleźć programu, który ma wpisane przeze mnie liczby całkowite wczytać i potem wypluć ilość spisanych liczb dodatnich i sumę tych liczb dodatnich oraz ilość spisanych liczb ujemnych i ich sumę. Wpisanie 0 ma zakończyć program.

3

A próbowałeś napisać?

0
kq napisał(a):

A próbowałeś napisać?

Tak, próbowałem. Niestety potrzebuję doraźnej pomocy.

2

To Zapodaj, co Napisałeś.

0
lion137 napisał(a):

To Zapodaj, co Napisałeś.

Z góry dziękuję za pomoc. Udało mi się jedynie zrobić zliczanie tych elementów na podstawie wcześniejszego określena rozmiaru tablicy. Potrzebuję:

  1. Bez określenia rozmiaru tablicy, po prostu pisanie elementów aż do wpisania wartości 0.
  2. Wyplucie przez program elementów dodatnich.
  3. Wyplucie przez program elementów ujemnych.
#include<stdio.h>
int main()
{
   int a[100], n, i, psum=0, nsum=0;

   printf("Rozmiar tabeli [1-100]: ");
   scanf("%d",&n);
   printf("Wpisz %d elementów: ",n);

   for(i=0; i<n; i++)
   {
     scanf("%d",&a[i]);
     if(a[i]<0) nsum += a[i];
     else psum += a[i];
   }

   printf("Suma liczb dodatnich: %d",psum);
   printf("\nSuma liczb ujemnych: %d",nsum);
   return 0;
}

0

W zadaniu nie ma nic o sumie. Jeśli masz wypisać osobno dodatnie i ujemne elementy, to potrzebujesz na nie osobne tablice.

0

Jak przekształcić ten kod:

#include<stdio.h>
int main()
{
   int a[100], n, i, psum=0, nsum=0;

   printf("Rozmiar tabeli [1-100]: ");
   scanf("%d",&n);
   printf("Wpisz %d elementów: ",n);

   for(i=0; i<n; i++)
   {
     scanf("%d",&a[i]);
     if(a[i]<0) nsum += a[i];
     else psum += a[i];
   }

   printf("Suma liczb dodatnich: %d",psum);
   printf("\nSuma liczb ujemnych: %d",nsum);
   return 0;
}

bym nie musiał określać romiaru tablicy, tylko wpisywał je elementy aż do wpisania 0?

No i jak wypluć na końcu wypisane wszystkie elementy dodatnie i wszystkie elementy ujemne?

0

Musiałbyś stworzyć swój dynamiczny kontener, najłatwiej byłoby Linked Listę.

0
pio123 napisał(a):

potem wypluć ilość spisanych liczb dodatnich i sumę tych liczb dodatnich oraz ilość spisanych liczb ujemnych i ich sumę.

Zdecyduj się, bo do tego nie potrzebujesz tablicy...

pio123 napisał(a):

No i jak wypluć na końcu wypisane wszystkie elementy dodatnie i wszystkie elementy ujemne?

...a do tego już potrzebujesz.

0

zamiast int a[100] daj:

  int max_buf_size = 100;
  int n = 0;
  int* buf = (int*)malloc(max_a_size*sizeof(int));

potem w pętli while albo do .. while wczytuj znak i dodawaj go (gdy nie jest zerem) do buf oraz zwiększaj n o jeden (n++;). Gdy n zrówna się z max_buf_size podwój tą liczbę i dokonaj zwiększenia rozmiaru bufora:

  max_buf_size *= 2;
  buf = (int*)realloc(buf, max_buf_size * sizeof(int));

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