aa
Hugo: #include <iostream>
#include <cstdlib>
#include <string>
#include <fstream>
using namespace std;
int main(int argc, char* argv[])
{
string tab = argv[1];
size
t pozycja = tab.find(" ");
int table[100];
cout<<tab<<endl;
for(int i=0; i<tab.length();i++){
pozycja = tab.find(" ");
string nowy = tab.substr(0, pozycja);
tab.erase(0,1);
table[i]=atoi(nowy.c
str());
cout<<table[i];
}
return 0;
}
Chce pobrać do stringa całą wartość stringa, dlaczego jak mam string tab = argv[1] i pobiera
ino jedną liczbę

?
26 lut 18:01
Hajtowy: Musisz się Huguś jeszcze dużo uczyć
26 lut 18:08
Dziadek Mróz:
Ale co chcesz zrobić i jak wykonujesz ten program?
26 lut 18:17
Dziadek Mróz:
Chcesz wszystkie liczby z argumentów do string'a tab dać?
To musisz program wykonać tak:
program.exe "1 2 3 4 5"
I wtedy argv[1] = "1 2 3 4 5"
26 lut 18:35
Hugo:
26 lut 18:37
26 lut 18:38
Dziadek Mróz:
Tak
26 lut 18:38
Dziadek Mróz:
Powiedz co program ma zrobić
26 lut 18:39
Dziadek Mróz:
Bo patrzę i nie wiem co on robi
26 lut 18:39
Hugo: wiec
pobiera od użytkownika ciąg liczb i zwraca odwrocony ale musze to sam zrobic
26 lut 18:42
Hugo: 1/x dla 1/0 ma dawać 1
26 lut 18:42
Dziadek Mróz:
No to można dać:
string tab = "";
for (int i = 1; i < argc; i++)
{
tab += argv[i];
}
I wtedy dla wykonania:
program.exe 1 2 3 4 5
Mamy tab = "12345"
26 lut 18:46
26 lut 18:51
Hugo: Dev ma cos zpsute albo ja nie umiem .. jak dalem "1 2 3 4 5 6 " i calem
string nowy = argv[1];
cout<<nowy;
to i tak wypisalo mi jedynke

wiec chyba trzeba operować na arg[i] i z tego wypisywac
26 lut 18:54
Hugo: do postu 18:46

tam cza getline(tab,cin)



a co jak bedzie ciąg
1 10 100 11 2 3 4

? cza spacje by wiedzieć czy 1 1 to całosć czy jedna wartosc
26 lut 19:04
Hugo: moze nie tyle cin ale getline
26 lut 19:04
Dziadek Mróz:
No to teraz sytuacja jest klarowna:
program.exe 1.2 3.5 0 8.1 1 2 4
#include <iostream>
using namespace std;
int main(int argc, char* argv[])
{
double odwrotnosci[argc − 1];
double liczba;
for (int i = 1; i < argc; i++)
{
liczba = atof(argv[i]);
cout << "liczba: " << liczba << endl;
if (liczba == 0)
{
odwrotnosci[i − 1] = 0;
}
else
{
odwrotnosci[i − 1] = 1.0/liczba;
}
cout << "odwrotnosci: " << odwrotnosci[i − 1] << endl;
}
return 0;
}
================ READY ================
temp.exe 1.2 3.5 0 8.1 1 2 4
temp.exe 1.2 3.5 0 8.1 1 2 4
Process started >>>
liczba: 1.2
odwrotnosci: 0.833333
liczba: 3.5
odwrotnosci: 0.285714
liczba: 0
odwrotnosci: 0
liczba: 8.1
odwrotnosci: 0.123457
liczba: 1
odwrotnosci: 1
liczba: 2
odwrotnosci: 0.5
liczba: 4
odwrotnosci: 0.25
<<< Process finished.
26 lut 19:07
26 lut 19:23
Hugo: konwertujesz argv do double ;−; ... a to sie tak da? probowalem do inta i wywalalo
26 lut 19:24
Hugo: ja robie tak:
argv −> string −> atoi(string.cstr()) −> int
wiem wiem ze na intach to slabo dzialac
26 lut 19:25
Hugo: ale dlaczego mi źle wypisuje liczby z tabelki


zamiast
1
2
3
4
5
6 wypisuje mi same zera
26 lut 19:25
Hugo: Wrzucilem twoje i pisze:
C:\Users\Hugo\Desktop\www\main.cpp [Error] 'atof' was not declared in this scope
w devie chyba ta funkcja nie dziala
26 lut 19:30
Hugo: #include <cmath>
#include <cstdlib>
#include <stdio.h>
dodalem te 3 biblioteki do twojego programu i zadziaalo
26 lut 19:33
Dziadek Mróz:
Pewnie obaj mamy inne biblioteki zdefiniowane i mam wszystko w iostream
26 lut 19:42
Dziadek Mróz:
atoi konwertuje const char * do int
atof konwertuje const char * do double
26 lut 19:43
Hugo: atof nie konwertuje do floata

26 lut 19:50
Dziadek Mróz:
double = long float
Dlatego w printf pisze się %lf dla double i %f dla float
26 lut 19:52
Hugo: Hugo napisal i dziala ale ominął pewną kwestie
http://pastebin.com/5vpf8HLM
wiec zmienilem intow na floaty

i konwertuje do floatow

tablica float i tam atof

wiec
nie wiem czemu mowisz ze do double, bo double !=float

mysle
POMOŻ MI PROSZE

w kodzie u samej góry ja pobieram z argv do stringów TAK CHCE ZROBIC
ale pobieram i mi sie potem wysypuje wiec w 18 linijce

modyfikuje tego stringa i wtedy
dziala
dlaczego zmiana z argv −> stringa mi nie dziala
26 lut 19:53
Hugo: TO nie wiedzialem

