Forum Forum studentów IV roku EiT Politechniki Śląskiej Strona Główna

Forum studentów IV roku EiT Politechniki Śląskiej

 

Programujemy ... :P
Idź do strony 1, 2  Następny
 
Napisz nowy temat   Odpowiedz do tematu    Forum Forum studentów IV roku EiT Politechniki Śląskiej Strona Główna -> Semestr 3 / PPK
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
sulej




Dołączył: 05 Paź 2007
Posty: 534
Przeczytał: 0 tematów

Skąd: Łaziska

PostWysłany: Śro 17:59, 29 Paź 2008    Temat postu: Programujemy ... :P

mam tu takie zadanie od prof.Koska

Napisz program zawierajacy funkcje "czytaj", której zadaniem bedzie wczytywanie wartosci int do zmiennej(przekazywanej do "czytaj" przez referencje). Funkcja "czytaj" ma pobrac jedna wartosc ze strumienia cin przy czym nie wiadomo czy bedzie ona podawana szestnastkowo(z przedrostkiem 0x tak jak zapisuje sie stale szestnastkowe w programie) czy tez w normalnej tj. dziesietnej postaci(gdzie 0 na poczatku nie wystepuje). Mozna skozystac z cin.peek(), co daje informacje typu char jaki nastepny znak bedzie pobierany ze strumienia, ale nie jest on pobierany. W programie wczytaj za pomoca funkcjii "czytaj" wartosc zmiennych x i y, wypisz x i y i informacje na ilu pozycjach bitowych xi y maja te sama wartosc(ten sam bit);


return Mruga

i mam takie pytanie jak rozpykać to z tym gdy dostaniemy ta liczbe 16stkowo jak ja wpakowac do int ? zeby potem sprawdzic te bity(to juz jest trywialne)
// podobno jest taka fc ze jak cos wpakujemy do tab to ona sama konwertuje na dany typ ... jak ktos ma pomysł to niech pisze Wesoly
Powrót do góry
Zobacz profil autora
serpaw




Dołączył: 10 Paź 2007
Posty: 211
Przeczytał: 0 tematów


PostWysłany: Śro 19:54, 29 Paź 2008    Temat postu:

hm. może za pomocą cin wrzucić wpisywany strumień do char*, wyszukać w stringu czy jest "x" czy nie, jak nie to skonwertować bezpośrednio do int (funkcja atoi), a jak jest, to po kolei znakami konwertować (wykorzystując m.in. numery kodu ascii - dla "1" - "49", dla "A" - "65") i dodawać do int na zasadzie l1*16^0+l2*16^1+l3*16^2+... a co do końcówki programu, to może zwykłe przerabianie na kod binarny, a następnie porównanie...
Powrót do góry
Zobacz profil autora
endo.G2




Dołączył: 10 Paź 2007
Posty: 433
Przeczytał: 0 tematów

Skąd: z nienacka

PostWysłany: Śro 20:01, 29 Paź 2008    Temat postu:

Sulej, miales to na punktowanych?
Powrót do góry
Zobacz profil autora
Stefan99




Dołączył: 10 Paź 2007
Posty: 453
Przeczytał: 0 tematów


PostWysłany: Śro 20:09, 29 Paź 2008    Temat postu:

jesli podajemy liczbe szesnastkową zaczynając od 0x to łatwo rozpoznać czy liczba jest w hexie czy nie, ponieważ żadna liczba całkowita w kodzie dziesiętnym nie zaczyna się od zera. czy mamy zero na początku można sprawdzić wykorzystując funkcję cin.peek. Co myślicie o tym pomyśle ?
Powrót do góry
Zobacz profil autora
sulej




Dołączył: 05 Paź 2007
Posty: 534
Przeczytał: 0 tematów

Skąd: Łaziska

PostWysłany: Śro 20:26, 29 Paź 2008    Temat postu:

serpaw - tez myslałem zeby tak to zrobic jednak to jest bardzo czasochłonne każda pozycje trzeba rozpatrzyc i znak na niej zeby odpowiedni przelicznik zastosować ... myślałem ze moze ktoś zna jakąs fc która to zrobi za nas np. jak będziemy mieli w tab (w stringu) znaki np. 0x1f4 to ta fc przeliczy nam to na system dziesiętny i wpakujemy to do int Wesoly o czyms takim słyszałem dziś tylko nie znam szczegułów co do tej operacji Mruga

