• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Operacje na tablicach
#1
Witam.

Założyłem tu konto w sumie z powodu własnego pytania, jednak chyba zostanę na dłużej.

Narzekacie na mały ruch w interesie, to zagadka dla obeznanych. Smile

Mam dwie tablice, każda po 100 pozycji. Pozycje zawierają liczby do dwóch miejsc po przecinku, przy czym zakres odpowiada mniej więcej obciętemu względem zera sinusowi. Wiadomo, że w tabelach znajdują się też zera.

Pytanie: Jak obciąć tablice względem zera? Tzn. Tablica ma się zaczynać od pierwszej liczby po 0, z tym, że zer w rzędzie może być pare. Tu mamy prosty warunek z dwoma ifami. Ale jak zrobić nową tablice, o wymiarze jeszcze nie znanym? Ktoś umie dopisać kod?

Kod:
void setup() {

Serial.begin(9600);

}
unsigned char i,j,k;
float tablica_1[100];
float tablica_2[100];

void loop() {
delay(2000);
for(i = 0; i < 100; i++)
{
 tablica_1[i] = (analogRead(A0) * (5.0/1023.0));
 delay(1);
}

for(j = 0; j < 100; j++)
{
 tablica_2[j] = (analogRead(A1) * (5.0/1023.0));
 delay(1);
}

for(i=0; i<100; i++);
{
 if (tablica_1[i] == 0)
 
 {
   if (tablica_1[i+1] != 0)
   {
......
 
Odpowiedź
#2
1. Włącz ostrzeżenia kompilatora i je uważnie przeczytaj.
2. Wyjaśnij co to jest "obcięcie tablicy".
3. Nie potrzebujesz dynamicznej tablicy. Wystarczy że zapamiętasz położenie ostatniego elementu który dopisałeś do tablicy.
Pomagam za darmo więc szanuj mój czas.
Wklejaj tekst a nie jego zdjęcie.
Nie pisz następnego postu jak nie odpowiedziałeś na poprzedni.
Jak mądrze zadawać pytania
 
Odpowiedź
#3
Witam,
Nie wiem czemu ma to służyć, ale zamiast tego nie jest lepiej po prostu na etapie zapisywania do pierwszej tablicy po prostu nie zapisywać zer (tzn. zapisywać do tablicy tylko wartości różne od zera)? Na upartego- jeżeli ma być jakiś ślad po zerach- to do osobnej tablicy można zapisywać indeksy tablicy, dla których wystąpiły zera. Masz tablicę bez zer i osobną tablicę z zerami ;-)
Pozdrawiam.
 
Odpowiedź
#4
(22-03-2017, 17:59)namok napisał(a): 1. Włącz ostrzeżenia kompilatora i je uważnie przeczytaj.
2. Wyjaśnij co to jest "obcięcie tablicy".
3. Nie potrzebujesz dynamicznej tablicy. Wystarczy że zapamiętasz położenie ostatniego elementu który dopisałeś do tablicy.

Już tłumacze. Masz np ciąg liczb (użyje całkowitych, będzie szybciej) 12345007524107251 każda z tych cyfr to inny element tablicy. Obcięcie rozumiem w tym wypadku tak, że po analizie tablicy powstanie nowa, zawierająca jeden zestaw liczb po zerze do zera. Tutaj akurat tablica 75241. Problem w tym, że liczby są nieregularne: liczba liczb między zerami, ilość zer w rządzie. Tablica zapisuje się sama z wejścia analogowego i liczenie "w locie" nie wchodzi w grę. A zer nie mogę obciąć na etapie pobierania tablicy, bo nie potrzebuje tablicy bez zer, a jej kawałka między zerami Smile
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości