labatteria.it • Leggi argomento - Quesito "informatico", ma è per tutti....


Quesito "informatico", ma è per tutti....

Qui nessuna conversazione sara' off-topic: tutti gli argomenti sono ammessi (eccetto quelli che rientrano negli altri forum).

Messaggioda Lars90 il gio giu 10, 2010 4:47 pm

Ragazzi sono alle prese con linguaggio C e sto dando di matto per pensare un algoritmo che deve fare la seguente cosa.
Praticamente data una serie di numeri a piacere, devo riconoscere l'indice della casella dove parte la prima serie di almeno 3 numeri dispari. Ok per chi non fosse chiaro lo semplifico.

Immagine

Questo è l'esempio e la serie è quella evidenziata in rosso. Dunque io devo riportare che " la serie di x numeri dispari ( nell'esempio 3 ) appare a partire dall'y elemento ( nell'esempio il quarto). Voi che metodo logico usereste ? Mi sto scervellando!
"Sacra Alleanza ProgMetal"
Avatar utente
Lars90
figlio di Buddy Rich
figlio di Buddy Rich
 
Messaggi: 3617
Iscritto il: ven feb 25, 2005 4:36 pm
Località: Roccapiemonte (SA)

Messaggioda mickytaylor il gio giu 10, 2010 4:53 pm

se ho capito bene e se mi ricordo un pò dovresti fare un ciclo dove confronti se Ai, a(i+1) e A(i+2) hanno il resto se dividi per 2 (se non mi sbaglio si usa il simbolo %) per sapere se pari o dispari e se lo sono l'indice sarà i

:tru
Immagine
Avatar utente
mickytaylor
maestro del groove
maestro del groove
 
Messaggi: 1047
Iscritto il: sab mag 26, 2007 12:32 pm
Località: Catania

Messaggioda Lars90 il gio giu 10, 2010 5:00 pm

Ehhh te pare così semplice ? :mrgreen: C'avevo pensato anche io, ma metti che la serie dispari è di 4 numeri ? Questo metodo te lo fai con le patate :mrgreen:
"Sacra Alleanza ProgMetal"
Avatar utente
Lars90
figlio di Buddy Rich
figlio di Buddy Rich
 
Messaggi: 3617
Iscritto il: ven feb 25, 2005 4:36 pm
Località: Roccapiemonte (SA)

Messaggioda mickytaylor il gio giu 10, 2010 5:09 pm

ok ok, allora crea una variabile int (chiamiamola temp) che ti conta i numeri dispari che trovi finchè non trovi un pari e se => a 3 l'indice sarà i-temp+1 :tru :tru
Immagine
Avatar utente
mickytaylor
maestro del groove
maestro del groove
 
Messaggi: 1047
Iscritto il: sab mag 26, 2007 12:32 pm
Località: Catania

Messaggioda cioto il gio giu 10, 2010 5:48 pm

:wink:
Avatar utente
cioto
Admin
 
Messaggi: 6919
Iscritto il: sab nov 23, 2002 1:13 pm
Località: Bari
facebook: www.facebook.com/labatteria.it

Messaggioda Shanik il gio giu 10, 2010 5:52 pm

Lars ma il contest di Asd alla fine l'hai fatto?
Feedback Manager | Come funziona? | Download Software

Immagine
Avatar utente
Shanik
guru delle pelli
guru delle pelli
 
Messaggi: 2923
Iscritto il: mer ott 26, 2005 6:23 am
Località: Ariano Irpino (AV) - Fisciano (SA)

Messaggioda Shanik il gio giu 10, 2010 6:58 pm

ci ho messo troppo...:D

Codice: Seleziona tutto
#include <stdio>
#include <stdlib>

#define LEN 10

void riempi_vettore(int* vet);
int cerca_dispari (int vet[]);

main()
{
   int vet[LEN];
   int posizione=0;
   int i;
   
   riempi_vettore(vet);
   posizione=cerca_dispari(vet);
   
   if (posizione==-1)
      printf("Non ci sono sequenze di almeno 3 numeri dispari consecutivi\n");
   else
      printf("La prima serie di almeno 3 dispari e' in posizione %d\n\n\n", posizione+1);
   
   system("PAUSE"); 
}

void riempi_vettore(int* vet)
{
   int i;
   for (i=0; i<LEN; i++)
   {
       printf("Inserisci l'elemento in posizione %d del vettore: ", i+1);
       scanf("%d", &vet[i]);
       printf("\n");
   }
}

