• 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.

42 Warsaw Coding Academy
0 głosów
193 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ź 300 wizyt
0 głosów
4 odpowiedzi 339 wizyt
0 głosów
3 odpowiedzi 291 wizyt

93,383 zapytań

142,382 odpowiedzi

322,539 komentarzy

62,744 pasjonatów

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

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...