Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Pomoc 2 programy, wyprowadzanie i wprowadzanie danych z plików

Ostatnio zmodyfikowano 2020-11-03 20:40
Autor Wiadomość
Ziomek321123
Temat założony przez niniejszego użytkownika
Pomoc 2 programy, wyprowadzanie i wprowadzanie danych z plików
» 2020-11-03 14:50:05
Witam,
Wiem że trochę głupia prośba ale proszę o pomoc z napisaniem 2 programów bym później mógł przeanalizować ich działanie i zrozumieć jak tworzyć podobne programy.
Pozdrawiam
1.
Program odczytuje wszystkie wartości z pliku tekstowego wartosc.txt i zapisuje wartości w dwóch plikach: parzyste w pliku parzyste.txt, a nieparzyste w pliku nieparzyste.txt

2.
Załóżmy, że w pliku o nazwie prostokąt.txt zapisane są wymiary prostokąta w dwóch wierszach. Napisz program, który odczyta dwie liczby z pliku prostokat.txt i obliczy pole prostokąta o bokach czytanych z pliku. Napisz też obsługę błędów, gdyby nie powiodła się próba odczytu z pliku.
P-177664
tsutsumu
» 2020-11-03 17:57:20
prosze to jest pierwsza prosba, sam jestem w miare poczatkujacy ale program dziala, napewno da sie go bardziej zoptymalizowac ale mozna z niego wyciagnac wnioski. a drugi napisz w operaciu o to co ci wysalalem, wszystko zo jest w nim wystarczy ci by napisac ten drugi, oprocz wzoru ;) a*b :P jesli cos nie dziala to daj znac moze sie sam walnalem w czyms, albo starczy kolega przyjdzie i mnie poprawi ^^ kto wie :D

C/C++
#include <iostream>
#include <fstream>
#include <string>
#include <stdlib.h>
using namespace std;

bool rozdzielam( int t )
{
    int reszta;
    reszta = t % 2;
    if( reszta == 0 )
         return false;
    else
         return true;
   
}

string linia; //zakladam ze wiecej linii nie bedzie
int nr_linii[ 100 ];
int i = 0;
int main()
{
    fstream plik, plik1, plik2;
    plik.open( "wartosc.txt", ios::in ); //otwarcie pliku do wejscia
    if( plik.good() == false )
         cout << "PLik nie isnieje, upewnij sie ze plik jest obok pliku txt o tej samej nazwie co w nawiasie wyzej";
   
    while( getline( plik, linia ) ) //pobranie wartosci linii z pliku do zmiennej linia
    {
        nr_linii[ i ] = atoi( linia.c_str() ); //kazda linia posiada jedna liczbe teraz trzeba z string to int
        i++;
    }
    plik.close(); //trzeba zamknac plik, nie przyda sie nam juz wszystkto siedzi w ram
   
    plik1.open( "parzyste.txt", ios::out ); //jesli nawet nie bedzie pliku txt to on zostanie automatycznie utworzony
    plik2.open( "nieparzyste.txt", ios::out );
    int j = 0;
    do
    {
        int sprawdzana;
        sprawdzana = nr_linii[ j ];
        if( rozdzielam( sprawdzana ) == false ) //to znacyz parzyste
             plik1 << nr_linii[ j ] << endl;
       
        if( rozdzielam( sprawdzana ) == true ) //to znaczy nieparzyste
             plik2 << nr_linii[ j ] << endl;
       
        j++;
    }
    while( j < i );
   
    plik1.close();
    plik2.close();
   
    return 0;
}
P-177665
pekfos
» 2020-11-03 18:26:20
Trochę przekombinowane. Nie zadziała dla więcej niż 100 liczb, oraz gdy będzie więcej niż jedna liczba w linii. Nie ma potrzeby trzymać wszystkich liczb w pamięci, a do wczytywania wystarczy zwykłe >>.
C/C++
while( plik_wej >> liczba )
{
    if( liczba % 2 == 0 )
         plik_parzyste << liczba << '\n';
    else
         plik_nieparzyste << liczba << '\n';
   
}
P-177667
tsutsumu
» 2020-11-03 20:40:15
faktycznie, zdecydowanie lepszy, nie wiedzialem ze mozna w ten sposob tego napisac.
P-177672
« 1 »
  Strona 1 z 1