Można int ?

0

Powtarzając materiały na maturę z informatyki trafiłem na tą stronę -> http://www.maturainformatyka.pl/programowanie.php?url=liczby (serdecznie polecam wszystkim ja :*) i zauważyłem w owym linku, że zawartość tablicy zapisywana jest do zmiennej typu int, a nie string. Czy zawsze tak można ? Jeśli nie, to od czego to zależy ?

Z góry dziękuje za pomoc :D

0

ten fraqgment?

	
	int licznik = 0, wynik = 0;
	string liczba;
	
	while (inFile >> liczba)
	{
		wynik = liczba[0] - '0';
		for (int i = 1; i < liczba.size(); i++)
		{
			wynik = wynik * 8 + liczba[i] - '0';
		} 
		
		if (pobierzOstatniaCyfre(wynik) == pobierzPierwszaCyfre(wynik))
		licznik++;
	}
0
  1. Jeżeli mowa o liczbach i te liczby mieszczą się w int'a to nie ma przeciwwskazań na trzymanie tego w postaci int'a oprócz przeciwwskazań czasowych.
  2. Nie polecam tej strony skoro to zadanie zostało rozwiązane w ten sposób.
0
  1. Adamssssssssssssssssssss- chodziło mi o zadanie pierwsze :D
  2. _13th_Dragon- Czy mógłbyś rozwinąć pojęcie przeciwwskazań czasowych ?
  3. Czemu nie polecasz ? To konwertowanie jest potrzebne do zamiany tekstu na liczby (przynajmniej tak sądzę, a pliki teksotowe są typu string.

Czekam na odpowiedzi :]

0

W czasowych pewnie ma na myśli, że konwersja do inta zajmuje, jeszcze to dzielenie w pętli w tych funkcjach...
Można to pobrać do stringai porównać pierwszy i ostatni znak.

    string liczba;

    while (inFile >> liczba)
    {
        if (liczba[0] == liczba[liczba.length() - 1])
            licznik++;
    }
0

Po co tak kombinowac, skoro jest gotowiec?

#include <iostream>
#include <iterator>
#include <algorithm>
#include <string>
using namespace std;

int main() {
	cout << count_if(
		istream_iterator<string>(cin),
		istream_iterator<string>(),
		[](const string& str) { return str.front() == str.back(); }
	) << "\n";
	return 0;
}

http://ideone.com/Pkr8Yh

Btw. Tez nie polecam tej strony, kody sa dosc niskiej jakosci.

0

po co w 3 zadaniu autor konwertuje z ósemkowego na dziesiętny? tamten warunek można sprawdzić na intach wykorzystując podstawową matematykę http://ideone.com/TA0KWS .

0

n0name_l ciekawe rozwiązanie +1 :)
O istream_iterator nie wiedziałem, hehe

0

Dziękuje również za algorytmy, lecz wciąż nie otrzymałem odpowiedzi na temat kiedy dane pliku testowego można zapisywać do zmiennych liczbowy, a kiedy muszą do łańcuch znaków (choć tu oczywiste jest, że napisy, ale czytałem, że niektóre rodzaje liczb też trzeba)

0

Zapisujesz do tego typu danych, ktory wygodniej ci przetwarzac przy rozwiazywaniu danego problemu i dane sa do niego zapisywalne. Przeciez to dosc oczywiste.

0

Czytałem, że każda linijka danych w pliku tekstowym jest zawsze traktowana jak łańcuch znaków, więc zdziwił mnie fakt, że bez uprzedniej zamiany znaków na liczby, autor swobodnie na nich operował zapisując je zmiennej typu int.

0

Może jeszcze wersja najszybsza:

#include <cctype>
#include <cstdio>
using namespace std;

int main()
  {
   size_t count=0;
   for(int first=0,last=0,ch;last!=EOF;last=ch)
     {
      if((!isspace(ch=getchar()))&&(ch!=EOF))
        {
         if(!first) first=ch;
        }
      else if(first)
        {  
         if(first==last) ++count;
         first=0;	
        }
     }
   printf("%d\n",count);
   return 0;
  }

Właściwie to jeżeli jest pewność że po ostatniej liczbie jest enter to można jeszcze uprościć i przyspieszyć.

0

Skoro tutaj już mowa o maturze a nie chciałbym tworzyć nowego tematu to mam takie pytanie, zadeklarowałem sobie że będę programował w C++ i jako kompilator wybrałem Visual Studio. Mogę w takim razie pisać w C++\CLI?

0

C++\CLI != C++
Nie możesz pisać w C++\CLI, to po prostu jest inny język.

Wczytując dane z pliku, nie musisz ich traktować jak string'a. Możesz je wczytać do inta, dokona się konwersja

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