Curiosità

Messaggioda stellacometa2003 » 18/12/2005, 08:19

Ragazzi...avrei una domanda da farvi...

Sapete come si fa a fare l'algoritmo di questo problema: Verificare che all'interno di una parola inserita da tastiera vi sia la lettera "a".

E' un bel pò che me lo domando ma mi è sempre rimasto il dubbio....
Avatar utente
stellacometa2003
Senior Member
Senior Member
 
Messaggio: 373 di 1844
Iscritto il: 03/10/2005, 21:11
Località: Cinisi (PA)

Messaggioda Nidhogg » 18/12/2005, 12:23

Vuoi sapere l'algoritmo in generale o in un linguaggio specifico?
"Una delle principali cause della caduta dell'Impero Romano fu che, privi dello zero, non avevano un modo per indicare la corretta terminazione dei loro programmi C." - Robert Firth
Nidhogg
Senior Member
Senior Member
 
Messaggio: 620 di 1491
Iscritto il: 24/02/2004, 18:29
Località: Baronissi (Salerno) - Italia

Messaggioda Nidhogg » 18/12/2005, 12:54

In linguaggio Pascal:

Codice:
Program VerificaLettera;
Uses WinCrt;
Var lettera:char;
    parola:string;
    i,flag:integer;
begin
   write('Inserisci la lettera da trovare nella parola: ');
   readln(lettera);
   writeln;
   write('Inserisci la parola: ');
   readln(parola);
   flag:=0;
   for i:=1 to length(parola) do
      if parola[i]=lettera then flag:=1;
   writeln;
   if flag=1 then writeln('La lettera ',lettera,' è presente in ',parola)
      else writeln('La lettera ',lettera,' non è presente in ',parola);

end.
"Una delle principali cause della caduta dell'Impero Romano fu che, privi dello zero, non avevano un modo per indicare la corretta terminazione dei loro programmi C." - Robert Firth
Nidhogg
Senior Member
Senior Member
 
Messaggio: 621 di 1491
Iscritto il: 24/02/2004, 18:29
Località: Baronissi (Salerno) - Italia

Messaggioda Nidhogg » 18/12/2005, 13:05

In linguaggio C:

Codice:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 100

int main(void)
{
   char lettera;
   char parola[MAX];
   int i,flag;

   printf("\n Inserisci la lettera da trovare nella parola: ");
   scanf("%c",&lettera);

   printf("\n Inserisci la parola: ");
   scanf("%s",&parola);
   
   flag=0;
   for (i=0;i<strlen(parola);i++)
      if (parola[i]==lettera) flag=1;

   if (flag==1) printf("\n La lettera %c è presente in %s \n",lettera,parola);
      else printf("\n La lettera %c non è presente in %s \n",lettera,parola);
   
   system("pause");
   return 0;
}


Poi in linguaggio C esiste una funzione, la strchr, che implementa direttamente questo algoritmo. Gli algoritmi di ricerca di stringhe aventi il compito di trovare una data sottostringa o una data configurazione di caratteri sono molto interessanti!!!

Se hai bisogno di chiarimenti chiedi pure.
"Una delle principali cause della caduta dell'Impero Romano fu che, privi dello zero, non avevano un modo per indicare la corretta terminazione dei loro programmi C." - Robert Firth
Nidhogg
Senior Member
Senior Member
 
Messaggio: 622 di 1491
Iscritto il: 24/02/2004, 18:29
Località: Baronissi (Salerno) - Italia

Messaggioda stellacometa2003 » 18/12/2005, 16:28

Mi interesserebbe in linguaggio Visual Basic...ma ovviamente vorrei spiegato come si procede!!! Grazie
Avatar utente
stellacometa2003
Senior Member
Senior Member
 
Messaggio: 378 di 1844
Iscritto il: 03/10/2005, 21:11
Località: Cinisi (PA)

Messaggioda Nidhogg » 18/12/2005, 17:02

Esiste una funzione in VB, InStr, che permette la ricerca di una sottostringa all'interno di una stringa.


Codice:
Private Function EInStr (ByVal parola1 As String, ByVal parola2 As String) As Long
Dim i As Integer
Dim Finito As Boolean

