Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
sulej
Dołączył: 05 Paź 2007
Posty: 534
Przeczytał: 0 tematów
Skąd: Łaziska
|
Wysł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
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
|
|
Powrót do góry |
|
|
|
|
serpaw
Dołączył: 10 Paź 2007
Posty: 211
Przeczytał: 0 tematów
|
Wysł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 |
|
|
endo.G2
Dołączył: 10 Paź 2007
Posty: 433
Przeczytał: 0 tematów
Skąd: z nienacka
|
Wysłany: Śro 20:01, 29 Paź 2008 Temat postu: |
|
|
Sulej, miales to na punktowanych?
|
|
Powrót do góry |
|
|
Stefan99
Dołączył: 10 Paź 2007
Posty: 453
Przeczytał: 0 tematów
|
Wysł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 |
|
|
sulej
Dołączył: 05 Paź 2007
Posty: 534
Przeczytał: 0 tematów
Skąd: Łaziska
|
Wysł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 o czyms takim słyszałem dziś tylko nie znam szczegułów co do tej operacji
endo.G2 - jutro mam punktowane a to zadanie jest od rocznika wyżej
Stefan99 - dokładnie tylko chodzi mi o kolejny etap
|
|
Powrót do góry |
|
|
H.U.L.K
Dołączył: 05 Paź 2007
Posty: 689
Przeczytał: 0 tematów
Skąd: Paniówki
|
Wysł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 |
|
|
hespes
Dołączył: 11 Paź 2007
Posty: 30
Przeczytał: 0 tematów
|
Wysł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 |
|
|
Stefan99
Dołączył: 10 Paź 2007
Posty: 453
Przeczytał: 0 tematów
|
Wysł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 |
|
|
sulej
Dołączył: 05 Paź 2007
Posty: 534
Przeczytał: 0 tematów
Skąd: Łaziska
|
Wysłany: Śro 21:32, 29 Paź 2008 Temat postu: |
|
|
hespes - no to sie przyda .. dzieki (o ile jutro bedzie cos podobnego )
|
|
Powrót do góry |
|
|
Dyzio
Starosta grupy
Dołączył: 05 Paź 2007
Posty: 429
Przeczytał: 0 tematów
|
Wysł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 |
|
|
H.U.L.K
Dołączył: 05 Paź 2007
Posty: 689
Przeczytał: 0 tematów
Skąd: Paniówki
|
Wysł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 |
|
|
sulej
Dołączył: 05 Paź 2007
Posty: 534
Przeczytał: 0 tematów
Skąd: Łaziska
|
Wysł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 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 |
|
|
Blacha
Dołączył: 21 Paź 2007
Posty: 289
Przeczytał: 0 tematów
Skąd: Ruda Śląska
|
Wysł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 |
|
|
Stefan99
Dołączył: 10 Paź 2007
Posty: 453
Przeczytał: 0 tematów
|
Wysł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 pozdrawiam
|
|
Powrót do góry |
|
|
sulej
Dołączył: 05 Paź 2007
Posty: 534
Przeczytał: 0 tematów
Skąd: Łaziska
|
Wysł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ć jesli o to chodziło
|
|
Powrót do góry |
|
|