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

Konwersja wielkich liter na typ całkowity

Object Storage Arubacloud
0 głosów
110 wizyt
pytanie zadane 15 maja 2016 w C i C++ przez Typowy Janusz Dyskutant (8,150 p.)

Witam!

W pliku txt mam 1000 wierszy z wielkimi literami. Te litery chcę przekonwertować na typ int i wyświetlić na ekranie.

Napisałem program, który próbuje rozwiązać ten problem, lecz wyświetla on nieprawdziwe dane.

Jeśli ktoś by był tak uprzejmy i wytłumaczyłby mi co robię źle byłbym rad. Problem zapewne leży w funkcji "konwersja" ale nie wiem jak sobie z nim poradzić. Czyżby należało zastosować wskaźniki?

Pozdrawiam!

#include <iostream>
#include <fstream>

using namespace std;

void konwersja(char wiersz[], int ile)
{

    int k[ile];
    for(int i=0; i<ile; i++)
    {
        k[i]=static_cast<int>(wiersz[i]);
        cout<<k[i]<<endl;
    }


}

int main()
{
    ifstream plik("NAPIS.txt");
    const int ile=30;
    char wiersz[ile];

    while(!plik.eof())
    {
        plik.getline(wiersz,ile);
        
            konwersja(wiersz, ile);
    }

}

 

1 odpowiedź

+2 głosów
odpowiedź 15 maja 2016 przez niezalogowany
wybrane 15 maja 2016 przez Typowy Janusz
 
Najlepsza
void konwersja(char wiersz[], int ile)

Przyjmuj jako argument tylko stringa. Wtedy to:

int k[ile];

nie będzie potrzebne(poza tym jest niepoprawne). i<ile zamień na i<wiersz.size(). Zamiast rzutować i gdzieś przypisywać dane to od razu przy wypisywaniu je rzutuj i wyświetlaj. Pozbędziesz się jednej niepotrzebnej zmiennej. To:

char wiersz[ile];

Też zmień na string'a(i pozbądź się tej stałej). To:

while(!plik.eof())
    {
        plik.getline(wiersz,ile);
         
            konwersja(wiersz, ile);
    }

zmień na:

while(getline(plik, wiersz)){
  konwersja(wiersz);
}

Kod po przebudowie:

#include <iostream>
#include <fstream>
 
using namespace std;
 
void konwersja(string wiersz)
{
    for(size_t i=0; i<wiersz.size(); i++)
    {
        cout<<(int)wiersz[i]<<endl;
    }
}
 
int main()
{
    fstream plik("NAPISY.txt");
    string wiersz;
 
    while(getline(plik, wiersz))
    {
            konwersja(wiersz);
    }
 
}

 

komentarz 15 maja 2016 przez Typowy Janusz Dyskutant (8,150 p.)
Dziękuję :D

Podobne pytania

0 głosów
1 odpowiedź 255 wizyt
pytanie zadane 15 grudnia 2022 w C i C++ przez piotr_domanski Bywalec (2,080 p.)
0 głosów
1 odpowiedź 245 wizyt
pytanie zadane 20 czerwca 2022 w C i C++ przez MichaelM Bywalec (2,520 p.)
+1 głos
0 odpowiedzi 332 wizyt
pytanie zadane 6 maja 2022 w Python przez Marak123 Stary wyjadacz (11,190 p.)

92,568 zapytań

141,420 odpowiedzi

319,622 komentarzy

61,954 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...