Dodaj do ulubionych

Prosba z ludzi znajacych C++

IP: *.core.lanet.net.pl / *.core.lanet.net.pl 16.07.05, 19:21
Czy moglby ktos sprawdzic te zadania i opisac slownie te zadania (tzn.
wytlumaczyc co po kolei sie robi)? Jesli tak to bylbym wdzieczny.
W kolejnych postach podam zadania bo chyba sie w jednym wszystkie nie
zmieszcza.
Obserwuj wątek
    • Gość: + zadanie 1 IP: *.core.lanet.net.pl / *.core.lanet.net.pl 16.07.05, 19:21
      Dla tablicy całkowitych liczb (a1, a2, a3, a4, a5, ... )
      przykład: (34, 21, 2, 17, 21, ... )
      wyjaśnić czy są jednakowe między sobą.
      Przykład:
      jeśli a1=a8 to wydrukować „liczby a1, a8=34”
      jeśli a2=a5 =a13 to wydrukować „liczby a2, a5,a13=21”
      itd.
      Jeśli jednakowych między sobą nie istnieje to podać odpowiedni komunikat.

      Rozwiazanie:
      #include <iostream>

      const int n = 5;

      int main()
      {
      int licznikN = 0;
      int licznikN2 = 0;
      int array[n];
      int pozycjaArray;

      while (licznikN < n) // wpisywanie wartośći do tablicy array[n]
      {
      std::cout << "jakie A" << licznikN << " :";
      std::cin >> array[licznikN];
      licznikN++;
      }

      licznikN = 0;

      while (licznikN < n) // wyświetlanie tablicy array[n]
      {
      if (licznikN==0) std::cout << "Podałeś tablice: \n";
      std::cout << array[licznikN] <<" ";
      licznikN++;
      }

      pozycjaArray = 0;
      licznikN = 0;

      std::cout << "\n";

      while (licznikN <n) // procedura porownania
      {
      pozycjaArray = array[licznikN];
      licznikN2=licznikN + 1;
      while (licznikN2 <n) // zlicznie po elementach array[n]
      {
      if (pozycjaArray == array[licznikN2]) // wyświetla jeśli równe
      {
      std::cout << "a" << licznikN << " = " << "a" <<licznikN2
      <<"\n";
      }
      licznikN2++;
      }
      licznikN++;
      }
      std::cin >> licznikN;
      return 0;
      }
      • diabel-tasmanski Re: zadanie 1 17.07.05, 00:29
        mam zastrzerzenia do "procedura porownania"
        to nie zadfziala zgodnier ze specyfikacja.
        1. format wyswietlania danych niezgodny z wymaganiami ( niweielki bład )
        2. wielokrotnie sa wyświetlane te same indeksy array sprawdz co sie stanie jak
        np. array={1,1,1,1,1}
        3. brak odpowiedniego komunikaru przy braku tych samych warosci.
    • Gość: + zadanie 2 IP: *.core.lanet.net.pl / *.core.lanet.net.pl 16.07.05, 19:22
      Program powinien mnożyć matryce rzeczywistych liczb A(n,n) na wektor
      rzeczywistych liczb b(n), który jest wyliczany według algorytmu:
      i=1,2,3,4, .... n
      jeśli i jest parzystą liczbą to b(i)= 1/(ii+2)
      jeśli i jest nieparzystą liczbą to b(i)= 1/ i
      i wpisać rezultat do wektora c(n) według algorytmu:
      c(1)=A(1,1)b(1)+ A(1,2)b(2)+... A(1,n)b(n)
      c(2)=A(2,1)b(1)+ A(2,2)b(2)+... A(2,n)b(n)
      ...................
      c(n)=A(n,1)b(1)+ A(n,2)b(2)+... A(n,n)b(n)
      Wydrukować  A(n,n), b(n), c(n)

      Rozwiazanie:
      #include <iostream>

      const int n = 5;

      int main ()
      {


      int m;
      int n;
      int licznikM;
      int licznikN;
      int k; // sluzy do zatrzymywania nam programu
      float array[n,m];
      std::cout << "Podaj wielkosc macierzy (kolumny oraz wiersze)";
      std::cout << "\n";
      std::cin >> n;
      std::cin >> m;
      std::cout << "Stworzyles macierz " <<n <<" x" <<" " <<m << ". Teraz
      musisz podac dane do niej! Podaj pierwsza zmienna" << "\n";
      licznikM = 1;
      licznikN = 1;
      while (licznikM <= m)
      {
      while (licznikN <= n)
      {
      std::cin >> array[licznikM,licznikN];
      licznikN++;
      }
      licznikN = 1;
      licznikM++;
      }// mamy wszystko do wprowadzania danych do dowolnej naszej
      macierzy
      //std::cin >> k;
      int i;

      float c[n];
      float b[n];
      while (i<=n)
      {
      if ( i%2 == 1) b[i] = 1/i;
      else b[i] = 1/(i*i/2);

      i++;
      }

      licznikM=1;
      i=1;
      c[i]=0;
      float l;

      while (i <= n)
      {
      c[i]=l;
      while (licznikM <= m)
      {
      l=array[i,m]*b[m];
      licznikM++;
      }
      i++;
      } l=c[i];

      licznikM=1;
      i=1;

      while (i <= n)
      {
      std::cout << c[i] << " | ";
      i++;
      }
      std::cin >> k;
      }
    • Gość: + zadanie 3 IP: *.core.lanet.net.pl / *.core.lanet.net.pl 16.07.05, 19:23
      Program powinien wyliczać ilość dźwięcznych i bezdźwięcznych liter w podanym
      stringu.
      Przykład:
      jeśli mamy tekst „he_is_my_friend” to wydrukować
      „tekst ma 5 dźwięcznych i 7 bezdźwięcznych liter”.

      Rozwiazanie:
      #include <iostream>
      #include <string>
      int main()
      {
      int k=0;
      char m;
      m = '_';
      char arr[8]={'p','t','k','s','ś','c','ć','f'};
      int licznik_tabeli;
      int sumabez;
      sumabez = 0;
      int suma = 0;
      using namespace std;
      string name;//można od razu przypisac np. „Smith”
      cout << "\nPodaj imie\n";
      cout << suma;
      cout << sumabez;
      cin >> name;


      for(int i=0; i<name.length(); i++)
      {
      if (name[i]==m)
      { k++;}

      int n = i+1;
      cout << "\n" <<n << "-litera to " << name[i] << "\n" ;


      {

      for (licznik_tabeli=0; licznik_tabeli<7;
      licznik_tabeli++ )
      {
      if (arr[licznik_tabeli] == name
      [i])
      sumabez = sumabez++;



      }


      }

      }
      suma=name.length()-sumabez-k;
      cout << "\n" <<"suma liter dzwiecznych= " << suma << "\n" ;
      cout << "\n" <<"suma liter bezdzwiecznych= " << sumabez << "\n";

      cin >> k;
      return 0;
      }
    • Gość: + zadanie 4 IP: *.core.lanet.net.pl / *.core.lanet.net.pl 16.07.05, 19:24
      Program powinien wyliczać ilość trzypozycyjnych całkowitych liczb, które nie
      mieszczą jednakowych cyfr, oraz wyświetlać pierwsze i ostatnie 20 liczb oraz
      odpowiednie komentarze.

      Przykład:
      pierwsze 10 liczb 
      012, 013, 014, 015, 016, 017, 018, 019, 021

      Rozwiazanie:
      #include <cstdlib>
      #include <iostream>

      using namespace std;

      int main(int argc, char *argv[])
      {

      int i;
      int j,l,m; // dotyczy liczb od 10 do 99
      int n,o,p,s; // dotyczy liczb od 99 - 999
      float k,r;
      int z=0;

      for (i=10; i<99 && z<20;i++)
      {
      if (10<i<99)
      {
      m=0;
      int j=i/10; //j dziesiętna liczba
      k=i%10; //k jest liczbą jednostkową
      }
      if (m!=j && m!=k && j!=k)
      {
      cout << m << i << endl;
      z++;
      }
      }
      z=0;
      for (i=999; i>99 && z<20 ;i--)
      {
      o=i-((int (i/100))*100); // o jest liczba
      jedności i dziesiętnch
      p=i/100; // p jest setną
      //cout << p << "to jest setna";
      r=o%10; // jednostkowa
      //cout << r << "to jest jednostkowa" << endl;
      s=(i/10)%10; // dziesiętna
      //cout << s << "to jest dziesietna" << endl;
      if (p!=s && p!=r && r!=s)
      {
      cout << p << s << r << endl;
      z++;
      }


      }




      system("PAUSE");
      return EXIT_SUCCESS;
      }
    • Gość: + zadanie 5 IP: *.core.lanet.net.pl / *.core.lanet.net.pl 16.07.05, 19:24
      Program powinien wyliczać perwiastki równania f( x ) = 0 w przedziale (a,b)
      metodą prostej iteracji xk+1= ( xk ). Oznaką zakończenia iteracji jest
      warunek | xk+1 - xk |  eps. Pierwsze przybliżenie x0 wybierać z przedziału
      (a,b). Jeśli warunek |xk+1 - xk |  eps nie spełnia się po wyznaczonej ilości
      kroków k to podać odpowiedni komunikat i wybrać nowe pierwsze przybliżenie x0 .
      Przykład:dla równania f( x ) =x2-c = 0 metoda prostej iteracji ma algorytm
      xk+1= x2k + xk -c.
      Program skonstruować z wykorzystaniem odpowiednich funkcji.

      Rozwiaznie:
      #include <cstdlib>
      #include <iostream>
      #include <cmath>
      using namespace std;

      const float eps=0.1;
      double a, b, c, x, x0, xn, xk;
      int krokstop, k;


      int main(int argc, char *argv[])
      {

      cout << "Podaj przedział : (a,b) \n a -->";
      cin >> a;
      cout << "b -->";
      cin >> b;
      cout << "podałeś przedział (" << a << "," << b << ")\n";

      krokstop = 15;
      c = 0.5;
      if (b<a) x0 = (((a - b)/2)+b);
      else x0 = (((b - a)/2)+a);

      cout << "Ustalamy X0 = " << x0 << "\n";

      xk = x0;
      xn = xk*xk + xk + c;

      // while (fabs(xn - xk)< eps )
      // {


      while (krokstop!=0)
      {
      cout << "|" << xn << " - " << xk << "|\n";

      if (fabs(xn - xk)< eps)
      {
      krokstop = 1;
      cout << " jest spełnione |Xn+1 - Xn| < eps ";

      }
      xk = xn;
      xn = xk*xk + xk - c;


      krokstop--;
      }


      // }

      system("PAUSE");
      return EXIT_SUCCESS;
      }
    • Gość: + zadanie 6 IP: *.core.lanet.net.pl / *.core.lanet.net.pl 16.07.05, 19:25
      Napisać program do obsługi konta bankowego który ma trzykrotnie sprawdzać prawo
      dostępu klienta do konta poprzez kod z liter i cyfr oraz wypełniać na jego
      życzenie następne czynności: wpłaty na rachunek; wypłaty z rachunku;
      sprawdzanie sumy rachunku.
      Po każdej operacji wpłaty lub wypłaty pieniędzy program powinien obliczać sumę
      rachunku i zawiadamiać o tym klienta.
      Program skonstruować z wykorzystaniem odpowiednich funkcji.

      Rozwiazanie:
      #include <cstdlib>
      #include <iostream>

      using namespace std;

      int Wplata, Wyplata, Suma, Stan;

      void DaneKlienta(int DaneNr)
      {
      //dane klienta
      switch(DaneNr)
      {
      case 1: cout << "ZAPAMIETAJ DANE KLIENTA:" << endl; break;
      case 2: for(int j=0; j<80; j++) cout << "-"; break;
      case 3: cout << "Imie: Jan" << endl; break;
      case 4: cout << "Nazwisko: Kowalski" << endl; break;
      case 5: cout << "Pin kod: 1234" << endl; break;
      case 6: cout << "Nr dowodu os: dd123456789" << endl; break;
      default :cout << DaneNr;
      }
      }

      void Rachunek(int liczba)
      {
      //obliczenia
      switch(liczba)
      {
      case 1: cout << "Stan rachunku 1000zl"; break;
      case 2: Stan = Stan + Wplata; break;
      case 3: Stan = Stan - Wyplata; break;
      case 4: cout << ""; break;
      case 5: cout << ""; break; //puste gdyby ktos mial atak i chcial cos
      dodac
      case 6: Stan;break;
      default :cout << liczba;
      }
      }

      // menu mozliwosci
      void MenuOperacji(int MenuO)
      {
      switch(MenuO)
      {
      case 0: cout << "0 - Wyjscie z programu\n-------------------------" <<
      endl; break;
      case 1: cout << "1 - Pokaz stan rachunku." << endl; break;
      case 2: cout << "2 - Chce wplacic pieniadze." << endl; break;
      case 3: cout << "3 - Chce wyplacic pieniadze." << endl; break;
      default : cout << MenuO;
      }
      }

      int main(int argc, char *argv[])
      {
    • Gość: + zadanie 7 IP: *.core.lanet.net.pl / *.core.lanet.net.pl 16.07.05, 19:26
      Napisać program który wyświetla na ekranie komputera „formę” mnożenia dwóch
      liczb całkowitych, wprowadzonych z klawiatury
      Przykład:
      624
      503
      1872
      3120
      313872

      Rozwiazanie:
      #include <iostream>
      #include <string>
      #include <iomanip>

      using namespace std; // To dodaj w tamtych programach

      long l,k,h;

      void swap(int& pierwsza, int& druga); // Funkcje
      void rozbicie(int* rozb);


      int main(int argc, char *argv[])
      {

      int a,b,mnozenie1,mnozenie2,mnozenie3,temp=0,tak;

      cout << "Podaj liczbę 1: ";
      cin >> a;
      cout << "Podaj liczbę 2: ";
      cin >> b;

      if (a<b) { // Jezeli pierwsza liczba mniejsza niz 2 to zamien miejscami
      swap(a,b);
      tak=1; // Zmianna ktora potem nam przyda sie w wyniku
      }

      rozbicie(&b); // Rozbicie wiekszej liczby na cyfry

      mnozenie1=l*a; // Dzialanie pierwsza cyfra * liczba
      mnozenie2=k*a; // Dzialanie druga cyfra * liczba
      mnozenie3=h*a; // Dzialanie trzecia cyfra * liczba

      // system("clear"); // Czyszczenie ekranu pod Unixem

      cout << "\n\n";
      cout << setw(10) << a << "\n";
      cout << setw(6) << "x" << setw(4) << b << "\n";
      cout << setw(10) << "-----" << "\n";
      cout << setw(10) << l*a << "\n";
      if (tak==1) { // Jezeli zamienilismy liczby, wyniki tez musimy zamienic
      if (mnozenie3!=0) {
      cout << setw(8) << mnozenie3 << "\n"; }
      if (mnozenie2!=0) {
      cout << setw(9) << mnozenie2 << "\n"; }
      } else {
      if (mnozenie2!=0) {
      cout << setw(9) << mnozenie2 << "\n"; }
      if (mnozenie3!=0) {
      cout << setw(8) << mnozenie3 << "\n"; }
      }
      cout << setw(10) << "------" << "\n";
      cout << setw(10) << a*b << "\n";
      cout << "\n\n";


      system("PAUSE");
      return EXIT_SUCCESS;
      }

      void swap(int& pierwsza, int& druga) // Kody funkcji
      {
      int temp = pierwsza;
      pierwsza = druga;
      druga = temp;
      }

      void rozbicie(int* rozb)
      {
      h = (*rozb/100);
      k = ((*rozb-(h*100))/10);
      l = *rozb-((k*10)+(h*100));
      }

      Program skonstruować z wykorzystaniem odpowiednich funkcji.

Nie pamiętasz hasła

lub ?

 

Nie masz jeszcze konta? Zarejestruj się

Nakarm Pajacyka