int cerca_dispari (int vet[])
{
   int posizione=0, dispari=0;
   int i;
   
   for (i=0; i<LEN && dispari<3; i++)
   {
      if ((vet[i]%2)!=0)
         dispari++;
      else
         dispari=0;
   }
   
   if (dispari==3)
   {
      posizione=i-dispari;
      return posizione;
   }
   else
      return -1;
}
Avatar utente
Shanik
guru delle pelli
guru delle pelli
 
Messaggi: 2923
Iscritto il: mer ott 26, 2005 6:23 am
Località: Ariano Irpino (AV) - Fisciano (SA)

Messaggioda Rezedrumming il gio giu 10, 2010 7:08 pm

ma che sò 'ste cose! ahaahaha vedete che vi si fonde il cervello! :D :lol:
Rezedrumming
guru delle pelli
guru delle pelli
 
Messaggi: 1641
Iscritto il: ven gen 08, 2010 5:17 pm
Località: Foggia

Messaggioda Shanik il gio giu 10, 2010 7:14 pm

..troppo tardi!

Immagine

:lol:
Feedback Manager | Come funziona? | Download Software

Immagine
Avatar utente
Shanik
guru delle pelli
guru delle pelli
 
Messaggi: 2923
Iscritto il: mer ott 26, 2005 6:23 am
Località: Ariano Irpino (AV) - Fisciano (SA)

Messaggioda cioto il gio giu 10, 2010 7:16 pm

hahha :)
effettivamente vedere del codice per chi non ha mai programmato è abbastanza traumatica come esperienza 8)
Avatar utente
cioto
Admin
 
Messaggi: 6919
Iscritto il: sab nov 23, 2002 1:13 pm
Località: Bari
facebook: www.facebook.com/labatteria.it

Messaggioda Thunder il gio giu 10, 2010 7:19 pm

io sono dottore in scienze informatiche ma mi da i conati di vomito lo stesso :D
CERCO Timpano 18x16 Pearl Reference Granite Sparkle clikka qui!!!
Mio Mercatino: Pearl Reference 14x6.5 Acciaio - Sabian HHX Stage Crash 16 clikka qui!!!
Avatar utente
Thunder
figlio di Buddy Rich
figlio di Buddy Rich
 
Messaggi: 3584
Iscritto il: lun ago 29, 2005 7:16 pm

Messaggioda leletto il ven giu 11, 2010 1:21 am

Mitico il C!! son 10 anni che non lo tocco ma ancora mi affascina!!
Ora con la programmazione ad API son cambiate un sacco di cose. :cry:
Avatar utente
leletto
guru delle pelli
guru delle pelli
 
Messaggi: 2301
Iscritto il: lun mag 19, 2008 11:39 pm
Località: Pota Brèsa!

Messaggioda smellymilk il ven giu 11, 2010 9:25 am

aho, ma che programmatori siete? gli algoritmi si devono scrivere in pseudocodifica! :tru
Avatar utente
smellymilk
ho il ritmo nel sangue
ho il ritmo nel sangue
 
Messaggi: 773
Iscritto il: dom lug 06, 2008 7:05 pm
Località: Trento (adige west side)

Messaggioda Lars90 il ven giu 11, 2010 10:56 am

Grazie mille Shanik!!!! :P :P :P :P Il caricamento già l'avevo fatto mi serviva solo la funzione che cerca la serie. grazie mille! Solo che c'è un'unica cosa; praticamente la traccia mi dice di riportare poi "la serie di x numeri dispari inizia a partire dall'elemento di indice y",come faccio a ritornare quanti elementi dispari trovo ?


Comunque con ASD non sono andato avanti, mi faccio direttamente lo scritto all'esame :mrgreen:
"Sacra Alleanza ProgMetal"
Avatar utente
Lars90
figlio di Buddy Rich
figlio di Buddy Rich
 
Messaggi: 3617
Iscritto il: ven feb 25, 2005 4:36 pm
Località: Roccapiemonte (SA)

Messaggioda talismano il ven giu 11, 2010 11:48 am

a me invece diverte sempre vedere del codice...anche perché dopo migliaia di ore a scrivere e leggere codice è come se dal modo di scrivere il codice capisci che siamo tutti diversi. :D

