• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Proszę o wyłapanie błędów.

0 głosów
237 wizyt
pytanie zadane 18 sierpnia 2015 w C i C++ przez Devero Początkujący (300 p.)

Witam, proszę Was o wskazówki odnośnie mojego działającego kodu z zadania http://pl.spoj.com/problems/MWPZ06X/. Mam na myśli napisanie mi co zrobiłem źle, nieelegancko itd. Z góry dzięki.

#include <iostream>

using namespace std;
int cykl;
int X[999];
int wynik[999];
int main()
{
    cin>>cykl;
    for(int i=0;i<cykl;i++)
    {
        cin>>X[i];
        for(int j=0;j<cykl;j++)
        {
            wynik[i]=(X[i]*X[i]);

        }
        cout<<wynik[i]<<endl;
    }
    return 0;
}

 

2 odpowiedzi

+1 głos
odpowiedź 18 sierpnia 2015 przez arek01996 Stary wyjadacz (12,080 p.)

Nie potrzebnie tworzysz tablice X do przechowywania dlugości i tak to używasz tylko wewnątrz pętli.

 

Bez tablicy mniej pamięci używasz:

#include <iostream>

using namespace std;

int cykl;
int wynik[999];
int temp;

int main()
{
    cin>>cykl;
    for(int i=0;i<cykl;i++)
    {
        cin>>temp;
        for(int j=0;j<cykl;j++)
        {
            wynik[i]=(temp*temp);

        }
        cout<<wynik[i]<<endl;
    }
    return 0;
}

 

A w ogóle najkrócej to dałoby się w ten sposób napisać, że likwidujesz jedną pętlę i wszystkie tablice spoj i tak sprawdza strumień wyjścia, a nie to, że gdziesz wyniki zapisałeś.

#include <iostream>

using namespace std;

int cykl;
int temp;

int main()
{
    cin>>cykl;
    for(int i=0;i<cykl;i++)
    {
        cin>>temp;
        cout<<temp*temp<<endl;
    }
    return 0;
}

 

+1 głos
odpowiedź 18 sierpnia 2015 przez daan Pasjonat (17,640 p.)
  1. nie potrzebujesz tablic, ponieważ nie musisz zapamiętywać wyników - wystarczy, że je wypiszesz 
  2. druga pętla jest całkowicie zbędna
  3. generalnie jeśli kod działa to jest ok ale przeanalizuj sobie ten:
#include <iostream>

int main()
{
	int t;
	std::cin >> t;
	for(int x, i = 0; i < t; ++i)
	{
		std::cin >> x;
		std::cout << x*x << std::endl;
	}
}

Robi dokładnie to samo :) i chyba większość zadań na spoju nie wymaga używania tablic do zapamiętywania wyniku. Wystarczy zrobić jakieś czynności -> wypisać je na ekran -> zapomnieć wyniki.

Podobne pytania

0 głosów
1 odpowiedź 337 wizyt
0 głosów
4 odpowiedzi 412 wizyt
0 głosów
3 odpowiedzi 355 wizyt

93,631 zapytań

142,553 odpowiedzi

323,056 komentarzy

63,138 pasjonatów

Advent of Code 2025

Top 15 użytkowników

  1. 2658p. - dia-Chann
  2. 2630p. - DziarnowskiJ
  3. 2550p. - raydeal
  4. 2478p. - rucin93
  5. 2361p. - Łukasz Piwowar
  6. 2340p. - CC PL
  7. 2300p. - Adrian Wieprzkowicz
  8. 2117p. - Łukasz Eckert
  9. 2082p. - Michal Drewniak
  10. 1957p. - Maurycy W
  11. 1885p. - robwarsz
  12. 1811p. - rafalszastok
  13. 1600p. - Rafał Trójniak
  14. 1588p. - Tomasz Bielak
  15. 1494p. - ssynowiec
Szczegóły i pełne wyniki

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...