zadanko z c++

Potrzebujesz pomocy z C, C++, perl, python, itp.
kasienka7115
Posty: 2
Rejestracja: 22 października 2007, 21:10

zadanko z c++

Post autor: kasienka7115 »

halooo Koledzy czy moglibyście look'nąć sobie na moje zadanka z programowania , bo wiem że jesli ktoś pomoże mi je rozwiązać to się w końcu nauczę :) )))) Bardzo Was proszę o pomoc :]

1. Program wypisujący wartości x, x2 oraz x3 dla liczby rzeczywistej x ∈ [xp, xk] i
zmieniającej się z krokiem Δx>0. Program należy napisać, korzystając z pętli for, a
następnie z pętli while i do..while.

2. Program wczytujący N liczb rzeczywistych z klawiatury. Program powinien:
- obliczyć i wypisać sumę wszystkich wczytanych liczb,
- obliczyć i wypisać sumę wczytanych liczb > 0,
- obliczyć i wypisać średnią arytmetyczną wszystkich wczytanych liczb,
- obliczyć i wypisać średnią arytmetyczną wczytanych liczb < 0.

3. Program wczytujący z klawiatury liczby całkowite aż do pojawienia się pierwszej
liczby < 0. Program powinien obliczać i wypisywać średnią arytmetyczną wczytanych
liczb > 0, iloczyn wczytanych liczb spoza przedziału [5, 10] oraz ilość wczytanych liczb
parzystych.

4. Ogólny wyraz ciągu ai dany jest następującym wzorem:
a i2 15i 50; i 1,2,3...
i = − + =
Proszę napisać program obliczający sumę wyrazów tego ciągu, począwszy od aNp aż do
aNk. Wartości Np oraz Nk > Np należy wczytać z klawiatury. Jak określić wartość
najmniejszego wyrazu tego ciągu dla wyrazów od a1 do aNk? A dla wyrazów od aNp aż
do aNk?

z góry dziekuję

pozdawiam Dolores :)
ponton
Beginner
Posty: 406
Rejestracja: 24 stycznia 2007, 01:40
Lokalizacja: Kalisz/Wroc³aw

Post autor: ponton »

A z czym masz konkretnie problem?
thalcave
Junior Member
Posty: 526
Rejestracja: 03 maja 2007, 19:57
Lokalizacja: gdynia

Post autor: thalcave »

kasienka7115 pisze:1. Program wypisujący wartości x, x2 oraz x3 dla liczby rzeczywistej x &#8712] i
zmieniającej się z krokiem Δx>0. Program należy napisać, korzystając z pętli for, a
następnie z pętli while i do..while.
to mają być 3 wersje tego programu?
kasienka7115 pisze:2. Program wczytujący N liczb rzeczywistych z klawiatury. Program powinien:
- obliczyć i wypisać sumę wszystkich wczytanych liczb,
- obliczyć i wypisać sumę wczytanych liczb > 0,
- obliczyć i wypisać średnią arytmetyczną wszystkich wczytanych liczb,
- obliczyć i wypisać średnią arytmetyczną wczytanych liczb < 0.

Kod: Zaznacz cały

#include <iostream>

float suma1(float [] , int)] , int);
float sred1(float [] , int);
float sred2(float [] , int);

int main()
{
  using std::cout;
  using std::endl;
  using std::cin;

  int N;
  cout << "Podaj N:";
  cin >> N;

  float licz[N];
  for (int i=0; i < N; i++)
    {
      cout << "Podaj " << i+1 << " liczbe: ";
      cin >> licz[i];
    };


  cout << "Suma wszystkich liczb: " << suma1(licz , N) << endl;
  cout << "Suma licz wiekszych od 0: " << suma2(licz , N) << endl;
  cout << "Srednia wszystkich liczb: " << sred1(licz , N) << endl;
  cout << "Srednia licz mniejszych od 0: " << sred2(licz , N) << endl;

  return 0;
};

float suma1 (float L[] , int N)
{
  float suma = 0;
  
  for (int i = 0 ; i < N ; i++)
    {
      suma += L[i];
    };

  return suma;

};


float suma2 (float L[] , int N)
{
  float suma = 0;
  
  for (int i = 0 ; i < N ; i++)
    {
      if ( L[i] > 0 )
        suma += L[i];
    };

  return suma;

};

float sred1 (float L[] , int N)
{
  float sred = 0;
  
  for (int i = 0 ; i < N ; i++)
    {
      sred += L[i];
    };

  sred = sred / N;
  return sred;

};

float sred2 (float L[] , int N)
{
  float sred = 0;
  int j = 0;
  
  for (int i = 0 ; i < N ; i++)
    {
      if ( L[i] < 0 )
        {
	  sred += L[i];
	  j++;
	};
    };

  sred = sred / j;
  return sred;

};
phund
Posty: 58
Rejestracja: 30 marca 2007, 11:33
Lokalizacja: UTP