comunque Lars cerca di spemerti un pò, avere tutta la soluzione del problema non sempre può esserti utile (SPESSO SI PERO' :D :D :D )
talismano
guru delle pelli
guru delle pelli
 
Messaggi: 2856
Iscritto il: lun ott 13, 2008 10:21 am

Messaggioda Shanik il ven giu 11, 2010 12:03 pm

@Lars90: ehaspè ci penso un attimo.. come ho fatto io appena trova una serie da tre esce dal ciclo.. quindi devo vedere come fare per serie maggiori di 3..
Feedback Manager | Come funziona? | Download Software

Immagine
Avatar utente
Shanik
guru delle pelli
guru delle pelli
 
Messaggi: 2923
Iscritto il: mer ott 26, 2005 6:23 am
Località: Ariano Irpino (AV) - Fisciano (SA)

Messaggioda Lars90 il ven giu 11, 2010 12:13 pm

Vabbè quello è semplice basta che invece di mettere if(dispari == 3 ) metti if(dispari >= 3).
Però come faccio a restituire sia la posizione sia la variabile dispari ? Io avevo pensato a due funzioni. Una che ritorna posizione e l'altra che ritorna la serie. Però giustamente quando faccio la funzione che trova la posizione come faccio a dirgli che deve essere uguale all'indice meno il numero di numeri dispari ? :mrgreen:
"Sacra Alleanza ProgMetal"
Avatar utente
Lars90
figlio di Buddy Rich
figlio di Buddy Rich
 
Messaggi: 3617
Iscritto il: ven feb 25, 2005 4:36 pm
Località: Roccapiemonte (SA)

Messaggioda Shanik il ven giu 11, 2010 12:57 pm

#include <stdio>
#include <stdlib>

#define LEN 10

void riempi_vettore(int* vet);
int cerca_indice_dispari (int vet[]);
int cerca_numero_dispari (int vet[]);

main()
{
int vet[LEN];
int posizione=0;
int dispari=0;
int i;

riempi_vettore(vet);
posizione=cerca_indice_dispari(vet);
dispari=cerca_numero_dispari(vet);

if (posizione==-1)
printf("Non ci sono sequenze di almeno 3 numeri dispari consecutivi\n");
else
printf("La serie di %d dispari e' in posizione %d\n\n\n",dispari, posizione+1);

system("PAUSE");
}

void riempi_vettore(int* vet)
{
int i;
for (i=0; i<LEN; i++)
{
printf("Inserisci l'elemento in posizione %d del vettore: ", i+1);
scanf("%d", &vet[i]);
printf("\n");
}
}

int cerca_numero_dispari (int vet[])
{
int posizione=0, dispari=0;
int i=0;

while (i<LEN>=3)
{
i++;
while ((vet[i]%2)!=0 && i<LEN)
{
dispari++;
i++;
}
return dispari;
}
i++;
}
return -1;
}

int cerca_indice_dispari (int vet[])
{
int posizione=0, dispari=0;
int i=0;

for (i=0; i<LEN && dispari<3; i++)
{
if ((vet[i]%2)!=0)
dispari++;
else
dispari=0;
}

if (dispari==3)
{
posizione=i-dispari;
return posizione;
}
else
return -1;
}
Avatar utente
Shanik
guru delle pelli
guru delle pelli
 
Messaggi: 2923
Iscritto il: mer ott 26, 2005 6:23 am
Località: Ariano Irpino (AV) - Fisciano (SA)

Messaggioda xtremeflier il ven giu 11, 2010 1:04 pm

vomito..
There is no heaven without a hell
Cervello tu non piaci a me e io non piaccio a te ma adesso dobbiamo collaborare
BEVETE GAZZOSA A CAFFE'• La bevono anche Bizio, Xanadu, Quisdam, Paul Valium e Dave Vaginale! Entra anche tu nel club!
Comitato per il ricordo della specie estinta causa bracconaggio "herpes vaginale" ex "dave grohl"
Avatar utente
xtremeflier
Buddy Rich
Buddy Rich
 
Messaggi: 4803
Iscritto il: ven giu 12, 2009 2:58 pm
Località: +38° 54' 51.83", +16° 15' 43.03"

Messaggioda Lars90 il ven giu 11, 2010 2:22 pm

Grazie mille collega! :mrgreen:
"Sacra Alleanza ProgMetal"
Avatar utente
Lars90
figlio di Buddy Rich
figlio di Buddy Rich
 
Messaggi: 3617
Iscritto il: ven feb 25, 2005 4:36 pm
Località: Roccapiemonte (SA)


http://www.youtube.com/watch?v=NP5_CJg7oKQ

Torna a Tutto il resto

Chi c’è in linea

Visitano il forum: Nessuno e 4 ospiti