..
26 lut 19:54
Dziadek Mróz:
Poczytaj manual do atof i dowiedz się co jest jego argumentem i co zwraca
26 lut 19:54
Hugo: emm
26 lut 19:56
26 lut 19:57
Gauss:
Dziadek poduczysz i mnie programowania ? Również mam zaległości
26 lut 19:59
Hugo: Przeciez
parametry: 1 2 3 4 5 6
argv[1] = 1
argv[2] = 2
argv[3] = 3
wiec jak robie
ciag = ciag + argv[i] + " ";
nic = nic + 1
ciag = ciag + argv[i] + " ";
1 2
ciag = ciag + argv[i] + " ";
nic = nic + 1
ciag = ciag + argv[i] + " ";
1 2 3
...
1 2 3 4 5 6
http://scr.hu/2pdc/kijyk
I TERAZ MAM PRZEBLYSK

to powinno byc od argv[1] a nie od argv[0]


26 lut 20:01
Dziadek Mróz:
Ciołek z Ciebie Hugo
26 lut 20:03
Dziadek Mróz:
Gauss ale jak duże zaległości. Nic nie umiesz czy umiesz coś ale chcesz więcej umieć?
26 lut 20:04
26 lut 20:05
Hugo: za tego argc tez ci musze podziękwoać w forze

for(int i=0; i<argc;i++)
nie wiedzialem ze to max ciągu
26 lut 20:06
Dziadek Mróz:
Hugo pierdoło, argc to nie max ciągu tylko liczba argumentów!
26 lut 20:08
Dziadek Mróz:
Nie testuj mojej cierpliwości bo mnie się na usta ciśnie mięso na Ciebie
26 lut 20:08
Hugo: racja racja
26 lut 20:08
Hugo: jutro o 14 to pisze i bedziesz miał spokój na dlugo ( :
26 lut 20:09
Gauss:
umiem coś ale chcę więcej

ale mało umiem. ALE MAM DUŻO CZASU na nadrobienie
26 lut 20:13
26 lut 20:18
26 lut 20:18
Hugo: mam juz szkic ale uściślijmy bo pytanie mam ucięte

Pobieramy z txt? i wrzucamy to do tablicy?
26 lut 20:22
Dziadek Mróz:
Czytaj pytanie jeszcze 3 razy i obejrzyj przykład pliku tekstowego
26 lut 20:31
Gauss:
Dziękuję, w razie pytań będę Cię szukał na forum
26 lut 20:33
26 lut 20:34
Dziadek Mróz:
Panie Hugo plik tekstowy ma postać:
n_ osób
Osoba_1 Pesel_1
Osoba_2 Pesel_2
...
Osoba_n Pesel_n
26 lut 20:37
Dziadek Mróz:
Nie wal tylu pustych linii i rób wcięcia porządne. Naucz się pisać schludnie.
26 lut 20:38
26 lut 20:53
Hugo: Nie zauważyłem tej dwójki

to juz poprawiam a ten mój kod

?
26 lut 20:54
Hugo: 
kod mi wysypywal bo nie dalem ze i = 0 XDD w 29 linjce
26 lut 20:55
26 lut 21:06
Hugo: Wiec Niby fajnie i sie kompiluje i ma to sens ale nie wypisuje
26 lut 21:06
Hugo: czy mozna takie cos napisac

osoba struk[i]; //wrzucamy to do struktury o nazwie struk
struk[i].imie = im;
struk[i].nazwisko=n;
struk[i].pesel = atoi(p.c
str());
}
chodzi mi o tabele ludzi
struk[1] − pan nr 1
struk[2] − pan nr 2
26 lut 21:08
Hugo: WIec program się wysypuje bo max sie nie zmienia; pobieram z pierszej lini ilosc tych wierszy i
konwertuje na inta
max = atoi(k.c
str());
....
znalazlem

! wiec i= 0 bylo w petli i mi zerowalo caly czas
26 lut 21:25
Dziadek Mróz:
Jezu Hugo. Gdy czytamy z ifstream to on pomija automatycznie wszystkie białe znaki (spacje,
tabulacje, itp).
Więc jak mamy przykładowy plik o zawartości: [a b c d e]
to po wykonaniu instrukcji:
while (plik_we >> dana)
{
cout << dana << endl;
}
wynikiem będzie:
>>> a
b
c
d
e
>>>
Nie trzeba pobierać po linii z pliku i szukać na siłę spacji, gdy wbudowany operator
strumieniowy pomija te spacje.
Algorytm:
Pobierz z pliku ilość osób jako int n.
Tworzysz tablicę n struktur jako Osoby.
Tworzysz licznik tablicy struktur jako int i = 0
Dopóki pobierasz z pliku:
Pobierz Osoby[i].imie.
Pobierz Osoby[i].pesel.
i++;
Wykonuj operacje na tablicy struktur.
26 lut 21:32
Dziadek Mróz:
Zaznacz sobie ten przykładowy plik to zobaczysz gdzie są spacje a gdzie tabulacje.
26 lut 21:32
26 lut 23:32
Hugo: @Dziadek Mróz
Pobiera spacje gdy sie używa getline
26 lut 23:33
Hugo: while( getline(IN,wyraz))
26 lut 23:34
27 lut 01:05
Hugo: Program dziala i wgl

aczkolwiek nie wiek jak dopasowac zakres wartosci
w kodzie porobilem takie
//////////////////////////////// i<?
Gdyz to sobie dopasowalem by dzialalo a tak bz posrednio to dokladnie nie wiem jakie zmienne
ustawic by sprawdzalo tylko takie a nie inne liczby

pomogły by ktoś
27 lut 01:06