Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Dwa zadania - 1. źle oblicza; 2.czy potęga liczby 2...

Ostatnio zmodyfikowano 2008-09-06 15:58
Autor Wiadomość
siemes
Temat założony przez niniejszego użytkownika
Dwa zadania - 1. źle oblicza; 2.czy potęga liczby 2...
» 2008-09-03 10:01:16
otóż otrzymałem do zrobienia 2 zadania w C++:
1) napisać program, który pyta o ilość liczb (n), potem prosi o wpisanie z klawiatury tych liczb i podaje ile z nich jest podzielnych przez 3, a ile przez 7. np wpisujemy
n=4
3
21
6
8
liczb podzielnych przez 3 jest : 3
liczb podzielnych przez 7 jest : 1

podjąłem próbę zrobienia dla 3 i udało mi się stworzyć coś takiego
C/C++
#include <iostream>
#include <conio.h>
#include <math.h>
#include<stdlib.h>
using namespace std;
int main()
{
    int n, i, k = 0, z;
    cout << "Ile liczb chcesz wpisac? \n";
    cin >> n;
    int ciag[ n ];
    cout << "podaj te liczby \n";
    for( i = 0; i < n; i++ )
         cin >> ciag[ n ];
   
    for( ciag[ n ] % 3 == 0; i < n; i++ )
    {
        z = k + 1;
    }
    cout << "Liczb podzielnych przez 3 jest " << z << ".";
    getch();
    return( 0 );
}
TYLKO PROBLEM JEST W TYM żE TEN PROGRAM NIE DODAJE MI TYCH LICZB, PRóBOWAłEM RóżNYCH KOMBINACJI, ALE KOńCZYłY SIę ONE FIASKIEM (RAZ BYłO TAK żE WYPISAł DOBRZE ILOść ALE WYPISAł MI TO KILKA RAZY, A MA BYĆ RAZ :/)

2. Napisać czy podana liczba jest potęgą liczby 2 jeżeli tak to którą.
Tu niestety nie udało mi się nic stworzyć, mogę jedynie się domyślać że trzeba będzie użyć polecenia pow(.,.) lub kombinować z 2^n, ale nie mam zupełnie pomysłu jak to zrobić żeby to sprawdzał i w dodatku podawał którą jest potęgą.

Z góry dziękuję za pomoc.
P-1470
Pito
» 2008-09-03 11:21:45
Zdeczka przerobiłem twój programik ale chyba domyślisz się o co chodzi

C/C++
#include <iostream>
#include <conio.h>
#include <math.h>
using namespace std;
int main()
{
    int n[ 9 ];
    int ilosc_n = 0;
    cout << "podaj ilość liczb : ";
    cin >> ilosc_n;
   
    //pobieranie do tablicy
    for( int i = 1; i <= ilosc_n; i++ )
    {
        cout << "liczba " << i << " = ";
        cin >> n[ i ];
    }
   
    //wyszukiwanie liczby podzielnej przez 3
    for( int i = 1; i <= ilosc_n; i++ )
    {
        if( n[ i ] % 3 == 0 )
             cout << endl << "liczby podzielne przez 3 to : " << n[ i ] << endl;
       
    }
   
    //lwyszukiwanie potegi liczby 2
    for( int i = 1; i <= ilosc_n; i++ )
    {
        for( int potega = 0; potega < 60; potega++ )
        {
            if( n[ i ] == pow( 2, potega ) )
            {
                cout << "potegom liczby 2 jest : " << n[ i ] << endl;
            }
        }
    }
    getch();
    return( 0 );
}
P-1471
DejaVu
» 2008-09-03 11:47:01
C/C++
#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
    int n, liczba, trzy = 0, siedem = 0;
    cout << "Ile liczb chcesz wpisac? \n";
    cin >> n;
    cout << "podaj te liczby \n";
    for( int i = 0; i < n; i++ )
    {
        cin >> liczba;
        if( liczba % 3 == 0 ) trzy++;
       
        if( liczba % 7 == 0 ) siedem++;
       
    }
    cout << "Liczb podzielnych przez 3 jest " << trzy << "." << endl;
    cout << "Liczb podzielnych przez 7 jest " << siedem << "." << endl;
    getch();
    return( 0 );
}

