• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Invalid types 'int[int]' for array subscript, program nie kompiluje się

Mały hosting, OGROMNE możliwości
0 głosów
1,822 wizyt
pytanie zadane 1 listopada 2018 w C i C++ przez Alan Kruszyński Obywatel (1,410 p.)

Naskrobałem taki program, możliwe że chaotyczny, ale piszę to na szybko mając mało czasu dziennie, więc najpierw to ma działać a potem wyglądać. Muszę się zabezpieczyć przed powtarzaniem się wartości w polu int. Wymyśliłem że już wylosowane wartości zapisuję do tab2 a potem drugą i kolejne wylosowane porównuję z zawartością tab2 i jeśli się powtórzyła, dodaję do ostatniej wylosowanej 1. Program wywala błąd w nagłówku if-a w funkcji sprawdzaj_liczbe. 

#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <fstream>
#include <cstdlib>
#include <time.h>

int N, i, licznik = 0; //licznik to długość tablicy tab2
int *tab;
int tab2; //w tab2 zapisywane są wylosowane wartość int i ze Struktura
char X;
int wylosowana;

struct Struktura {
    int i;
    char c;
    float f;
} ;

using namespace std;

void odczyt_pliku(){
fstream plik;
    plik.open("labin01.txt", ios::in);

    if(plik.good()==false){
        cout<<"Nie udalo sie odczytac pliku lub plik nie istnieje";
        exit(0);
    }
plik >> N >> X;
plik.close();
//cout<<N<<" "<<X;
}

//sprawdzaj_znak()

void sprawdzaj_liczbe(int liczba, int pozycja){
    int j;
    for (j=0; j<=licznik; j++){
        if(liczba == tab2[j]) {            // warunek jeśli liczba się powtórzyła
           licznik++;                           //w tab2 zapisane są już wylosowane wcześniej liczby
            tab2[licznik]=liczba;
            liczba+1;
        }
    else{ //warunek jeśli liczba się nie powtórzyła
        tab[pozycja]->i = wylosowana;
    }

}

int losuj(int n){
  struct Struktura**tab=(struct Struktura**)malloc(n*sizeof(struct Struktura*));

   for (i = 0; i<=N; i++){
        tab[i]=(struct Struktura*)malloc(sizeof(struct Struktura));
        srand(time(NULL));
        wylosowana = rand()%10000-1000;

        if(i==0) {
                    tab[i]->i = wylosowana;
                    tab2[licznik]=wylosowana;
                    licznik++; //licznik to długość tablicy tab2
        else {
                    sprawdzaj(wylosowana, i);
            }

        tab[i]->c=(char)rand()%22+66;
        tab[i]->f=1000+i;
    }

//cout<<tab[0]->i;
}

int main()
{
    odczyt_pliku();
    losuj(N);

    return 0;
}

 

1 odpowiedź

+1 głos
odpowiedź 1 listopada 2018 przez adrian17 Mentor (354,880 p.)
int tab2;

tab2 to liczba...

if(liczba == tab2[j]) {

...czy tablica?

 

komentarz 1 listopada 2018 przez Alan Kruszyński Obywatel (1,410 p.)
Ach no tak... :) tablica

Podobne pytania

0 głosów
1 odpowiedź 400 wizyt
pytanie zadane 16 kwietnia 2021 w C i C++ przez xxx109 Nowicjusz (160 p.)
0 głosów
1 odpowiedź 3,000 wizyt
pytanie zadane 7 października 2018 w C i C++ przez maviek14 Nowicjusz (140 p.)
0 głosów
1 odpowiedź 215 wizyt
pytanie zadane 28 maja 2019 w C i C++ przez nlx98802 Nowicjusz (120 p.)

93,718 zapytań

142,631 odpowiedzi

323,262 komentarzy

63,266 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...