endo.G2 - jutro mam punktowane a to zadanie jest od rocznika wyżej

Stefan99 - dokładnie tylko chodzi mi o kolejny etap Wesoly
Powrót do góry
Zobacz profil autora
H.U.L.K




Dołączył: 05 Paź 2007
Posty: 689
Przeczytał: 0 tematów

Skąd: Paniówki

PostWysłany: Śro 21:00, 29 Paź 2008    Temat postu:

W kwestii rozrózniania stringa od liczb może się przydać:

Kod:
#include <iostream>
#include <ctype.h> //biblioteka, aby móc użyc funkcji isdigit (czy to jest cyfra z ang.)

using namespace std;

int main()
{
    char nazwa[100];
    double liczba;
     
    int tescior;
     
    cout <<"Napisz cos a ja powiem czy jest to liczba czy tez string ";
     
    tescior = cin.peek(); //funkcja cin.peek() z iostream, która tylko "podgląda" pierwszy bajt, który zostanie wczytany w przyszłości
     
     
    if (isdigit(tescior)) //sprawdzamy czy zmienna tescior jest cyfra :)
    {
        cin >>liczba; //jezeli tak to spokojnie mozemy wczytac ją do liczby
        cout <<"Jest to liczba o wartosci: "<<liczba<<endl; //mozemy spokojnie wypisac stosowny komunikat
    }
    else
    {
        cin >>nazwa; //w innym wypadku musi byc to string       
        cout <<"Jest to string: "<<nazwa<<endl; //i znow stosowny komunikat :)
    }   
     
     

    return 0;
}
Powrót do góry
Zobacz profil autora
hespes




Dołączył: 11 Paź 2007
Posty: 30
Przeczytał: 0 tematów


PostWysłany: Śro 21:09, 29 Paź 2008    Temat postu:

moze to pomoze


Kod:
char str[10];
cin >> str;

int bleble = strtol(str, NULL, 0);
cout << bleble << endl;


strtol sama rozpoznaje czy liczba jest 16, 8, 10 : )
Powrót do góry
Zobacz profil autora
Stefan99




Dołączył: 10 Paź 2007
Posty: 453
Przeczytał: 0 tematów


PostWysłany: Śro 21:27, 29 Paź 2008    Temat postu:

jak chcecie np wczytac do zmiennej int liczbe w systemie hex to trzeba napisać coś takiego:

Kod:
cin >> hex >> zmienna;


żeby wyświetlić tą samą zmienną w systemie dziesiętnym należy napisać:

Kod:
cout << dec << zmienna;


automatycznie nam zamieni liczbe szesnastkową na dziesiętną
Powrót do góry
Zobacz profil autora
sulej




Dołączył: 05 Paź 2007
Posty: 534
Przeczytał: 0 tematów

Skąd: Łaziska

PostWysłany: Śro 21:32, 29 Paź 2008    Temat postu:

hespes - no to sie przyda .. dzieki Wesoly (o ile jutro bedzie cos podobnego Mruga )
Powrót do góry
Zobacz profil autora
Dyzio
Starosta grupy



Dołączył: 05 Paź 2007
Posty: 429
Przeczytał: 0 tematów


PostWysłany: Śro 21:36, 29 Paź 2008    Temat postu:

//***********************************************************************************************
//***********************************************************************************************
//***********************************************************************************************
//*************************************************************************
//***********************************************************************************************
//***********************************************************************************************
//***********************************************************************************************
/*wprowadzamy liczbe na ekranie albo dziesietna albo szesnastkowa i komp
rozpoznaje jaka i wypisuje ja dziesietnie na ekran*/
#include <iostream>
using namespace std;

#include <math.h>
//******************ZMIENNE GLOBALNE & STALE***********************
//**********************STRUKTURY & UNIE***************************


//*************************DEKLARACJE******************************
int a16na10(char (*), int);
int power(int , int );
//***********************PROGRAM GŁÓWNY****************************

