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

Błąd po wpisaniu liczby ujemnej

Object Storage Arubacloud
0 głosów
436 wizyt
pytanie zadane 10 października 2015 w C i C++ przez Armando Obywatel (1,870 p.)
edycja 10 października 2015 przez Armando

Cześć! Program po wpisaniu do niego liczby 0 lub jakiejkolwiek liczby ujemnej wysypuje się. Jaki jest tego powód ? Muszę napisać funkcję, która będzie wyświetlała jedynie liczby dodatnie z liczb wpisanych wcześniej. Chodzi o funkcję i_l_d.

​
#include <iostream>
#include <cstdlib>
#include <cmath>

using namespace std;
//--------------------------------------
void wpisz_liczby(int b[],int *k)
{
  int i;
  double S;
  system("cls");
  cout<<"Podaj ilosc liczb: "; cin>>*k;
  cout<<"\nWpisz kolejne liczby";
  for(i=0;i<*k;i++)
  {
      cout<<"\na["<<i<<"]="; cin>>b[i];
  }
  S=b[i]/(*k);
  return;
}
//--------------------------------------
void wyswietl_liczby(int b[],int k)
{
    int i;
    system("cls");
    cout<<"Oto liczby zapisane w tablicy\n\n";
    for(i=0;i<k;i++)
    {
        cout<<b[i]<<" ";
    }
    return;
}
//--------------------------------------
void srednia(int b[],int k)
{
    int i; float suma, S; S=0;
    system("cls");
    cout<<"Srednia liczb wynosi : ";
    for(i=0;i<k;i++)
    {
        suma+=b[i];
    }
    S=suma/k;
    cout<<S<<endl;
    return;
}
//--------------------------------------
void i_l_d(int b[],int *k)
{
    int i;
    system("cls");
    cout<<"Liczby dodatnie to : \n\n";
    for(i=0;i<*k;i++)
    {
        if(i<0)
        {
            b[i] -= i;
        }
        cout<<b[i]<<" ";
    }
    return;
}
//--------------------------------------
int main()
{

	char w;

	int a[5000];
	int n;

	do
	{
		system("cls");
		cout<<"Wybierz co chcesz zrobic: ";
		cout<<"\n1. Wpisanie liczb do tablicy - 1";
		cout<<"\n2. Wyswietlenie liczb z tablicy - 2";
		cout<<"\n3. Obliczenie sredniej - 3";
		cout<<"\n4. Wyswietl liczby dodatnie - 4";
		cout<<"\n5. Koniec - 5\n";
		cin>>w;
		switch(w)
		{
			case '1': wpisz_liczby(a,&n); break;
			case '2': wyswietl_liczby(a,n); break;
			case '3': srednia(a,n); break;
			case '4': i_l_d(a,&n); break;
		}
		system("pause");
	} while (w!='5');

	return 0;
}

2 odpowiedzi

+1 głos
odpowiedź 10 października 2015 przez Patrycjerz Mędrzec (192,320 p.)
wybrane 10 października 2015 przez Armando
 
Najlepsza
Ale o jaką średnią ci chodzi: arytmetyczną, geometryczną, ważoną, czy jeszcze o inną?
komentarz 10 października 2015 przez Armando Obywatel (1,870 p.)
Dziękuję bardzo za pomoc, ostatni błąd wyniknął z niedopatrzenia :D
komentarz 10 października 2015 przez Armando Obywatel (1,870 p.)
Mógłbym Cię prosić o pomoc raz jeszcze ? Nowy kod umieściłem w głównym pytaniu.
komentarz 10 października 2015 przez Armando Obywatel (1,870 p.)

Pytania nie było, chyba powinienem odpocząć bo zaczynam robić głupoty haha laugh

komentarz 10 października 2015 przez Patrycjerz Mędrzec (192,320 p.)
for(i=0;i<*k;i++)
{
        if(b[i] > 0)
		std::cout << b[i] << " ";
}

 

komentarz 10 października 2015 przez Armando Obywatel (1,870 p.)

Dzięki wielkie za warunek! Co do tamtego pytania to po prostu wpisywałem wartość ujemną jako ilość liczb do podania. Przerwa chyba dobrze mi zrobi wink

+1 głos
odpowiedź 10 października 2015 przez pierep94 Bywalec (2,720 p.)
Bierzesz petle for, i dodajesz kolejne liczby w tablicy, np suma += liczba[i] albo suma = suma + liczba[i]. U Ciebie zamiast liczba będzie oczywiście nazwa tablicy, w tym wypadku b[i]. W kazdym obiegu petli for do zmiennej suma doda sie kolejna liczba z tablicy. Potem juz tylko dzielisz przez ilość liczb w tablicy, czyli chyba Twoje k.

Podobne pytania

0 głosów
3 odpowiedzi 1,448 wizyt
pytanie zadane 4 sierpnia 2017 w C i C++ przez Artur Hajmowicz Początkujący (340 p.)
0 głosów
1 odpowiedź 1,070 wizyt
pytanie zadane 21 kwietnia 2015 w C i C++ przez niezalogowany
0 głosów
3 odpowiedzi 255 wizyt

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 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

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

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!

...