Wątek przeniesiony 2019-01-07 12:59 z Newbie przez kq.

Podstawowe operacje na plikach

0

Witam potrzebuje pomocy w napisaniu programu

napisz program wykonujacy operacje:

wpisuje do pliku tekstowego kolejne liczby calkowite z przedzialu od 1 do 100

wypisuje tylko te liczby zapisane w pliku ktore sa wieksze od 50

oblicza i wypisuje srednia arytmetyczna liczb zapisanym w pliku ktore sa mniejsze od 11

przepisuje do nowego pliku wartosci ktore nie sa podzielne przez 3

wypisuje liczby przepisane do nowego pliku

#include <iostream>
#include <fstream>

using namespace std;

void Wypisz()
{
	for (int i = 1; i < 101; i++)
	{
		cout << i << endl;
	}
}

int main()
{
	ofstream mojplik;
	mojplik.open("test1.txt");
	mojplik << Wypisz;
	mojplik.close();
}


napisałem coś takiego ale w notatniku zamiast liczb wyświetliło się to : "00FB108C"

nie wiem w czym tkwi problem i prosze o pomoc w napisaniu reszty podpunktow bardzo dziekuje !!!

1

Zapisujesz do pliku adres funkcji, a nie jej wynik. Twoja funkcja nic nie zwraca (void jako typ zwracany), zmień to, lub przyjmuj plik przez referencję i operuj na nim wewnątrz funkcji

0
1. Wpisuje do pliku liczby z przedziału 1-100
for(int i=0;i<100;i++) // Nie lubię jak i zaczyna się
	plik << i+1;       // Od innej wartości niż 0 :P



2. Wpisuje do pliku liczby większe niż 50
for(int i=0;i<100;i++)
	if(i > 50) plik << i+1; else continue;



3. Wpisuje do pliku średnią liczb mniejsze niż 11
- Nie do końca rozumiem ten pkt.
- To liczby mają być mniejsze od 11 czy średnia?
	int Sum=0;
for(int i=0;i<100;i++){
	if(i<11){
		Sum+=i;          // Nie wiem czy poprawnie
	plik << Sum / i+1;   // Obliczam tu średnią xD
	}else{               // Nie chce mi się testować :)
	plik << i+1;         // To twoje zadanie xDD
	}
}


4. Wpisuje do pliku tylko wartości podzielne przez 3
for(int i=0;i<100;i++)
	if((i+1)%3==0)plik << i+1;

Paczej:
 a - ( ( a / b ) * b )
Przykład:
 Input: a = 14; b = 3;
  ::Step 1: 14 - ( ( 14 / 3 ) * 3 )
  ::Step 2: 14 - ( 4 * 3 )
  ::Step 3: 14 - 12
  ::Step 4: 2
 Output: 2

W taki sposób można też rozwiązać zadanie :P
Jeśli takie działanie zwróci 0 to wiadomo że
liczba będzie podzielna przez 3 bez reszty

Inny przykład:
 Input: a = 8; b = 4;
  ::Step 1: 8 - ( ( 8 / 4 ) * 4 )
  ::Step 2: 8 - ( 2 * 4 )
  ::Step 3: 8 - 8
  ::Step 4: 0
 Output: 0
Więc jak wiadomo 8 jest podzielne przez 4
i program zwrócił nam 0 więc zgadza się :)


Chciałem to wyjaśnić ponieważ sam wolę jak 
ktoś wie dokładnie jak to działą od samego
poczaku zamiast ślepo używać "Czarnych Skrzynek"


Znak % to taki sam znak jak - + * / 
Znak % zwraca resztę z dzielenia czyli
robi powyższy przykład za jednym razem

 int a = b&c; <-- Edit2 wiem wiem napisałem & zamiast % często mi się to zdarza :>

//Edit:
Tobi umie czytać ze zrozumieniem xDDD

które NIE są podzielne przez 3 :)
ahh ile to ja razy popełniłem przez to słowo błąd xD

if(i%3==0) -> Jeśli ma być podzielna
if(i%3!=0) -> Jeśli ma być NIE podzielna :3

The Meow. !

//Edit2:
Może kiedyś nauczę się poprawiać błędy zanim wyślę posta :)

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