int main(int argc, char* argv[])
{
char tab[20];
int i,liczba;

while(1)
{
cout << "\n\ndawaj liczbe: ";
cin >> tab;
i=atoi(tab);
cout << "\n\nwprowadzona liczba= " << i;


if ((tab[0]=='0') && (tab[1]=='x'))
{
cout << "\n\nliczba jest zapisana szesnastkowo";

liczba = a16na10(tab+2, strlen(tab)-2);

cout << "\n\ndziesietnie to jest= " << liczba;

}else
{
cout << "\n\nliczba dziesietna";
liczba=atoi(tab);
cout << "\n\ndziesietnie to jest= " << liczba;
}

}

//----------------
cout <<endl;
cout <<endl;
cout <<endl;
cout <<endl;
cout <<endl;
system("pause");
return 0;
}

//*****************************************************************
// ************************ FUNKCJE *******************************
int a16na10(char (*tab), int dlugosc)
{ int i=1, wartosc,liczba=0;

for(i=0;i<dlugosc;i++)
{
switch(tab[i])
{
case 'a':;
case 'A': wartosc=10; break;
case 'b':;
case 'B': wartosc=11; break;
case 'c':;
case 'C': wartosc=12; break;
case 'd':;
case 'D': wartosc=13; break;
case 'e':;
case 'E': wartosc=14; break;
case 'f':;
case 'F': wartosc=15; break;
default: wartosc=(int)(tab[i]-4;break;
}

liczba+=wartosc*(power(16, dlugosc-i-1));

}

return liczba;
}

int power(int x, int n)
{
int wynik=1;
for(int i=0;i<n;i++)
{
wynik*=x;
}

return wynik;
}

//*****************************************************************
Powrót do góry
Zobacz profil autora
H.U.L.K




Dołączył: 05 Paź 2007
Posty: 689
Przeczytał: 0 tematów

Skąd: Paniówki

PostWysłany: Czw 8:42, 30 Paź 2008    Temat postu:

nie chce się chwalić ale poprawiłem Twój program:


Kod:
//***********************************************************************************************
//***********************************************************************************************
//***********************************************************************************************
//*************************************************************************
//***********************************************************************************************
//***********************************************************************************************
//***********************************************************************************************
/*wprowadzamy liczbe na ekranie albo dziesietna albo szesnastkowa i komp
rozpoznaje jaka i wypisuje ja dziesietnie na ekran*/
#include <iostream>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>

using namespace std;

#include <math.h>
//******************ZMIENNE GLOBALNE & STALE***********************
//**********************STRUKTURY & UNIE***************************


//*************************DEKLARACJE******************************
int a16na10(char (*), int);
int power(int , int );
//***********************PROGRAM GŁÓWNY****************************

int main()
{
char tab[20];
int i,liczba;

while(1)
{
cout << "\n\ndawaj liczbe: ";
cin >> tab;
i=atoi(tab);
cout << "\n\nwprowadzona liczba= " << i;


if ((tab[0]=='0') && (tab[1]=='x'))
{
cout << "\n\nliczba jest zapisana szesnastkowo";

liczba = a16na10(tab+2, strlen(tab)-2);

cout << "\n\ndziesietnie to jest= " << liczba;

}else
{
cout << "\n\nliczba dziesietna";
liczba=atoi(tab);
cout << "\n\ndziesietnie to jest= " << liczba;
}

}

//----------------
cout <<endl;
cout <<endl;
cout <<endl;
cout <<endl;
cout <<endl;
return 0;
}

//*****************************************************************
// ************************ FUNKCJE *******************************
int a16na10(char (*tab), int dlugosc)
{ int i=1, wartosc,liczba=0;

for(i=0;i<dlugosc;i++)
{
switch(tab[i])
{
case 'a':;
case 'A': wartosc=10; break;
case 'b':;
case 'B': wartosc=11; break;
case 'c':;
case 'C': wartosc=12; break;
case 'd':;
case 'D': wartosc=13; break;
case 'e':;
case 'E': wartosc=14; break;
case 'f':;
case 'F': wartosc=15; break;
default: wartosc=(int)(tab[i]-4);break;
}

liczba+=wartosc*(power(16, dlugosc-i-1));

}

return liczba;
}

int power(int x, int n)
{
int wynik=1;
for(int i=0;i<n;i++)
{
wynik*=x;
}

return wynik;
}
Powrót do góry
Zobacz profil autora
sulej




Dołączył: 05 Paź 2007
Posty: 534
Przeczytał: 0 tematów

Skąd: Łaziska

PostWysłany: Czw 18:24, 30 Paź 2008    Temat postu:

no nie powiem dostałem prawie ten sam program do zrobienia różnił się szczegułami (inaczej sprawdzani pierwszy znak, wypisujemy wszystko)

// nie radze używać mojej fc sprawdzajacej bity podobno za wolno działa Wesoly i miałem pkt w plecy


Kod:

#include<iostream>

using namespace std;

void czytaj(int& zm);
int tesame(int x, int y);


int main()
{
   int x,y;
   int alfa,beta,wynik;
   cout << "podaj liczbe x ";
   
   int& ala =alfa;

   czytaj(ala);

   x= alfa;

   cout << "podaj liczbe y ";
   
   int& bet =beta;

   czytaj(bet);

   y=beta;

   wynik=tesame(x,y);

   cout << " liczby to x= "<< x << " y= " << y << " \n i sa takie same na " << wynik <<" pozycjach " ;

}

void czytaj(int &ala)
{   int a;
   char c;
   cin >> c;
   cin.putback(c);
   if(c =='0')
   {
      //cin >> c;
      //cin >> c;
      cin >> hex >> a;   

   }
   if (c!='0')
   {
      cin >> a;
   }

   ala = a;

}
int tesame(int x,int y)
{
   int a,licznik,wynik;
   licznik=0;
   float b;
   a=x^y;
   while(a!=0)
   {
      b=a;
      b=b/2;
      a=a>>1;
      if(a!=b)
      {
         licznik++;
      }
      
   }
   wynik = 32-licznik;
   return wynik;

   
}
Powrót do góry
Zobacz profil autora
Blacha




Dołączył: 21 Paź 2007
Posty: 289
Przeczytał: 0 tematów

Skąd: Ruda Śląska

PostWysłany: Pią 18:28, 31 Paź 2008    Temat postu:

mam pytanie, dla niektorych trywialne, ale mnie bardzo potrzebne?
co cza zrobic zeby ta glupia biblioteka iostream dziala na visualu, bo mnie nie pradzi ani jak wpisze iostream.h(jak jest napisane w Symfonii) ani jak wpisuje bez .h(tak jak koledzy wyzej).Prosze o pomoc i nie dopisywanie glupich komentarzy. z gory dzieki:)
Powrót do góry
Zobacz profil autora
Stefan99




