PDA

View Full Version : [C] Funzioni


Satiel
25-06-2006, 17:02
Ciao ho aperto un'altra discussione perchè non c'entra nulla con la precedente (ma se ho sbagliato ditemelo).

Ora il problema si fa complesso
Esercizio
Scrivere una funzione
int punto1(char P[], char Q[], int k);
che restituisce il valore 1 se almeno k vocali della stringa P sono contenute nella stringa Q, 0 in caso contrario;
si suppone che i caratteri della stringa P(e Q) siano tutti minuscoli e non ripetuti.

Ora, aiutandomi con il testo ho scritto questa funzione


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

int punto1(char P[], char Q[], int k){

int ricerca(char parola[], char c);
int J=0;
int count=0;

while (P[J] !='\0'){
if (ricerca(Q,P[J])==1)
count++;
J++;
}
if (count>=k)
return 1;
else
return 0;
}

int main(int argc, char *argv[])
{






system("PAUSE");
return 0;
}



Problema1
Non riesco a capire come funziona la funzione punto1

Problema 2
Nel main avevo pensato ad una cosa di questo genere per inserire i dati


printf("inserire la prima parola-> ");
scanf("%1s", &punto1(P));
printf("Inserire la seconda parola->");
scanf("%1s", &punto1(Q));
printf("Quante vocali devono essere contenute in Q? ");
scanf("%d", &punto1(k));



Ovviamente non funziona, qualcuno riesce a risolverla?

Black imp
25-06-2006, 20:04
1. io non ho letto gli altri thread quindi non ho la minima idea di quale sia il problema. l'hai scritta tu quella funzione? l'ha scritta chi? che cosa devi fare??

2. che cosa ci fa nella funzione punto la dichiarazione int ricerca(char parola[], char c); ?? :mbe:

[edit] ok ho letto meglio: ha copiato la funzione dal libro ma non capisci come funziona.

beh innanzi tutto la funzione ricerca non la dichiari dentro la funzione punto ma fuori! poi devi anche definirla!

la funzione punto è chiaro come funge: con un ciclo for scandisce uno dei due vettori, carattere per carattere, e per ogni carattere passa il puntatore all'altro vettore e quel carattere alla funzione ricerca. che cosa non capisci?

Black imp
25-06-2006, 20:10
adesso parliamo del main... ma senti tu sei sicuro di avere studiato un po' di C?? ho l'impressione che tu stia svolgendo degli esercizi senza aver studiato la teoria. studiati bene puntatori e array ... e anche come si invocano le funzioni. insomma studia almeno le basi :rolleyes:

Satiel
25-06-2006, 20:21
Beh la teoria è ancora più incasinata, è vero sulle funzioni ci capisco poco ma in particolare volevo capire che ruolo giocava la funzione ricerca(char parola[], char c) perchè proprio nn l'ho capita, avrei bisogno della soluzione per questa sera purtroppo quando si ha un esame in cu*o all'altro si deve tirare via per forza....

Black imp
25-06-2006, 22:14
Beh la teoria è ancora più incasinata, è vero sulle funzioni ci capisco poco ma in particolare volevo capire che ruolo giocava la funzione ricerca(char parola[], char c) perchè proprio nn l'ho capita, avrei bisogno della soluzione per questa sera purtroppo quando si ha un esame in cu*o all'altro si deve tirare via per forza....


ma non vedi che non c'è la funzione ricerca?? è solo dichiarata - peraltro all'interno di un'altra e in C credo non sia possibile - ma non definita. come cavolo fai a chiamare la funzione punto1 a rate?? prima memorizzi gli scan in 2 vettori e una var e POI con questi tre chiami una volta sola la funzione primo.
scusa ti capisco per la necessità di fare in fretta che c'è nel nuovo ordinamento però non è 'divertente' aiutare tutti quelli che non volendo o potendo studiare chiedono di spiegargli quello che si impara in giorni di studio e applicazione.

cnque la funzione ricerca PRESUMIBILMENTE confronterà tutto il vettore con il carattere che gli viene passato. appena trova una corrispondenza, ritorna - perchè c'è scritto che non si ripetono i caratteri - oppure se non trova niente arriva fino in fondo. :rolleyes:

Satiel
26-06-2006, 10:55
ma non vedi che non c'è la funzione ricerca?? è solo dichiarata - peraltro all'interno di un'altra e in C credo non sia possibile - ma non definita. come cavolo fai a chiamare la funzione punto1 a rate?? prima memorizzi gli scan in 2 vettori e una var e POI con questi tre chiami una volta sola la funzione primo.
scusa ti capisco per la necessità di fare in fretta che c'è nel nuovo ordinamento però non è 'divertente' aiutare tutti quelli che non volendo o potendo studiare chiedono di spiegargli quello che si impara in giorni di studio e applicazione.

cnque la funzione ricerca PRESUMIBILMENTE confronterà tutto il vettore con il carattere che gli viene passato. appena trova una corrispondenza, ritorna - perchè c'è scritto che non si ripetono i caratteri - oppure se non trova niente arriva fino in fondo. :rolleyes:

Prima di tutto calmati, l'esame l'ho fatto e sembra sia andato bene.
Per seconda cosa ho detto ma magari fai fatica a capire che QUEL CAVOLO DI PEZZO DI CODICE PRIMA DEL MAIN L'HO COPIATO DALLE DISPENSE DEL PROFESSORE QUINDI IO CHE MINCHIA NE SO SE CI VUOLE O NO LA FUNZIONE RICERCA????? A PARTE LA FUNZIONE RICERCA AVEVO CAPITO COME FUNZIONAVA MICA SONO SCEMO

Ultima cosa: per questo programma ho passato venerdi pomeriggio sabato dalle 10 alle 17 e domenica dalle 10 alle 23 per prepararmi all'esame (senza contare che avevo già seguito le lezioni il mese scorso) quindi la voglia di imparare c'è ma se gli strumenti che mi hanno fornito i prof non sono sufficienti o sono ad un livello "superiore" che non riesco a comprendere ci posso fare poco ;)

Andlea
26-06-2006, 18:15
se gli strumenti che mi hanno fornito i prof non sono sufficienti o sono ad un livello "superiore" che non riesco a comprendere ci posso fare poco ;)
Se sei all'università, scordati questa frase.
Capiterà spessissimo che il prof dia solo una traccia, che poi approfondirai per conto tuo. Questo quando sei fortunato.
Quando feci il corso di reti di calcolatori ad esempio il prof dava per scontato che sapessimo usare java, che era stato appena sfiorato nei corsi precedenti.
A quel punto si prende una guida online o un libro e ci si mette a far prove.

Satiel
26-06-2006, 19:08
Hai ragione ma io mi lamentavo del fatto che se vengo qui sul forum e faccio una domanda su come impostare le funzioni in C e poi mi si risponde con "leggiti il manuale"....lo so anche io che devo leggermi un manuale ma pensavo che qui avrei trovato più velocemente una risposta...