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

Podstawowe operacje na plikach

Odpowiedz Nowy wątek
2019-01-04 00:42

Rejestracja: 1 rok temu

Ostatnio: 1 rok temu

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 !!!

edytowany 1x, ostatnio: kq, 2019-01-04 00:46

Pozostało 580 znaków

kq
2019-01-04 00:48
kq
Moderator C/C++

Rejestracja: 6 lat temu

Ostatnio: 2 minuty temu

Lokalizacja: Szczecin

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


Pozostało 580 znaków

2019-01-04 02:08

Rejestracja: 6 lat temu

Ostatnio: 11 miesięcy temu

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 :)

edytowany 2x, ostatnio: TobiPL, 2019-01-04 02:11
Input, Step: - jak to wygenerowałeś? :D - youmound 2019-01-04 08:16

Pozostało 580 znaków

Odpowiedz

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