Dołączył: 10 Paź 2007
Posty: 453
Przeczytał: 0 tematów


PostWysłany: Pią 20:36, 31 Paź 2008    Temat postu:

a słuchales tego pliku audio od dr. koska co jest na platformie ? może jak ustawisz tak jak on mówi to zatrybi Wesoly pozdrawiam
Powrót do góry
Zobacz profil autora
sulej




Dołączył: 05 Paź 2007
Posty: 534
Przeczytał: 0 tematów

Skąd: Łaziska

PostWysłany: Pią 22:37, 31 Paź 2008    Temat postu:

jak dorzucasz pliki z kodami do tego projektu z folderu rob. co go poustawiał mistrzu... to on kompiluje pliki w c i trzeba ustawić zeby kompilował pliki c++ .. (jeśli to o to chodzi to)... to musisz zmienic to w ustawieniach ..jak masz otwarty projekt jakikolwiek plik.. po lewej stronie masz drabinke klikasz lewym na projekt1 rozwija ci sie lista wchodzisz na property .. potem rozwijasz C/C++ tam klikasz na advanced i zmieniasz Compile as na c++ i powinno działać Mruga jesli o to chodziło
Powrót do góry
Zobacz profil autora
Wyświetl posty z ostatnich:   
Napisz nowy temat   Odpowiedz do tematu    Forum Forum studentów IV roku EiT Politechniki Śląskiej Strona Główna -> Semestr 3 / PPK Wszystkie czasy w strefie CET (Europa)
Idź do strony 1, 2  Następny
Strona 1 z 2

 
Skocz do:  
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach


fora.pl - załóż własne forum dyskusyjne za darmo
Powered by phpBB © 2001, 2005 phpBB Group
deox v1.2 // Theme created by Sopel & Download

Regulamin