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

[C++] Problem z wyświetlaniem wyników

Ostatnio zmodyfikowano 2017-09-07 21:46
Autor Wiadomość
Khyho
Temat założony przez niniejszego użytkownika
[C++] Problem z wyświetlaniem wyników
» 2017-09-01 09:21:47
Cześć,

szukam pomocy w rozwiązaniu następującego problemu.
Stworzyłem program, którego zadaniem jest znalezienie liczb, które są podzielne przez wybraną liczbę i jednocześnie niepodzielne przez inną. Umieściłem go w pętli, bo chce mieć możliwość wykonać zadanie kilka razy. Na początku podaje wszystkie zmienne, program to przelicza i wypluwa wynik. Do tego miejsca jest ok. Mój problem polega na tym, że nie wiem jak zrobić by program nie działał w sposób: podanie wartości zmiennych - > działanie programu - > wyświetlenie wyników -> podanie wartości zmiennych - > działanie programu - > wyświetlenie wyników itd. w zależności od liczby zadeklarowanych pętli, tylko w sposób: podanie wartości zmiennych ->działanie programu -> podanie wartości zmiennych ->działanie programu...-> wyświetlenie wyników.
Udało mi się w innym programie uzyskać coś takiego zapisując wyniki do tablicy i na końcu ją wyświetlając ale wtedy była pojedyncza wartość przy każdej pętli, a tutaj mam przy jednej pętli kilka wartości.
P-164495
Monika90
» 2017-09-01 10:01:08
Chyba najprościej będzie zapisać wyniki do strumienia w pamięci i na koniec wyświetlić jego zawartość, co w skrócie wyglądałoby tak
C/C++
std::ostringstream out;
while( p() )
{
    out << x << ',' << y << ',' << z << '\n';
}

std::cout << out.str();

A jeżeli to jest zadanie ze SPOJA to nie jest to potrzebne.
P-164496
latajacaryba
» 2017-09-01 11:56:12
Udało mi się w innym programie uzyskać coś takiego zapisując wyniki do tablicy i na końcu ją wyświetlając ale wtedy była pojedyncza wartość przy każdej pętli, a tutaj mam przy jednej pętli kilka wartości.

Więc, jeśli dobrze zrozumiałem, to warto by tu zastosować tablicę dwuwymiarową, gdzie na każdy wiersz przypada inna pętla.
P-164500
Khyho
Temat założony przez niniejszego użytkownika
» 2017-09-01 22:15:10
Kod mojego zadania wygląda obecnie tak
C/C++
#include <iostream>

using namespace std;
int liczba = 1, tak, nie, zakres;
int interesujaca;
int liczbaProb, x = 1;
int tablica[ 10000 ];


int main()
{ cin >> liczbaProb;
    do
    {
        cin >> tak >> nie >> zakres;
        for( liczba = 1; liczba <= zakres; liczba++ )
        {
            if( liczba % tak == 0 && liczba % nie != 0 )
            { tablica[ interesujaca ] = liczba;
            }
        }
        x++;
    } while( x <= liczbaProb );
   
    return 0;
}

Jest to zadanie ze spoja, a dokładnie http://pl.spoj.com/problems/PP0601B/
Nie mam pomysłu co zrobić by dobrze wyniki się wyświetlały i by zaliczyło zadanie. Pomożecie jak to ugryźć?
P-164520
maly7
» 2017-09-01 22:30:27
Przede wszystkim:
tablica[   interesujaca   ]   =   liczba;

Zmienna interesujaca nie ma wartości.
Czego nie wiesz z wyswiwtlaniem? Lepiej zrób to może na wektorze, tablica 100000 elementów jest niemała.
A wyświetlasz po prostu liczby z wektora.

Dodatkowo masz zła kolejność wczytywania.
P-164521
mateczek
» 2017-09-01 22:37:30
jeśli to zadanie ze spoja to nie przejmuj się tym wyświetlaniem. Nie to jest problemem (Monika90 Ci już to napisała wyżej!!!)
Tester twojego programu ma dwa oddzielne strumienie. Dane wejściowe trafiają gdzieś indziej niż twój Output.
P-164522
Luq
» 2017-09-01 22:38:10
Zapewne nie zalicza ci tego zadania, bo przekraczasz limit czasu. Twój algorytm nie jest optymalny. Podpowiem, że nie musisz sprawdzać każdej liczby z przedziału [1, zakres], żeby to rozwiązać
P-164523
mateczek
» 2017-09-01 23:03:06
@up źle wczytuje dane. Nie w tej kolejności !!! tablicy nie trzeba. Optymalizacja rzecz jasna do poprawy choć nawet i w takiej nieoptymalnej wersji przechodzi
C/C++
#include <iostream>
using namespace std;
int main() {
    int liczbaProb;
    cin >> liczbaProb;
    while( liczbaProb-- )
    {
        int zakres, tak, nie;
        cin >> zakres >> tak >> nie;
        //dalej kod
    }
}
jeszcze jedna uwaga.
C/C++
liczba <= zakres // samo mniejsze, bez równa !!!
P-164524
« 1 » 2
  Strona 1 z 2 Następna strona