czy mozna zapisac ponizszy kod bez uzycia tablic ?

0

Czesc, napisalem taki kod z wykorzystaniem tablicy jednowymiarowej;

/*
Napisz petle for, ktora drukuje ciag wartosci typu double w postaci 0.1,-0.2,0.3,-0.4...-2.0;
*/

#include <iostream>

using namespace std;

int main()
{
	
	double liczba_dod = 0.1;
	double liczba_uje = -0.2;
	double Tab_a[20];
	cout << "Petla drukuje drukuje ciag wartosci typu double w postaci 0.1,-0.2,0.3,-0.4...-2.0" << endl;
	for (int i = 0; i < 20; i = i+2)
	{
		Tab_a[i] = liczba_dod;
		liczba_dod += 0.2;
	}
	for (int i = 1; i < 20; i = i+2)
	{
		Tab_a[i] = liczba_uje;
		liczba_uje -= 0.2;
	}
	cout << endl;
	for (int i = 0; i < 20; i++)
	{
		cout << Tab_a[i] << " ";
	}
	
	system("pause");
	return 0;
}

Zastanawiam sie czy mozna to zadanie rozwiazac bez wykorzystania tablicy.

2

Ależ oczywiście:

cout << "0.1" << "-0.2" << "0.3" << "-0.4" << ...

Spróbuj do tego podejść z wykorzystaniem jednej zmiennej ;-)

0
Patryk27 napisał(a):

Dzieki ! ;) W zadaniu mam napisac petle, dlatego sie zastanawiam czy nie ma moze mozliwosci napisania jednej petli ktora by nie potrzebowala do tego tablicy.

4

Zauważ, że w dowolnej jednostce czasu operujesz tylko na jednym elemencie tablicy - nigdy w tej samej chwili nie potrzebujesz znać innych, stąd tak: można się tej tablicy pozbyć.

for (int i = 0; i < 20; i += 1) {
  double n = 0.1 * i;

  if (i % 2 == 0) {
    n *= -1;
  }

  cout << n << " ";
}
3
for (int i = 0; i < 20; i = i+2) {
    std::cout << (liczba_dod + i * 0.1) << ' '
              << -(liczba_dod + (i + 1) * 0.1) << ' ';
}
2

Z dodatkową biblioteką:

#include <cmath>  
...
for (int i = 0; i < 20; i++) {
    std::cout <<  0.1 * (i + 1) * std::pow(-1, i) << " ";
}
0
Patryk27 napisał(a):

Dziekuje !!

Zrobilem mala poprawke, bo ciag ma zaczynac sie na 0.1 i konczyc na 2.0.


int main()
{
	for (int i = 1; i < 21; i++)
	{
		double n = 0.1 * i;

		if (i % 2 == 0)
		{
			n = n * -1;
		}

		cout << n << ",";
	}
	
	system("pause");
	return 0;
}
1

Moze nie potrzebnie mecze ten watek ale na podstawie waszych propozycji zapisu napisalem cos takiego bez uzycia modulo czy tez podnoszenia do potegi. Po prostu wykorzystalem mnozenie.

	int x = 1;
	for (double i = 0.1; i <= 2.1; i+=0.1)
	{
		cout << i * x << " ";
		x *= -1;
	}

Dzieki jeszcze raz za pomoc !!!

1 użytkowników online, w tym zalogowanych: 0, gości: 1