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

Pytanie o możliwość ominięcia tablicy.

Ostatnio zmodyfikowano 2013-05-17 19:18
Autor Wiadomość
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)

C/C++
#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;
}






P-83115
pekfos
» 2013-05-16 20:21:43
C/C++
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.
P-83117
Arturrostrzalk
Temat założony przez niniejszego użytkownika
.
» 2013-05-16 20:34:18
czemu niepoprawne?

a tablice nie wymagają conio.h?
P-83119
pekfos
» 2013-05-16 20:35:54
czemu niepoprawne?
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).
P-83120
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.

C/C++
#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;
}

P-83124
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).
P-83125
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ć...
P-83127
pekfos
» 2013-05-17 14:13:56
C/C++
petla
{
    wczytaj;
   
    if( pasuje )
         wypisz;
   
}
P-83151
1 « 2 » 3
Poprzednia strona Strona 2 z 3 Następna strona