Arturrostrzalk Temat założony przez niniejszego użytkownika |
Ominięcie tablicy. » 2013-05-16 20:17:50 Teraz mam inne zadanie(a nawet zadania) i można powiedzieć, że na tablicy to działa, ale nie mogę używać <conio.h>, bo nie zaliczę. zrobiłem coś takiego i może ktoś podpowie, jak zrobić to bez tablic? Program musi wypisać ile jest liczb o najmniejszej sumie cyfr i je wypisać. (jeśli są dwie np 212 i 500, to musi wypisać obydwie) #include <iostream> #include <conio.h> using namespace std;
int n; int k, x, a, cz, q, m, z, w; int main()
{ cin >> n; int tab[ n ]; int sum[ n ]; x = 0; for( int i = 0; i < n; i++ ) { k = 0; cin >> a; tab[ i ] = a; while( a != 0 ) { k = k + a % 10; a /= 10; } sum[ i ] = k; } q = 1; m = 0; while( q <= n ) { if( sum[ q ] < sum[ m ] ) { sum[ 0 ] = sum[ q ]; tab[ 0 ] = tab[ q ]; m = 0; for( cz = q; cz > 0; cz-- ) { sum[ cz ] = 999999; tab[ cz ] = 999999; } } else if( sum[ q ] > sum[ m ] ) { sum[ q ] = 999999; tab[ q ] = 999999; } else if( sum[ q ] == sum[ m ] ) { m++; } q++; } cout << m + 1 << endl; w = 0; while( w < n ) { if( tab[ w ] != 999999 ) { cout << tab[ w ] << endl; } w++; } cin.ignore( 2 ); return 0; }
|
|
pekfos |
» 2013-05-16 20:21:43 cin >> n; int tab[ n ]; int sum[ n ]; To jest niepoprawne. jak zrobić to bez tablic? |
Nie da się. Nie wiesz, czy możesz coś wypisać, dopóki nie sprawdzisz wszystkich elementów, więc musisz je zapisywać do tablicy. nie mogę używać <conio.h>, bo nie zaliczę |
To nie używaj. |
|
Arturrostrzalk Temat założony przez niniejszego użytkownika |
. » 2013-05-16 20:34:18 czemu niepoprawne?
a tablice nie wymagają conio.h? |
|
pekfos |
» 2013-05-16 20:35:54 Rozmiar tablicy musi być stałą znaną w czasie kompilacji. a tablice nie wymagają conio.h? |
Oczywiście, że nie.. A co do programu, to przekombinowałeś. Można to zrobić w 30 linijkach (czytelnych). |
|
Arturrostrzalk Temat założony przez niniejszego użytkownika |
. » 2013-05-16 21:54:26 No i jeszcze jeden. W jednym przykładzie przekraczam dopuszczalną wagę programu. Da się to jakość zmniejszyć? Program musi wypisać wszystkie liczby, które mają cyfry uporządkowane rosnąco (np 1579, ale 1557 już nie)Program działa dobrze, ale jest za duży. Na pewno da się to zrobić bez tablic, bo nie mieliśmy jeszcze tablic, a kilka osób już to zrobiło. #include <iostream>
using namespace std;
int y, a, k, x, z, q, f; int n;
int main()
{ int tab[ n ]; cin >> n; for( int i = 1; i <= n; i++ ) { cin >> a; z = a; x = 10; f = 1; while( f != 99 ) { k = z % 10; z = z / 10; if( k > x || k == x ) { f = 99; tab[ i - 1 ] = 0; } if( k < x && z == 0 ) tab[ i - 1 ] = a; if( k < x && z == 0 ) { f = 99; } x = k; } } q = 0; while( q < n ) { if( tab[ q ] != 0 ) { cout << tab[ q ] << endl; } q++; } cin.ignore( 2 ); return 0; }
|
|
pekfos |
» 2013-05-16 21:56:27 Do wyświetlania i pobierania danych użyj biblioteki standardowej C (nagłówek cstdio) Na pewno da się to zrobić bez tablic |
To zadanie da się zrobić bez tablic (których niepoprawnie używasz). |
|
Arturrostrzalk Temat założony przez niniejszego użytkownika |
. » 2013-05-16 22:05:01 Wiem, że do tablic nie używa się zmiennych (choć i tak działa). Możesz mnie jakoś naprowadzić jak to zrobić bez tablic. Dużo nad tym myślałem, ale umiem tylko zrobić, żeby najpierw wczytać liczbę, policzyć, wypisać i dopiero znowu wczytać policzyć, wypisać... |
|
pekfos |
» 2013-05-17 14:13:56 petla { wczytaj; if( pasuje ) wypisz; } |
|
1 « 2 » 3 |