ďťż
 
 
   zadanko z c++
 
 

Tematy

 
    
 

 

 

 

zadanko z c++





kasienka7115 - 22-10-2007 21:15
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 - 22-10-2007 22:02
A z czym masz konkretnie problem?



thalcave - 22-10-2007 22:14

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.
to mają być 3 wersje tego programu?

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.
#include <iostream>

float suma1(float [] , int);
float suma2(float [] , 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 - 22-10-2007 22:57
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 - 22-10-2007 23:09

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.
#include <iostream>
#include <vector>

using std::vector;

float sred(vector<int> , int);
int iloczyn(vector<int> , int);
int ilosc(vector<int> , int);

int main()
{
  using std::cout;
  using std::endl;
  using std::cin;
 
 
  vector<int> liczby;
  int temp;
  int i = 0;
 
  cout << "Podaj " << i << " liczbe: ";
  cin >> temp;
 
  while ( temp >= 0 )
    {
      liczby.push_back(temp);
      i++;
     
      cout << "Podaj " << i << " liczbe: ";
      cin >> temp;
    };
 
  cout << endl;
  cout << "Srednia liczb wiekszych od 0: " << sred(liczby , i) <<endl;
  cout << "Iloczyn liczb poza [5 ; 10]: " << 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 - 23-10-2007 01:29
thalcave: Strasznie długie te Twoje kody. Do tego z błędami:


cout << "Podaj N:";
cin >> N;
float licz[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:

#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 - 24-10-2007 00:36
nie no jestescie cudni :)) heh ile piw widze i komu :>



zdzichu - 29-10-2007 19:25
Ja miałem dzisiaj podobny program do napisania w szkole tyle że w pascalu.
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • minister.pev.pl

  •  

     


     

     
    Copyright 2003. MĂłj serwis