System dwójkowy, pliki, problem z zadaniem

0

Hej, staralem sie napisac program ale troche mi cienko to idzie mam nadzieje ze mi pomozecie

W pliku liczby.txt, w oddzielnych wierszach, znajduje się 1000 liczb zapisanych
w systemie dwójkowym o długościach zapisów od 2 do 16 cyfr (0 lub 1).
Napisz program, którego wykonanie da odpowiedzi do poniższych podpunktów.
Odpowiedzi zapisz w pliku zadanie6.txt, a każdą odpowiedź poprzedź literą
oznaczającą ten podpunkt.
a) Ile jest liczb parzystych w całym pliku?
b) Jaka jest największa liczba w tym pliku? Podaj jej wartość w dwóch systemach:
dwójkowym i dziesiętnym.
c) Ile liczb w całym pliku ma dokładnie 9 cyfr? Podaj sumę tych liczb w systemie
dwójkowym.

#include<iostream>
#include<cstring>
#include<cstdlib>
#include <fstream>
using namespace std;
long oblicz (int tab[], int n)
{
     long w=tab[0];
     for (int i=1; i<=n; i++)
     w=w*2+tab[i];
     return w;
}
int dziesiec (int t1[], int n1)
{
 int i;
     cout<<"podaj liczbe";
     cin>>i;
            while (i>0)
            {
               t1[n1]=i%2;
               t1[n1]--;
            }
}
            
int main ()
{
    int z,n,parzyste;
    int t[1000];
    
ifstream in;
in.open ("liczby.txt");
        while (!in.eof())
        {
              z>>in;
        }
        oblicz(z);
                  for (z=1;z<=n;z++)
                  {
                      if (z%2==0)
                      parzyste ++;
                  }
                   cout<<" ilosc liczb parzystych :"<<parzyste;
        int g;
        g=z;
        
              for ( g=1; g<=t[g-1];g++)
                  {
                       int max=t[0]
                         if(t[g}>max)
                                      max=t[g];
                       cout<<"max="<<max;
                       
                  }
                  dziesiec(g);
              for ( g=1; g<=t[g-1];g++)
                  {
                       int max=t[0]
                         if(t[g}>max)
                                      max=t[g];
                                      cout<<"max="<<max;
                  }
                  
                  ???
                  
                  
                  
                  ofstream of;
                  of.close("zadanie6");

punkt c jest zaznaczony ?? bo tu to juz w ogole nie wiem co robic

0

tytul nic nie mowiacy
kod nie sformatowany
kod nie wrzucony w znaczniki
brak konkretnego problemu

popraw te rzeczy to ktos Ci pomoze,
@furious programming i @shalom

0

@rikrosfit: musisz trochę popracować nad naszą motywacją. Np. pokazać jakoś że w ogóle analizowałeś ten program.

0

juz poprawiam przepraszam

0

Przeklejony z innego wątku kod autora tegoż wątku

    include<iostream>
    include<cstring>
    include<cstdlib>
    include <fstream>

long oblicz (int tab[], int n)//funkcja ktora schematem hornera powinna zamieniac liczbe binarna na dziesietną
{
     long w=tab[0];
     for (int i=1; i<=n; i++)
     w=w*2+tab[i];
     return w;
}
int dziesiec (int t1[], int n1)
{
 int i;
     cout<<"podaj liczbe";//to smao co wyzej tylko z dzisietnej na binarna
     cin>>i;
            while (i>0)
            {
               t1[n1]=i%2;
               t1[n1]--;
            }
}
            
int main ()
{
    int z,n,parzyste;
    int t[1000];
    
ifstream in;
in.open ("liczby.txt");
        while (!in.eof())
        {
              z>>in;// przypisanie zawartosci pliku do zmiennej z
        }
        oblicz(z);
                  for (z=1;z<=n;z++)
                  {
                      if (z%2==0) // wysukanie liczb parzystych
                      parzyste ++;
                  }
                   cout<<" ilosc liczb parzystych :"<<parzyste;
        int g;
        g=z;
        
              for ( g=1; g<=t[g-1];g++)
                  {
                       int max=t[0]
                         if(t[g}>max)//wyszukanie najwiekszej liczby w systemie dzisietnym
                                      max=t[g];
                       cout<<"max="<<max;
                       
                  }
                  dziesiec(g);
              for ( g=1; g<=t[g-1];g++)
                  {
                       int max=t[0]
                         if(t[g}>max)//to samo  w binarnym
                                      max=t[g];
                                      cout<<"max="<<max;
                  }
                  
                  ???// punkt do ktorego nie umiem sie zabrac
                  
                  
                  
                  ofstream of;//zapisanie wynikow do pliku tekstowego zadanie6
                  of.close("zadanie6");
0

sory za nieprofesionalizm, nie oczekuje gotowego rozwiązania a jedynie prostych klarownych wskazowek i wytkniecie blędów

0

No to masz hinta:
Liczba w systemie binarnym jest parzysta jeśli na najmniej znaczącym miejscu jest zero.

0

a) sprawdzasz ostatnie czy jest 0 czy 1, jezeli 0 to parzysta jezeli 1 to nie parzysta
b) wywolujesz funkcje std::max. Pozniej wystarczy ze przekonwerujesz na system 10 (google pomoze)
c) sprawdzasz czy wczytana linia ma 9 znakow, jezeli tak to dodajesz do vectora/tablicy. Na samym koncu konwertujesz te liczby do 10. Dodajesz je ze soba a pozniej zamieniasz ta sume na 2

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