Program nie działa - suma cyfr, maksmin , umieszczenie wszystkich liczb binarnych

0

Program nie działa

Witam dostałem 3 zadania domowe. Tutaj wykonanie 1 zadania i działa

//w pliku tekstowym liczby.txt zapisane są w kolejnych wierszach liczby całkowite większe od 0 
//największa cyfra w kazdej liczbie zwiększona o 1 decyduje o podstawie systemu w którym ta liczba jest zapisana 
//np, 123
//    111
//    345
//plik liczby txt zawiera max 20 liczb 
//1.w pliku suma txt w kolejnych wierszach zapisz sume poszcvzegolnych cyfr wszystkich liczb z pliku liczby.txt
//2.w pliku maksmin.txt zapisz odpowienio liczbe której suma cyfr jest najwększa oraz liczbę której suma cyfr jest najmneijsza 
//3.w pliku binarne.txt umieść wszystkie liczby zapisane w systemie binarnym np 111


//program nr 1
#include <iostream>
#include <fstream>
#include <conio.h>
#include <stdio.h> 
#include <math.h> 
#include <stdlib.h>
using namespace std;
main()
{
       
 
 ifstream plik;
 ofstream plik2;
 plik.open("liczby.txt");
 plik2.open("suma.txt");
 string s;
 int t[20];
 int suma,dl,i,w;

 
 if (!plik.good())
 {
                  cout<<"błąd otwarcia pliku"<<endl;
 }
 else
 {
     while(!plik.eof()) // odwrotnośc funkcji zakończenia pliku aby zrobić pętlę i zakończyc przy zakończeniu 
            {
                                         suma=0; // bo tak 
                                         
                      plik>>s; //s="123"
                      dl=s.length();//d=3//obliczanie dlugosci znaków 
                      
                      for(i=0;i<dl;i++)// i n apoczatku równe 0 bo indeks 0 , i mniejsze od dlugosci, i dodajemy i 
                      {
                                      //przekonwertowanie ze znaku na int (wartość)
                                       w=s-48;
                                       
                                    suma=suma+w; // do nowej sumy dodajemy stara sume a potem kolejną wartość
                                                 //dodajemy s od 0 potem s od 1 potem s od 2
                                    
                                   
                                    
                                   
                      }
                       plik2<<suma<<endl;
            }
 }
  plik.close();
  plik2.close();
  system("pause");
}
//program nr 2 który nie działa... 

//2.w pliku maksmin.txt zapisz odpowienio liczbe której suma cyfr jest najwększa oraz liczbę której suma cyfr jest najmneijsza 





#include <iostream>
#include <fstream>
#include <conio.h>
#include <stdio.h> 
#include <math.h> 
#include <stdlib.h>
using namespace std;
main()
{
       
 
 ifstream plik;
 ofstream plik2;
 ifstream plik3;
 
 plik.open("liczby.txt");
 plik2.open("suma.txt");
 plik3.open("maxmin.txt");
 
 string s;
 int znaki[20];
 int liczby[20];
 int suma,dl,i,w;
string l;
string s1;
 
 if (!plik.good())
 {
                  cout<<"błąd otwarcia pliku"<<endl;
 }
 else
 {
     while(!plik.eof()) // odwrotnośc funkcji zakończenia pliku aby zrobić pętlę i zakończyc 
            {
                                         suma=0; // bo tak 
                                         
                      plik>>s; //s="123"
                      dl=s.length();//d=3//obliczanie dlugosci znaków 
                      
                      for(i=0;i<dl;i++)// i n apoczatku równe 0 bo indeks 0 , i mniejsze od dlugosci, i dodajemy i 
                      {
                                      //przekonwertowanie ze znaku na int (wartość)
                                       w=s-48;
                                      
                                       
                                       
                                    suma=suma+w; // do nowej sumy dodajemy stara sume a potem kolejną wartość
                                                 //dodajemy s od 0 potem s od 1 potem s od 2
                                                 ofstream plik;
                                                 ofstream plik2;

//poniżej masa błędów  >>>
                                      plik>>l;
                                      plik2>>s;
                                      s1=atoi(s.c_str(); 
                                     // s1=s-48;
                                       if(s1>max)
                                       {
                                                 plik3.open("maxmin.txt");
                                       
                                                  max=s1;
                                                  plik3<<l;
                                                  plik3.close();
                                       
                                       }
                                       else
                                       {
                                       }
                                      
                                   
                                    
                                   
                      }
                       plik2<<suma<<endl;
                       
            }
 }
  plik.close();
  plik2.close();
  plik3.close();
  
  system("pause");
}

Proszę o pomoc tak aby zadziałał

0

w=s-48

od kiedy da się coś odjąć od całego stringa ? Jeśli już to

 
int suma = 0;
for(int i = 0 ; i<dl.i++)
   suma = suma + (s[i]-48);
 

ważne jest aby zrobić s[i], bo wtedy wyciągasz konkretną literkę a odejmując od samego 's' odejmujesz coś od stringa co nie ma sensu i chyba jest nawet niepoprawne :)

s1=atoi(s.c_str(); ^ brak zamknięcia nawiasu

0

Dzieki !Ale Mógłbym prosić o wklejenie poprawionego gotowego kodu ? Bo chyba robie coś źle ;/ a

4

To jest 4programmers.net/Forum a nie forum.4cheaters.net

0

ok dzięki...

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