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

Program ma pobrać z pliku liczby i wpisać do następnego największą z tych liczb.

Cloud VPS
+1 głos
749 wizyt
pytanie zadane 22 stycznia 2021 w C i C++ przez BedrisK Użytkownik (600 p.)

Algorytm ma zapisać w największą liczbę z 1 pliku do 2 pliku txt, ale tego nie robi. Tylko wypisuje liczby w kompilatorze.

#include <iostream>
#include <fstream>

using namespace std;

int main()
{
    fstream plik;
    plik.open("liczby.txt", ios::in);
    int d[1000], a=0, max;
    max=d[0];

    if(plik.good()==false)
    {
          cout << "Plik nie jest dostepny!";
    }

    else
    {
          while(!plik.eof())
          {
                    plik >> d[a];
                    a++;
          }
    }

    plik.close();

    for(int i=1; i<1000; i++)
    {
              if(max<d[i])
              {
                        max=d[i];
              }
    }

    for(int j=0; j<a-1; j++)
    {
              cout << d[j] << endl;
    }

    plik.open("wynik5.txt", ios::out);

    for(int j=0; j<a-1; j++)
    {
              cout << d[j] << endl;
    }

    plik.close();

    return 0;
}

 

komentarz 22 stycznia 2021 przez NewEraOfPeace Gaduła (4,790 p.)
Pokaż mi gdzie w kodzie zapisujesz cokolwiek do drugiego pliku.
komentarz 22 stycznia 2021 przez BedrisK Użytkownik (600 p.)
przywrócone 22 stycznia 2021 przez BedrisK
plik.open("wynik5.txt", ios::out);

 

    for(int j=0; j<a-1; j++)

    {

              cout << d[j] << endl;

    }
komentarz 22 stycznia 2021 przez NewEraOfPeace Gaduła (4,790 p.)
Nie.. Tutaj tylko otwierasz plik i wypisujesz na standardowe wyjście (w tym przypadku do konsoli)  jakieś tam liczby.
komentarz 22 stycznia 2021 przez BedrisK Użytkownik (600 p.)
a ok, a jak to zmienić aby liczby nie byly wypisywane w konsoli tylko w pliku?
1
komentarz 22 stycznia 2021 przez NewEraOfPeace Gaduła (4,790 p.)
Analogicznie do wczytywania i wypisywania na standardowe wyjście.
cout << cos; //wypisze
cin>> cos; //wpisze

wiec skoro
plik>>cos;
pobiera z pliku, to jak zrobisz zapisanie do pliku?
komentarz 22 stycznia 2021 przez BedrisK Użytkownik (600 p.)
czyli zapisując trzeba zmienić strzałki te?
komentarz 22 stycznia 2021 przez NewEraOfPeace Gaduła (4,790 p.)
yup, do tego się to w zasadzie sprowadza.
komentarz 22 stycznia 2021 przez BedrisK Użytkownik (600 p.)
a zamiast cout trzeba wpisać plik, bo przesyła jakby do tekstu aby się wyświetlił
komentarz 22 stycznia 2021 przez BedrisK Użytkownik (600 p.)
ok, zmieniłem to ale teraz zamiast zapisać tej największej liczby to wpisuje wszystkie w drugim pliku
komentarz 22 stycznia 2021 przez NewEraOfPeace Gaduła (4,790 p.)
tak, bo wpisujesz wszystkie
komentarz 22 stycznia 2021 przez BedrisK Użytkownik (600 p.)
a jak zmienić aby wpisywał tylko jedną liczbę?
komentarz 22 stycznia 2021 przez BedrisK Użytkownik (600 p.)
potrzebuje pomocy
komentarz 23 stycznia 2021 przez VBService Ekspert (256,600 p.)
cout << d[j] << endl;

na

plik << max;

 

komentarz 23 stycznia 2021 przez BedrisK Użytkownik (600 p.)
niestety, ale dalej jest błąd

1 odpowiedź

0 głosów
odpowiedź 24 stycznia 2021 przez VBService Ekspert (256,600 p.)
wybrane 29 stycznia 2021 przez BedrisK
 
Najlepsza

Przyczyną błędu był ten zapis

int d[1000],

gdy w pliku było mniej cyfr niż 1000  wink

int d[1000] = {0}

tablica jest inicjowana i wszystkim 1000-cu wierszy (indeksom) przypisana zostaje wartość zero "0"

Moja propozycja:
liczby.txt

453
79
277
43
109
725
643
274
944
653
620
714
343
505
205
535
53
772
130
760
816
608
190
841
60
463
716
72
542
624
733
502
707
579
604
519
154
691
845
886
612
685
364
862
123
652
528
637
586
758
429
353
518
92
563
592
221
522
872
867
339
578
717
891
80
661
65
542
76
809
45
442
399
788
765
849
167
185
195
527
768
490
786
816
74
275
857
959
603
853
46
668
347
463
233
165
356
11
306
637
#include <iostream>
#include <fstream>
 
using namespace std;
 
int main()
{
    fstream plik;
    int d[1000]={0}, a=0, max=0;

    plik.open("liczby.txt", ios::in); 
    if (plik.good() == false)
    {
        cout << "Plik nie jest dostepny!";
        exit(EXIT_FAILURE);
    }

    while (!plik.eof())
    {
        plik >> d[a];
        if (max<d[a]) max=d[a];
        a++;
    }
    plik.close();

    for (int i=0; i<a; ++i)
    {
        cout.width(4); cout << d[i] << " "; // równe kolumny liczb co 4 znaki + spacja ( << " " )
        if ((i+1)%10 == 0) cout << endl; // 10 liczb w jednej linii w cout,
    }
 
    cout << "\nmax = " << max;
 
    plik.open("wynik5.txt", ios::out);
    {
        plik << max << endl;
    }
    plik.close();
 
    return 0;
}

C++ set all array values to {0} ]  [ exit (EXIT_FAILURE) ]
Sterowanie formatem: cout.width() ]

Podobne pytania

0 głosów
1 odpowiedź 232 wizyt
0 głosów
0 odpowiedzi 537 wizyt
pytanie zadane 17 października 2023 w Python przez Jakub005 Początkujący (310 p.)
0 głosów
1 odpowiedź 1,012 wizyt
pytanie zadane 3 listopada 2020 w C i C++ przez Niepokonana7999 Bywalec (2,310 p.)

93,486 zapytań

142,420 odpowiedzi

322,771 komentarzy

62,900 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

Kursy INF.02 i INF.03
...