Znajdź pierwsze wystąpienie liczby x w tablicy i wyświetl jej POZYCJĘ

0

czesc mam takie zadanie i mam to zrobić : Znajdź pierwsze wystąpienie liczby x w tablicy i wyświetl jej POZYCJĘ. Przykład: tab zawiera 1,3,5,2,3,7
szukamy 1 - program wyświetla 0 (tablice indeksujemy od zera !)
szukamy 3 - program wyświetla 1

Nie mam pojęcia jak mam przypisac ta pozycję

#include <stdio.h>
#include <stdlib.h>


int main()
{
int N;
int i,x;
printf("Wczytaj N ");
scanf("%d", &N);
int tab[N];
printf("Elementy tablicy\n");
for(i=0;i<N;i++)
{
    printf("Podaj liczbe nr %d\n", i+1);
    scanf("%d", &tab[i]);
}
printf("Podaj cyfre jaka chcesz sprawdzic x= ");
scanf("%d", &x);
for (i=0;i<N;i++){
if(x==tab[i]){
    printf("\ntab[%d]",);

0

Pozycja to jest po prostu indeks i, którym aktualnie iterujesz.

Oprócz tego:

  1. Cyfra to nie to samo co liczba.
  2. W C++ niedozwolone jest int tab[N]; dla niestałego N - powinieneś napisać int *tab = new int[N];, a najlepiej wykorzystać wektor.
1

Na temat odpowiadaj w postach.

aga1161 napisał(a)

A jeżeli mam znaleźć tylko pierwsze wystąpienie "x"?
A jak byś to zrobiła na kartce? Masz przed sobą sto losowych liczb w jednym rzędzie i masz odnaleźć pierwszą wskazaną.
Najprościej byłoby zacząć szukanie od lewej strony i przestać szukać po napotkaniu docelowej liczby - dokładnie identycznie to wygląda w kodzie źródłowym: szukasz i przestajesz szukać (tj. przerywasz pętlę) po odnalezieniu szukanej liczby.

0
Patryk27 napisał(a):

Na temat odpowiadaj w postach.

aga1161 napisał(a)

A jeżeli mam znaleźć tylko pierwsze wystąpienie "x"?
A jak byś to zrobiła na kartce? Masz przed sobą sto losowych liczb w jednym rzędzie i masz odnaleźć pierwszą wskazaną.
Najprościej byłoby zacząć szukanie od lewej strony i przestać szukać po napotkaniu docelowej liczby - dokładnie identycznie to wygląda w kodzie źródłowym: szukasz i przestajesz szukać (tj. przerywasz pętlę) po odnalezieniu szukanej liczby.

okej zrozumiałam, a jeśli teraz mam wyświetlić ostatnią pozycję tej liczby ?

1

No a jak byś to zrobiła na kartce? ;-)

1
Patryk27 napisał(a):

Pozycja to jest po prostu indeks i, którym aktualnie iterujesz.

Oprócz tego:

  1. Cyfra to nie to samo co liczba.
  2. W C++ niedozwolone jest int tab[N]; dla niestałego N - powinieneś napisać int tab* = new int[N];, a najlepiej wykorzystać wektor.
 #include <iostream>

/* run this program using the console pauser or add your own getch, system("pause") or input loop */
using namespace std;
int main(int argc, char** argv) {
	
	
int n;
int liczba;
cout<<"Podaj rozmiar tablicy:";
cin>>n;	
int *tab = new int[n];
cout<<"Elementy tablicy \n";
for(int i=0;i<n;i++)
{
    cout<<"Podaj "<< i+1 <<" element: ";
    cin>>tab[i];
}	
cout << "Podaj liczbe jaka chcesz sprawdzic \n";
cin >> liczba;	
for(int i=0;i<n;i++)
{
    if(tab[i]==liczba)
    {
    	cout<< liczba<<" znajduje sie na "<< i << " pozycji w tablicy";
	}
}
	
	
	return 0;
}
0
Patryk27 napisał(a):

No a jak byś to zrobiła na kartce? ;-)

Pewnie zaczęła szukać od końca

0

Czyli masz rozwiązanie: zacznij szukać od końca i przerwij po napotkaniu pierwszego wystąpienia.

0
Patryk27 napisał(a):

Czyli masz rozwiązanie: zacznij szukać od końca i przerwij po napotkaniu pierwszego wystąpienia.

Tyle, że ja programuje w C, a nie w C++

0

Ach, faktycznie - pośpiesznie założyłem C++ - już poprawione.
Wtedy konstrukcja int tab[N]; jest poprawna - tak czy siak nie ma to jednak wpływu na przeszukiwanie tablicy, kod będzie identyczny w obydwu językach.

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