/edit:
Sprawdzanie czy liczba jest potęgą:
C/C++
int potega =( int ) pow( liczba, 0.5f );
if( pow( 2, potega ) == liczba )
{
    cout << "Liczba " << liczba << " jest " << potega << " potega liczby 2." << endl;
}
/edit2:
Powyższy fragment do sprawdzania czy liczba jest potęgą działa prawidłowo wtedy i tylko wtedy, gdy z liczby można wyciągnąć pierwiastek. Przykładowo:
4,16,64,256... itd
Nie zadziała dla:
2,8,32,128... itd
Poprawić można kod następująco:
C/C++
int potega =( int ) pow( liczba, 0.5f );
if( pow( 2, potega ) == liczba )
{
    cout << "Liczba " << liczba << " jest " << potega << " potega liczby 2." << endl;
} else
if( pow( 2, potega + 1 ) == liczba )
{
    cout << "Liczba " << liczba << " jest " << potega + 1 << " potega liczby 2." << endl;
}



P-1472
siemes
Temat założony przez niniejszego użytkownika
dziękuję
» 2008-09-03 11:50:55
Dziękuję Panie Piotrze :) o to chodziło
P-1473
siemes
Temat założony przez niniejszego użytkownika
zad
» 2008-09-03 20:03:33
pojawił się problem dla modyfikacji zadania, które zostało zrobione powyżej postaram się napisać to w miarę klarownie. Chciałbym zrobić żeby program wskazał mi na koniec liczby jednocześnie podzielne przez 3 i 7 tzn.
miałoby to wyglądać następująco:
ilość wbijanych liczb
wbijane liczby
liczby podzielne przez 3 i 7 to : ...

przy czym zrobiłem program
C/C++
#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
    int n, liczba;
    cout << "Ile liczb chcesz wpisac? \n";
    cin >> n;
    cout << "podaj te liczby \n";
    for( int i = 0; i < n; i++ )
    {
        cin >> liczba;
        if( liczba % 3 == 0 && liczba % 7 == 0 )
             cout << "liczba " << liczba << " jest podzielna przez 3 i 7 \n";
       
    }
    getch();
    return( 0 );
}

i wyświetla mi bezpośrednio pod liczbą że jest ona podzielna przez 3 i 7, a chciałbym na końcu zebrać te liczby. np wbiłem liczby 12, 21, 9, 42 i w moim programie wygląda to następująco
12
21
liczba 21 jest ....
9
42
liczba 42 jest ...

a chciałbym żeby to wyglądało
12
21
9
42
liczby podzielne przez 3 i 7 to : 21, 42

Proszę o pomoc

P-1480
DejaVu
Liczby podzielne przez 3 i 7
» 2008-09-03 20:12:32
Liczby podzielne przez 3 i 7
C/C++
#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
    int n, liczba, trzy = 0, siedem = 0;
    cout << "Ile liczb chcesz wpisac? \n";
    cin >> n;
    int liczby[ n ];
    int uzyto = 0;
    cout << "podaj te liczby \n";
    for( int i = 0; i < n; i++ )
    {
        cin >> liczba;
        if( liczba % 3 == 0 ) trzy++;
       
        if( liczba % 7 == 0 ) siedem++;
       
        if( liczba % 3 == 0 && liczba % 7 == 0 )
        {
            liczby[ uzyto ] = liczba;
            uzyto++;
        }
    }
    cout << "Liczb podzielnych przez 3 jest " << trzy << "." << endl;
    cout << "Liczb podzielnych przez 7 jest " << siedem << "." << endl;
    cout << "Liczby podzielne przez 3 i 7: ";
    if( uzyto > 0 )
    {
        for( i = 0; i < uzyto; i++ ) cout << liczby[ i ] << ",";
       
    } else cout << "brak liczb";
   
    cout << endl;
    getch();
    return( 0 );
}
P-1482
siemes
Temat założony przez niniejszego użytkownika
jeszcze pytanie
» 2008-09-05 16:38:51
Jest zadanie żeby użytkownik podał 20 małych liter a,b i c i żeby program policzył których jest najmniej a których najwięcej. I mam
C/C++
#include <iostream>
#include <conio.h>
using namespace std;

