[c++] potega liczby

Pawelek91
Użytkownik
Użytkownik
Posty: 56
Rejestracja: 23 lis 2008, o 14:54
Płeć: Mężczyzna
Lokalizacja: Wyszogród
Podziękował: 1 raz
Pomógł: 4 razy

[c++] potega liczby

Post autor: Pawelek91 »

HEj! Od niedawna zacząłem programować i natknąłem się niby na proste zadanie:
Program powinien wypisać na standardowe wyjście kwadrat wejściowej liczby składającej się z n jedynek.
A oto i mój kod:

Kod: Zaznacz cały

#include<cstdio>
using namespace std;
int main()
{
    int c;
    scanf("%d", &c);
    for (int i=1 ; i<=c ; i++)
    {
    int n,w=0;
    scanf("%d", &n);
    for ( ; n>0 ; n--) w=10*w+1;
    int k=w*w;
    printf("%d
", k);
    }
    return 0;
}
Jeżeli ktoś interesuje sie programowaniem to prosiłbym o pomoc dlaczego dla n>6 program sie wysypuje .
Ostatnio zmieniony 3 maja 2009, o 12:19 przez Pawelek91, łącznie zmieniany 2 razy.
robson161
Użytkownik
Użytkownik
Posty: 249
Rejestracja: 18 sty 2009, o 19:10
Płeć: Mężczyzna
Podziękował: 7 razy
Pomógł: 20 razy

[c++] potega liczby

Post autor: robson161 »

tu coś nie pasuje
najpierw musisz pobrać od użytkownika informacje ile wynosi n
a następnie wypisać n*n czyli n^2 i po sprawie
po za tym raczej to nie jest C++ tylko C
Pawelek91
Użytkownik
Użytkownik
Posty: 56
Rejestracja: 23 lis 2008, o 14:54
Płeć: Mężczyzna
Lokalizacja: Wyszogród
Podziękował: 1 raz
Pomógł: 4 razy

[c++] potega liczby

Post autor: Pawelek91 »

To jest c++, ale program powinien dzialac tak:
1. wpisujesz ile razy chcesz liczyc, powiedzmy a
2. wpisujesz n
3. liczysz liczbe w postaci 111...(n jedynek)
4. wypisujesz kwadrat tej liczby
5. liczysz kolejne n, az program wykona sie a-razy
Awatar użytkownika
kuba746
Użytkownik
Użytkownik
Posty: 378
Rejestracja: 10 mar 2009, o 19:28
Płeć: Mężczyzna
Lokalizacja: Jasło
Podziękował: 11 razy
Pomógł: 67 razy

[c++] potega liczby

Post autor: kuba746 »

proponowałbym użyć cout i cin zamiast scanf i printf:P zrobiłbym to jakoś tak:

Kod: Zaznacz cały

#include <iostream>
using namespace std;

unsigned long long potega(int x);
int jedynka(int y);

int main()
{
int n,a,z;
cout << "Ile razy chcesz liczyć" << endl;
cin >> a;

for(int i=0;i<a;i++)
{
cout << endl << "wprowadź liczbę jedynek" << endl;
cin >> n;
z = jedynka(n);
cout << endl << potega(z) << endl;
}
return 0;
}
musisz napisać jeszcze funkcje potęgi i przekształcenia ilości jedynek na liczbę tylu jedynkową
Ostatnio zmieniony 3 maja 2009, o 13:15 przez kuba746, łącznie zmieniany 1 raz.
Pawelek91
Użytkownik
Użytkownik
Posty: 56
Rejestracja: 23 lis 2008, o 14:54
Płeć: Mężczyzna
Lokalizacja: Wyszogród
Podziękował: 1 raz
Pomógł: 4 razy

[c++] potega liczby

Post autor: Pawelek91 »

funkcje scanf i printf sa szybsze niz cin i cout. No ale mi sie wydaje, ze "printf("%d
", w*w)" odpowiada za potege, a "for ( ; n>=0 ; n--) w=10*w+1;" za tworzenie liczby n-razy jedynkowa
Awatar użytkownika
kuba746
Użytkownik
Użytkownik
Posty: 378
Rejestracja: 10 mar 2009, o 19:28
Płeć: Mężczyzna
Lokalizacja: Jasło
Podziękował: 11 razy
Pomógł: 67 razy

[c++] potega liczby

Post autor: kuba746 »

scanf i printf są z tego co mi się wydaje już trochę przestarzałe(ale nie jestem pewien). Skompilowałem for ( ; n>=0 ; n--) w=10*w+1; ale nie daje to liczby n jedynkowej
Pawelek91
Użytkownik
Użytkownik
Posty: 56
Rejestracja: 23 lis 2008, o 14:54
Płeć: Mężczyzna
Lokalizacja: Wyszogród
Podziękował: 1 raz
Pomógł: 4 razy

[c++] potega liczby

Post autor: Pawelek91 »

for ( ; n>=0 ; n--) w=10*w+1;
daje licze n jedynkowa jesli w=0.
Awatar użytkownika
kuba746
Użytkownik
Użytkownik
Posty: 378
Rejestracja: 10 mar 2009, o 19:28
Płeć: Mężczyzna
Lokalizacja: Jasło
Podziękował: 11 razy
Pomógł: 67 razy

[c++] potega liczby

Post autor: kuba746 »

ustawiłem zły typ teraz działa

Kod: Zaznacz cały

#include <iostream>
#include <cstdlib>

using namespace std;

unsigned long long potega(unsigned long long x){
    return(x*x);
}

unsigned long long jedynka(int y){
    unsigned long long w=0;
    for ( ; y>0 ; y--) w=(10*w)+1;
    return(w);
}

int main()
{
    int n,a,z;
    cout << "Ile razy chcesz liczyc" << endl;
    cin >> a;

    for(int i=0;i<a;i++)
    {
        cout << endl << "wprowadz liczbe jedynek" << endl;
        cin >> n;
        z = jedynka(n);
        cout << endl << potega(z) << endl;
    }
    system("PAUSE");
    return EXIT_SUCCESS;
    return 0;
}
A do pytania czemu Ci się wysypywał dla n > 6 to dlatego bo int jest za mały największy typ to unsigned long long
matshadow
Użytkownik
Użytkownik
Posty: 941
Rejestracja: 17 gru 2007, o 21:48
Płeć: Mężczyzna
Lokalizacja: Kingdom Hearts
Podziękował: 6 razy
Pomógł: 222 razy

[c++] potega liczby

Post autor: matshadow »

Jest to zadanie z OPSSa Niestety, twój program nie działa poprawnie, wpisz sobie liczbę jedynek chociażby równe 20 i porównaj wynik z kalkulatorem.
Awatar użytkownika
kuba746
Użytkownik
Użytkownik
Posty: 378
Rejestracja: 10 mar 2009, o 19:28
Płeć: Mężczyzna
Lokalizacja: Jasło
Podziękował: 11 razy
Pomógł: 67 razy

[c++] potega liczby

Post autor: kuba746 »

matshadow, masz racje sprawdziłem. Działa tylko do 10 jedynek zawsze to lepiej niż 6
abc666

[c++] potega liczby

Post autor: abc666 »

Ale przecież to nie na tym polega zadanie, nic nie trzeba potęgować, wystarczy zaobserwować jak zachowuje się ten wynik w zależności od liczby jedynek
ODPOWIEDZ