domanda veloce e semplice, si può selezionare un array da un inizio x a una fine y senza occupare memoria creando un secondo array??
dovrei fare una cosa simile:
char array[100] = {'c','i','a','o'}
switch (array[da(2):a(3)]) { //quindi solo a , o
case "ao":
//.....
break;
case "ecc...":
//.....
break;
default:
//.....
}
Assolutamente no.
Inoltre assolutamente l'istruzione switch può solo valutare numeri interi (char, int, long) e dicendo questo si intende un carattere come rappresentazione numerica ('A'=>65) e per nulla quindi le stringhe (che sono vettori e quindi valori "multipli")
Testato:
oppure, prova anche ad usare gli operatori, tipo un case su ('a' || 'o'), cosi' non devi scrivere case uguali
Nella switch il case è esclusivamente un valore numerico intero, non sono ammessi i float, anche se tale valore può derivare da un qualunque calcolo sulla riga stessa del case non sono ammessi gli operatori logici.
Il case lavora sempre e solamente su un singolo valore per volta.
E' possibile fare una somma pesata per analizzare una porzione di stringa, ovvero si prendono i singoli valori ascii dei caratteri e si sommano tra loro dandogli un peso crescente a seconda della posizione, però è un sistema che è limitato dal valore intero massimo rappresentabile con 32 bit e permette di analizzare porzioni di vettore composte da pochi caratteri.
forse si puo' aggirare la cosa ?
idea cosi' al volo, non provata
se come variabile da valutare metti la cella che contiene a piu' quella della o - switch (array cella 2 + 3)
e poi come case metti la relativa somma ascii ?
si incazza il compilatore ?
ok grazie per le idee .. per ora valuto perché sto lavorando con le pagine web è questa la necessità di non caricare troppe variabili "doppioni".
purtroppo ho un buffer seriale che più grande è e meglio è...
più vado avanti con la programmazione è più mi rendo conto di dover diminuire quest'ultimo array a causa della memoria limitata.
per questo cercavo un sistema del genere, e l'idea di dare un peso ai caratteri non è male potrebbe essere anche un CRC 16 per esempio .. solo che in rari casi potrebbero coincidere con altre stringe, comunque elaborerò un algoritmo almeno ci proverò.
per quanto riguarda la bassa memoria faccio un piccolo [OT]
volevo risolvere il problema con un micro più grande e potente che un atmega (tirato a 20mhz)
ero partito usando uno di quei arduino mini pro (328p) a 2€ su ebay risaldando il quarzo, quindi non volevo superare di tanto il prezzo finale del mio dispositivo anche perché una volta finito ne ho da realizzare un bel po.
ovviamente potrei profondamente sbagliarmi ma purtroppo non ho trovato documentazione, mi viene da pensare che sono arduini con arm.. sapete dirmi qualcosa in merito, o altrimenti consigliarmi altri moduli low cost più potenti?
Assolutemente no, quei moduli NON sono Arduini con un Arm sopra.
E quella usb ti inganna. Non li programmi tramite un IDE e USB ma necessitano di un loro programmatore.
Inoltre l'ambiente di sviluppo e quindi codice/librerie NON è compatibile con Arduino.
Qualcosa di più potente (Arm con più SRAM) e "abbastanza" compatibile è Teensy 3.1 ma costa molto.
Interessante. Io ho una Maple pagata poco ma con un suo IDE del menga.
Però, non proprio una libreria. Hanno creato board per IDE Arduino e alcune librerie le hanno adattate, ma se poi leggi in giro nei vari menu di quel sito, poche cose sono tested.