int main()
{
    cout << "podaj 20 malych liter sposrod a,b i c " << endl;
    int j = 1, a = 0, b = 0, c = 0, i, max = 0, min;
    while( j )
    {
        if( j == 10 ) break;
       
        j = getc( stdin );
        if( j == 97 ) a++;
        else
             if( j == 98 ) b++;
        else
             if( j == 99 ) c++;
       
    }
   
    min = a;
   
    cout << "Liter a jest " << a << endl;
    cout << "Liter b jest " << b << endl;
    cout << "Liter c jest " << c << endl;
   
    for( i = 1; i <= 3; i++ )
    {
        if( a > max )
             max = a;
        else
        if( a < min )
             min = a;
       
        if( b > max )
             max = b;
        else
        if( b < min )
             min = b;
       
        if( c > max )
             max = c;
        else
        if( c < min )
             min = c;
       
    }
   
    cout << "Najwiecej (abc) jest liter: " << endl;
    if( max == a ) cout << "a";
   
    if( max == b ) cout << "b";
   
    if( max == c ) cout << "c";
   
    cout << endl;
   
    cout << "Najmniej (abc) jest liter: " << endl;
    if( min == a ) cout << "a";
   
    if( min == b ) cout << "b";
   
    if( min == c ) cout << "c";
   
    cout << endl;
    getch();
    return( 0 );
}

i wszystko działa ładnie tyle że mogę wpisać dowolną ilość liter. gdzie i co wstawić żeby program się kończył po wpisaniu złej ilości liter lub złych liter.

A 2 pytanie odnosi się do rzeczy już tu zrobionej a mianowicie czy dana liczba jest potęgą liczby 2, jeśli tak to którą. Wzór który został podany wyżej mi nie działa (chyba że jest coś źle wbite) a mam zrobione tyle

C/C++
#include <iostream>
#include <conio.h>
#include <math.h>
using namespace std;
int main()
{
    int liczba;
    cout << "podaj liczbe \n";
    cin >> liczba;
    int potega =( int ) pow( 0.5f, liczba );
    if( pow( 2, potega ) == liczba )
    {
        cout << "Liczba " << liczba << " jest " << potega << " potega liczby 2." << endl;
    }
    else cout << "Liczba " << liczba << " nie jest potega liczby 2." << endl;
   
    getch();
    return( 0 );
}
Proszę o pomoc
P-1492
DejaVu
» 2008-09-06 15:22:39
Nie dawaj ciągle nowych problemów w jednym temacie bo nie chce mi się na nie odpowiadać. Powstaje przez to bałagan na forum.

/edit:
Co do potęgi:
C/C++
#include <iostream>
#include <conio.h>
int CzyPotegaLiczbyDwa( int liczba )
{
    int potega = 0;
    if( liczba <= 0 ) return - 1;
   
    while( liczba > 1 )
    {
        if( liczba % 2 != 0 ) return - 1;
       
        liczba /= 2;
        potega++;
    }
    return potega;
   
}

using namespace std;
int main()
{
    int liczba;
    cout << "podaj liczbe \n";
    cin >> liczba;
    int potega = CzyPotegaLiczbyDwa( liczba );
    if( potega !=- 1 )
    {
        cout << "Liczba " << liczba << " jest " << potega << " potega liczby 2." << endl;
    }
    else cout << "Liczba " << liczba << " nie jest potega liczby 2." << endl;
   
    getch();
    return( 0 );
}
/edit2:
Drugie rozwiązanie potęgi z wykorzystaniem poprzedniego rozwiązania:
C/C++
#include <iostream>
#include <conio.h>
#include <math.h>

using namespace std;
int main()
{
    int liczba;
    cout << "podaj liczbe \n";
    cin >> liczba;
    int potega =( int ) pow( liczba, 0.5f );
    if( pow( 2, potega ) == liczba )
    {
        cout << "Liczba " << liczba << " jest " << potega << " potega liczby 2." << endl;
    } else
    if( pow( 2, potega + 1 ) == liczba )
    {
        cout << "Liczba " << liczba << " jest " << potega + 1 << " potega liczby 2." << endl;
    } else
    {
        cout << "Liczba " << liczba << " nie jest potega liczby 2." << endl;
    }
   
    getch();
    return( 0 );
}
P-1502
« 1 » 2
  Strona 1 z 2 Następna strona