[RISOLTO] Problema esercizio con puntatori

di il
11 risposte

[RISOLTO] Problema esercizio con puntatori

Buongiorno, dovrò presto dare un esame di informatica base in cui sarà presente una parte di C.
In una vecchia traccia d'esame, è presente un programma, la richiesta è saper scrivere cosa stampa a schermo.
Sebbene io abbia letto la soluzione, non ho capito il motivo per cui stampa quel che stampa, oltre al fatto che non mi sono chiare alcune righe di codice.
Se qualcuno avesse voglia di commentare i punti più importanti del programma in modo da chiarirmi l'esecuzione del codice, mi farebbe un immenso piacere. Grazie mille

Il codice è il seguente
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

char* doSomething(char *a, char *b);
int main(void) {
char *a;
char *b;
int n = 7;
a = (char*)malloc(sizeof(char)*n);
strcpy(a,"casale");
b = doSomething(a,b);
printf("%s %c\n",a,*b);
return 0;
}
char* doSomething(char *a, char *b){
int n = 0;
char c;
b=a;
for (b,c='1',n=1; b<&a[strlen(a)]; b++,c++)
{ 
	if ((*b)=='a')
	{
		n++;
		*b = c;
	}
	else if ((*b)=='a'+4)
	{
		n++;
		*b = c-'1'+'3';
	}
	printf("%s %c\n",a,*b);
}
b = (char*)malloc(sizeof(char));
*b = ('0'+n);
return b;
}

11 Risposte

  • Re: [RISOLTO] Problema esercizio con puntatori

    Scusa, ma che richiesta è? Posta la singola linea e cosa non hai capito in quella, poi fai la stessa cosa per le altre. Non è che si possa commentare tutto...
  • Re: [RISOLTO] Problema esercizio con puntatori

    Temevo che postando la singola riga, non si capisse il senso della domanda.
    Ciò che non ho capito è:
    - A cosa serve l'istruzione a=b quando si parla di puntatori
    - Cosa significa b<&a[strlen(a)]
    - Cosa significa *b = c - '1' + '3'
    - Perché dopo il for, rialloca della memoria con la malloc
  • Re: [RISOLTO] Problema esercizio con puntatori

    1) ad eguagliare i "puntatori" ovvero fare si che puntino alla stessa area di memoria
    2) se b è inferiore all'indirizzo di dello ennesimo carattere di a con enne pari alla lunghezza della stringa contenuta in a
    3) il puntato da b vale il valore contenuto in c più ...
    4) perchè dato il punto 1, se vuole che b restituisca qualcosa di differente dal contenuto di a deve allocare la memoria per il contenuto
  • Re: [RISOLTO] Problema esercizio con puntatori

    Spero che l'esame non sia vicino...
  • Re: [RISOLTO] Problema esercizio con puntatori

    oregon ha scritto:


    Spero che l'esame non sia vicino...
    Grazie mille per l'aiuto
  • Re: [RISOLTO] Problema esercizio con puntatori

    StandardOil ha scritto:


    1) ad eguagliare i "puntatori" ovvero fare si che puntino alla stessa area di memoria
    2) se b è inferiore all'indirizzo di dello ennesimo carattere di a con enne pari alla lunghezza della stringa contenuta in a
    3) il puntato da b vale il valore contenuto in c più ...
    4) perchè dato il punto 1, se vuole che b restituisca qualcosa di differente dal contenuto di a deve allocare la memoria per il contenuto
    Okay, chiarissimo, grazie
  • Re: [RISOLTO] Problema esercizio con puntatori

    Xilofono98 ha scritto:


    oregon ha scritto:


    Spero che l'esame non sia vicino...
    Grazie mille per l'aiuto
    Non voleva essere un aiuto né altro. Solo una constatazione realistica.
  • Re: [RISOLTO] Problema esercizio con puntatori

    oregon ha scritto:


    Non voleva essere un aiuto né altro. Solo una constatazione realistica.
    Personalmente l'ho trovata abbastanza fuori luogo considerando che in questo topic chiedevo semplicemente una mano su un esercizio che conteneva un paio di istruzioni che mi avevano mandato abbastanza in confusione. Oltretutto trovo scientificamente irrispettoso che tu definisca la tua osservazione come una "constatazione realistica" poiché è evidente che tu non disponga degli elementi per comprendere la totalità della situazione: non conosci il mio corso di studi, non sai in che percentuale C sarà presente nell'esame, non conosci la mia preparazione sugli altri argomenti di C e nemmeno sugli altri argomenti di informatica. Mi dispiace, ma la tua non è assolutamente una constatazione realistica, ma una mera considerazione approssimativa e superficiale.
  • Re: [RISOLTO] Problema esercizio con puntatori

    Hai detto tu che "presto dovrai dare un esame" e questo è reale.
    Ora, se non sai che fa a=b o cosa significhi *b = ... , mi è sembrato giusto 'sperare per te' che l'esame non sia così vicino.
    Tutto il resto sono solo polemiche e nervosismi inutili. Buono studi (per questi problemi di base sui puntatori ti consiglio di usare il libro di testo e non il forum perché il primo ti chiarisce più a fondo le questioni).
  • Re: [RISOLTO] Problema esercizio con puntatori

    oregon ha scritto:


    Hai detto tu che "presto dovrai dare un esame" e questo è reale.
    Ora, se non sai che fa a=b o cosa significhi *b = ... , mi è sembrato giusto 'sperare per te' che l'esame non sia così vicino.
    Tutto il resto sono solo polemiche e nervosismi inutili. Buono studi (per questi problemi di base sui puntatori ti consiglio di usare il libro di testo e non il forum perché il primo ti chiarisce più a fondo le questioni).
    Onestamente, ciò che mi ha mandato in confusione dell'esercizio è stata la presenza dell'istruzione del for "b,c='1' ", che a prima vista avevo erroneamente interpretato come "b = 1, c = 1". Dato che b = '1' con b puntatore non ha alcun senso, ho fortemente dubitato delle mie conoscenze in fatto di puntatori e ho trovato opportuno chiedere consiglio su questo forum e onestamente mi è servito. Ovviamente continuerò ad usare il libro di testo, ma non vedo perché una cosa dovrebbe escludere l'altra
  • Re: [RISOLTO] Problema esercizio con puntatori

    Io concordo con Oregon, si è solo augurato (per te) che tu abbia il tempo di capire, avessi saputo che eri così "reattivo" a quello che ti si dice non ti avrei mai risposto, ricordatene........

    Xilofono98 ha scritto:


    Onestamente, ciò che mi ha mandato in confusione dell'esercizio è stata la presenza dell'istruzione del for "b,c='1' ", che a prima vista avevo erroneamente interpretato come "b = 1, c = 1". Dato che b = '1' con b puntatore non ha alcun senso, ......
    onestamente.... perché non hai chiesto lumi su questo fin da subito?
    invece di quello che hai chiesto, che non c'entra nulla col dubbio che avevi?
Devi accedere o registrarti per scrivere nel forum
11 risposte