Post autor: phund »

Generalnie to http://rtfm.killfile.pl/#praca_domowa. Możesz napisać, z czym masz problem, ale to Ty masz się czegoś nauczyć, a nie oddać nauczycielowi gotowca z internetu.
thalcave
Junior Member
Posty: 526
Rejestracja: 03 maja 2007, 19:57
Lokalizacja: gdynia

Post autor: thalcave »

kasienka7115 pisze:3. Program wczytujący z klawiatury liczby całkowite aż do pojawienia się pierwszej
liczby < 0. Program powinien obliczać i wypisywać średnią arytmetyczną wczytanych
liczb > 0, iloczyn wczytanych liczb spoza przedziału [5, 10] oraz ilość wczytanych liczb
parzystych.

Kod: Zaznacz cały

#include <iostream>
#include <vector>

using std::vector]: " << iloczyn(liczby , i) <<endl;
  cout << "Ilosc liczb parzystych: " << ilosc(liczby , i) <<endl;
};


float sred(vector<int> L , int k)
{
  float sred = 0;
  int j = 0;
 
  for (int i = 0 ; i < k ; i++)
    {
       if ( L[i] > 0 )
	 {
	    sred += L[i];
	    j++;
	 };
    };
  sred = sred / j;
  
  return sred; 
  
};


int iloczyn(vector<int> L , int k)
{
  int iloczyn = 1;
  int ile = 0;
 
  for (int i = 0 ; i < k ; i++)
    {
       if (( L[i] < 5 ) || ( L[i] > 10 ))
	 {
	    iloczyn *= L[i];
	    ile++;
	 };
    };
  
  
  if ( !ile )
    return 0;
   else    
    return iloczyn;
  
};


int ilosc(vector<int> L , int k)
{
  int ilosc = 0;
 
  for (int i = 0 ; i < k ; i++)
    {
       if ( L[i] % 2 == 0 )
	 {
	    ilosc++;
	 };
    };
  
  return ilosc; 
  
};
cepe
Posty: 31
Rejestracja: 08 czerwca 2007, 19:14
Lokalizacja: Krasnystaw / Wroc³aw

Post autor: cepe »

thalcave: Strasznie długie te Twoje kody. Do tego z błędami:
thalcave pisze:cout << "Podaj N:"];
IMO: w ten sposób nie tworzy się dynamicznie tablic. Nie bez powodu w C++ jest operator new!

Po drugie masz strasznie nieintuicyjne nazwy funkcji i zero komentarzy! Po trzecie: niepotrzebine przechowywujesz liczby. Wystarczy jeden przebieg pętli, żeby wczytać dane i wyliczyć potrzebne wyniki:

Kod: Zaznacz cały

#include <cstdio>

int main()
{
	int n;
	int nnp = 0;			// liczba liczb ujemnych
	float in;				// zmienna na liczbę
	float sum = 0.0;		// suma wszystkich liczb
	float sump = 0.0;		// suma liczb dodatnich
	float sumnp = 0.0;	// suma liczb ujemnych

	printf("Podaj n: "); 
	scanf("%d",&n);
	for (int i = 0; i < n; i++)
	{
		scanf("%f",&in);
		sum += in;
		if (in > 0.0) sump += in;
		if (in < 0.0) { sumnp += in; nnp++; }
	}
	printf("Suma wszystkich liczb:\t\t%f\n",sum);
	printf("Suma liczb dodatnich:\t\t%f\n",sump);
	printf("Srednia arytmetyczna liczb:\t%f\n",n != 0 ? sum/n : 0.0);
	printf("Srednia liczb ujemnych:\t\t%f\n",nnp != 0 ? sumnp/nnp : 0.0);
	return 0;
}
Co więcej? Twój program dla N równego zero dzieli przez zero i wylicza w efekcie średnią jako nan. Twój program dla wejścia w którym nie ma liczb ujemnych tak jak w poprzednim przypadku wylicza wartość nan zamiast wypisywać, że nie ma liczb ujemnych albo nieintuicyjnie podawać średnią jako 0.0; W tym zadaniu trzeba jeszcze sprecyzować jak przechowywać zmienne (float nie jest przecież jedynym rozwiązaniem). No i nie wiadomo czy nie trzeba dodać jakiejś obsługi błędów.

Spojrzałem tylko na rozwiązanie zadania drugiego - reszty nie chce mi sie czytać.

EDIT: w powyższym kodzie można zaoszczędzić co najmniej jedną zmienną!
kasienka7115
Posty: 2
Rejestracja: 22 października 2007, 21:10

Post autor: kasienka7115 »

nie no jestescie cudni :) ) heh ile piw widze i komu :>
zdzichu
Posty: 3
Rejestracja: 27 października 2007, 18:59

Post autor: zdzichu »

Ja miałem dzisiaj podobny program do napisania w szkole tyle że w pascalu.
ODPOWIEDZ