Finito = False
EInStr = 0 
If Len(parola1) >= Len(parola2) Then
   i = 1 
   Do While Mid dollaro(parola1, i, Len(parola2)) <> parola2
      If i > Len(parola1) - Len(parola2) + 1 Then
         i = 0
         Finito = True
      Else
         i = i + 1
      End If
   Loop
End If
EInStr = i
End Sub


parola1 = "MIAO MIAO"
parola2 = "IAO"
EInStr(parola1,parola2) --> 2 'trovata a partire dalla posizione 2
EInStr(parola1,"BAU") --> 0 'non trovata[/quote]
Ultima modifica di Nidhogg il 20/12/2005, 17:33, modificato 1 volta in totale.
"Una delle principali cause della caduta dell'Impero Romano fu che, privi dello zero, non avevano un modo per indicare la corretta terminazione dei loro programmi C." - Robert Firth
Nidhogg
Senior Member
Senior Member
 
Messaggio: 629 di 1491
Iscritto il: 24/02/2004, 18:29
Località: Baronissi (Salerno) - Italia

Messaggioda stellacometa2003 » 18/12/2005, 19:58

Grazie Leonardo...forse è inutile ma a noi lo fanno studiare..perciò, sapete a sommi capi come dovrei impostare il diagramma a blocchi?
Avatar utente
stellacometa2003
Senior Member
Senior Member
 
Messaggio: 379 di 1844
Iscritto il: 03/10/2005, 21:11
Località: Cinisi (PA)

Messaggioda lorven » 18/12/2005, 20:46

Mi sono permesso di completare e modificare il buon programma di Leonardo, che presentava però qualche errore, evidentemente di distrazione.
Ho costruito un form con un solo COMMAND BUTTON che attiva COMMAND1_CLICK.

Private Function MiaInStr(ByVal parola1 As String, ByVal parola2 As String) As Long
Dim i As Integer
Dim Finito As Boolean

Finito = False
MiaInStr = 0
i = 1
Do While Not Finito
If Mid(parola1, i, Len(parola2)) = parola2 Then
Finito = True
MiaInStr = i
End If
If i > Len(parola1) - Len(parola2) Then
Finito = True
Else: i = i + 1
End If
Loop
End Function

Sub COMMAND1_CLICK()
Dim par1 As String
Dim par2 As String
Dim messaggio As String
Dim posiz As Long

par1 = InputBox("parola 1:")
par2 = InputBox("parola 2:")
posiz = MiaInStr(par1, par2)
If posiz > 0 Then
messaggio = "la parola " + par2 + " appare in " + par1 + " in posizione " + CStr(posiz)
Else: messaggio = "la parola " + par2 + " non appare in " + par1
End If
MsgBox messaggio
End Sub

N.B.: Dopo MID c'è il simbolo del dollaro!
Per il diagramma a blocchi: non ho il programma per disegnarlo; se necessario, posso realizzarlo a mano e inserirne una immagine scannerizzata (ma spero di no ...) ;-)
Avatar utente
lorven
Junior Member
Junior Member
 
Messaggio: 7 di 369
Iscritto il: 06/12/2005, 20:55

Messaggioda Nidhogg » 20/12/2005, 14:37

Non capisco che errori hai trovato nel mio programma. Non metto in dubbio che li hai trovati, ma quali sono?
"Una delle principali cause della caduta dell'Impero Romano fu che, privi dello zero, non avevano un modo per indicare la corretta terminazione dei loro programmi C." - Robert Firth
Nidhogg
Senior Member
Senior Member
 
Messaggio: 643 di 1491
Iscritto il: 24/02/2004, 18:29
Località: Baronissi (Salerno) - Italia

Messaggioda stellacometa2003 » 20/12/2005, 14:40

Ragazzi...fatemi capire anche a me...ci sono delle funzioni che non ho mai utilizzato..Ricordatevi che ho iniziato da poco a studire VB
Avatar utente
stellacometa2003
Senior Member
Senior Member
 
Messaggio: 391 di 1844
Iscritto il: 03/10/2005, 21:11
Località: Cinisi (PA)

Prossimo

Torna a Informatica

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite