Nieoczekiwane wartosci przy zamianie stringa do int. Co sie dzieje?

0

Witam, przy probie zamienienia stringow do int i zapisania ich w tablicy, program wyswietla dziwne wartosci. Ponizej screen. Przepraszam za kiepska jakosc. Z gory dziekuje za pomoc.

http://imageshack.us/f/541/z6uy.jpg/

Na koncu w odczytach tablicy na 4 i 6 pozycji wyswietlaja sie dziwne wartosci.

0

na początku tworzysz tablicę dynamiczną tab[1], a potem wrzucasz do niej 20 elementów. Wylatujesz poza zakres tablicy

0

Probowalem robic rozne kombinacje z tablicami. Czy na pewno chodzi o tablice, wraz ze wzrostem elementow zwiekszam rozmiar tablicy n++? Zawsze na czwartej i czóstej pozycji wywala inna wartosc.

0

nie muszę chyba pisać co myślę o ludziach wklejajacych kod jako załącznik-obrazek ]:>
dosc ze masz za małą tablicę (1 elementowa), to na dodatek indeksujesz od 1 jak humanista a nie informatyk.
a wielkosc tablicy ustala się raz operatorem new, n++ nic w tej materii nie zmienia.

0

Jak wiesz że ma być tego dokładnie 20 to po kiego bawisz się w dynamiczne przydzielanie?
Jak wiesz że ma być liczba to po kiego się bawisz w stringstream?

#include <iostream>
using namespace std;

int main()
  {
   unsigned tab[20],n=0;
   for(n=0;n<20;)
     {
      cout<<"Podaj liczbe nr "<<(n+1)<<": ";
      if(cin>>tab[n]) ++n;
      else
        {
         cin.clear();
         if(cin.get()=='k') break;
         cout<<"ma być liczba całkowita dodatnia"<<endl<<endl;
        }
      while(cin.get()!='\n') {}
     }
   for(unsigned i=n-1;i<n;--i) cout<<tab[i]<<' ';
   return 0;
  }
0
MarekR22 napisał(a):

nie muszę chyba pisać co myślę o ludziach wklejajacych kod jako załącznik-obrazek ]:>

No powiedz co myslisz?

Ucze sie dopiero. Chyba dla takich jak ja jest to forum prawda? Elementow w tablicy moze byc maksymalnie 20. Moze byc mniej. Chcialem zrobic by wpisywanie liczb konczylo sie rowniez poprzez nacisniecie znaku 'k'.

Ogólnie dzieki za pomoc, ale problem dalej nie rozwiazany.

(Dobra, wkleilem obrazek wraz z kompilacja by nie trzeba bylo wklepywac kodu tylko Od razu zobaczyc co z tego wyniklo, ale OK)

0

Pomoze ktos?

0

Wrzuć kod.

0

Prosze bardzo. Uprzedzam ze sie dopiero ucze!

 #include <iostream>
#include <string>
#include <sstream>
using namespace std;
 int main(){

    int n=1,b;
    string ab;

    int *tab = new int[n];

    while(ab!="k" && n<20){
     cout<<"podaj liczbe "<<n<<": ";
     cin>>ab;

        stringstream ss(ab); 
        ss >> b;

        if(b>0){

            tab[n-1]=b;
            n++;
        }

    }
 n--;
 cout<<"------ n: "<<n<<endl;
 for(n;n>=0;n--){
    cout<<tab[n]<<". ";
 } 
    return 0;
 }
0

Koledzy zmienilem na to, ale wciaz nie rozumiem dlaczego w SRODKU w dwoch miejscach wywala jakas zla liczbe. Gdyby to bylo na peryferiach tablicy to bym rozumial a tu gdzies w srodku. Przydzielilem na poczatku tablice n=0, ale pozniej kazdorazowo przed dodaniem elementu ją zwiekszam n++. Skoro wiecie co jest nie tak czy mozecie poprawic ponizszy kod? Zaczynam juz miec oczoplasy od tego i mozg juz nie swiezy:/ Prosze o pomoc.

#include <iostream>
#include <string>
#include <sstream>
using namespace std;
 int main(){

    int n=0,b;
    string ab;

    int *tab = new int[n];

    while(ab!="k" && n<20){
     cout<<"podaj liczbe "<<n+1<<": ";
     cin>>ab;

        stringstream ss(ab); 
        ss >> b;

        if(b>0){
            n++;
            tab[n-1]=b;

        }

    }
 n--;
 cout<<"------ n: "<<n<<endl;
 for(n-1;n>=0;n--){
    cout<<tab[n]<<". ";
 } 
    return 0;
 }

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