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

[C++] Strumień wejścia, string, zadanie maturalne

Ostatnio zmodyfikowano 2016-04-15 01:20
Autor Wiadomość
Prefectus
Temat założony przez niniejszego użytkownika
[C++] Strumień wejścia, string, zadanie maturalne
» 2016-04-14 23:09:47
Cześć jestem bardzo początkowym adeptem C++.
Program musi odczytać 200 "obrazków" zrobionych z 1 i 0 zapisanych w pliku. Każdy obrazek ma rozmiar 20x20, gdy 1 jest więcej niż 0 w obrazku wtedy nazywa się on rewersem. Zadaniem programu jest wypisanie ile rewersów znajduje się w pliku i w którym obrazku jest nawięcej 1. Próbowałem z odczytywaniem pojedynczo znaków i porównywaniu ich z 1 i 0 ale zmienna przechowująca wypisuje błędy.
P-147277
michal11
» 2016-04-14 23:18:12
Pokaż co już masz.

Jak oddzielone są od siebie obrazki w pliku ? Najlepiej wklej fragment tego pliku.
P-147278
Prefectus
Temat założony przez niniejszego użytkownika
» 2016-04-14 23:25:33
#include <iostream>
#include <fstream>
#include <string>

using namespace std;
int main(){
    int j=0,i=0,rewers=0,k=0,jeden=0,zero=0;
    char pom[1];
  
    ifstream plik("dane_obrazki.txt");
    if(plik.good()){
                  while(!plik.eof()){
                  for(k=0;k<200;k++){
 
                  for(j=0;j<20;j++){
 
  for(i=0;i<20;i++){
                                   plik >> pom;
                                   if(pom=="0"){
    zero++;}
                                   if(pom=="1"){
                                   jeden++;}
                                  
                               }
                               plik>>pom;
                              
j++;  

                                   }
                                   for(i=0;i<20;i++){
  
                                   plik>>pom;
                               }
                               if(zero<jeden) {
   rewers++;}
                                   }  } }    
                    
                                   plik.close();
                                   cout << "Zad. 61.1 Jest " << rewers << " rewersow" << endl;
                                  
                                   system("pause");
                                   }
P-147280
Prefectus
Temat założony przez niniejszego użytkownika
» 2016-04-14 23:26:37
Plik tekstowy wygląda tak:
a całość zadania http://www.oke.waw.pl/new/download/files/File/CKE/2016/mat/Matura_Zbi%C3%B3r_zada%C5%84_Informatyka.pdf  zad. 64

000000000000000000000
001000000000001000000
001000000000001000000
001000000000001000000
001000000000001000000
001000000000001000000
001000000000001000000
001000000000001000000
001000000000001000000
001000000000001000000
001000000000001000000
001000000000001000000
001000000000001000000
001000000000001000000
001000000000001000000
001000000000001000000
000100000000010000000
000011111111100000001
000000000000000000000
000000000000000000000
00111111111111100000

000000000000000000000
000111111100011111110
000100000000010000000
000100000000010000000
000100000000010000000
000100000000010000000
000100000000010000000
000100000000010000000
000111111100011111110
000100000000010000000
000110000000011000000
000101000000010100000
000100100000010010000
000100010000010001000
000100001000010000100
000100000100010000010
000100000000010000000
000100000000010000000
000100000000010000000
000000000000000000000
00001111110000111111
P-147281
michal11
» 2016-04-14 23:54:13
Kod wstawiaj w znaczniki.

szybciej będzie jak ci po prostu pokażę co ja napisałem zamiast wyjaśniać problemu w twoim kodzie:
C/C++
int main()
{
    std::ifstream file( "plik.txt" );
   
    std::string line;
    int imageOnes[ 200 ] { 0 };
    int imageSize[ 200 ] { 0 };
    int imageNum = 0;
   
    while( std::getline( file, line ) )
    {
        imageOnes[ imageNum ] += std::count( line.begin(), line.end(), '1' );
        imageSize[ imageNum ] += line.size();
       
        if( line == "" || file.eof() )
        {
            ++imageNum;
        }
    }
}
P-147282
Prefectus
Temat założony przez niniejszego użytkownika
» 2016-04-15 00:09:05
Próbowałem kompilować to w Dev'ie ale pojawia się błąd: [Warning] extended initializer lists only available with -std=c++11 or -std=gnu++11
tak samo w Visual'u.
P-147283
michal11
» 2016-04-15 00:34:31
W devie ustaw kompilację dla iso c++11, narzędzia>>ustawienia kompilatora>>wytwarzanie/optymalizacja kodu>>wytwarzanie kodu>>Language standard.

Która wersja visual studio ?
P-147284
carlosmay
» 2016-04-15 00:35:25
tak samo w Visual'u.
W którym Visualu?

int imageOnes[ 200 ] { 0 };
Inicjalizacja elementów tablicy w ten sposób dostępna jest od standardu C++11.
Masz ją wyłączoną lub niedostępną.
Poszukaj jak w twoim środowisku ją włączyć.
P-147285
« 1 » 2
  Strona 1 z 2 Następna strona