Page 2 of 3
Posted: Sat Oct 29, 2011 11:49 am
by snipershady
Si è iscritto ad ing. informatica
il pipponcello.
E ha un po' di difficoltà con l'esame di programmazione 1
Posted: Sat Oct 29, 2011 12:11 pm
by TheJackal
No, mi chiedevo nello specifico a che punto del programma fosse e per quale insegnamento fossero destinati gli esercizi in questione
Re:
Posted: Sat Oct 29, 2011 12:41 pm
by hooah!!!
TheJackal wrote:Quindi white, sti esercizi a che cazzo servivano? Qui siamo curiosi di capire qual era lo scopo! Anche se mi sa che è come dice Gennaro
Al prof. non interessa sapere se ci riesci a scrivere una nova stringa,
a lui interessa sapere se e come ragioni e come affronti il problema.
Questa è la differenza tra il mondo didattico e in genere (ma non sempre differiscono) il mondo del lavoro.
Se ad esempio invece di scrivere una nuova stringa ti avessi detto di invertire la stesssa senza utilizzare stringa di appoggio (senza comandi utility intrinseche al linguaggio che potresti anche non conoscere) lo devi saper fare o almeno dimostrare di saperlo fare.
Posted: Sat Oct 29, 2011 12:43 pm
by snipershady
ma tu genny come avresti fatto?
Posted: Sat Oct 29, 2011 1:15 pm
by White_Shark
Hooah docet !

Questi esercizi hanno appunto come unico scopo il farti abituare a ragionare e a prendere dimestichezza con i vari array, cicli, struct ecc. L'unico problema è che ci schiaffano gli esercizi da fare, non riusciamo, e nessuno (prof o alunni) si degna di postare da qualche parte la soluzione. Come faccio quindi a capire il procedimento ?? O.o
Invertirla nella stessa stringa lo so fare, il mio problema era proprio utilizzare l'altra stringa. In ogni caso ormai è andata, l'esercizio in 4 l'abbiamo fatto o meglio, uno l'ha fatto e noi l'abbiam copiato e visto che così non serve a nulla, dopo vi posto le soluzioni e se avete voglia di darmi una mano a capirle vi ringrazierei molto !

Re:
Posted: Sat Oct 29, 2011 1:43 pm
by hooah!!!
snipershady wrote:ma tu genny come avresti fatto?
All'univeristà l'avrei fatto così in pseudocodice
j=0
for i=n to length(s){
s1[j]=s
j=j+1
}
poi traducetevelo come vi pare.
White, un consiglio confrontatevi tra di voi colleghi e fate bene a scriverli in codice eseguibile.
Ma quando non capite andate a ricevimento dal prof. è l'unica alternativa per passare l'essame, e l'unica chance per fa diventare un 18 allo scritto un 28 se non di più all'orale.
Perchè capisci quello che devi dimostrare di aver capito.
White post posta..
P.s. pessima scelta come facoltà
Posted: Sat Oct 29, 2011 3:02 pm
by White_Shark
Se magari lo facessero il ricevimento...-.- Poi in caso lo facciano, è sempre ad orari in cui hai lezione o comunque improponibili..
Guarda, anche un 18 andrebbe bene per sto primo anno...
Come mai dici pessima scelta ?
Re: Re:
Posted: Sat Oct 29, 2011 3:07 pm
by White_Shark
Hooah!!! wrote:snipershady wrote:ma tu genny come avresti fatto?
All'univeristà l'avrei fatto così in pseudocodice
j=0
for i=n to length(s){
s1[j]=s
j=j+1
}
Ma scusa, come fai ad attribuire il valore di una stringa ad un altro ? sul mio libro dice che non si può fare e tra l'altro eseguendolo mi dice Segmentation fault
Re: Re:
Posted: Sat Oct 29, 2011 4:16 pm
by hooah!!!
White_Shark wrote:Hooah!!! wrote:snipershady wrote:ma tu genny come avresti fatto?
All'univeristà l'avrei fatto così in pseudocodice
j=0
for i=n to length(s){
s1[j]=s
j=j+1
}
Ma scusa, come fai ad attribuire il valore di una stringa ad un altro ? sul mio libro dice che non si può fare e tra l'altro eseguendolo mi dice Segmentation fault
L'assegnazione tra stringhe non può essere eseguito con l'operatore =.
L'assegnazione dei valori di ogni singolo carattaere si.
della serie
s1=s potrebbe darti problemi
s1[indice]=s[altro indice] E' CORRETTO
A parte che questa limitazione è intrinseca del C, comunque ragionandoci, proprio la funzione strnlen (per calcolare la lunghezza di una stringa) verifica carattere per carattere
se il valore di una stringa sia uguale al carattere terminatore speciale (\0).
Ad esempio la strlen è questa
Code: Select all
length=0;
while (miastringa[length]|=‘\0’) {
length++;
}
Pure la copia di una stringa in un altra..
non si puo fare A=B
si fa invece così ammesso che siano di pari lunghezza
Code: Select all
for (i = 0; i<N ;i++)
s1[i] = s[i];
Posta il codice.
Posted: Sat Oct 29, 2011 5:43 pm
by alb3rt0
si appunto perché la stringa è un array di char che termina con il char '\0' e non una semplice variabile.
Posted: Sat Oct 29, 2011 5:48 pm
by White_Shark
Scusa per il ritardo.
Non mi ricordavo bene, ho solo il codice del primo, il triangolo di Tartaglia non siamo riusciti a farlo!
ecco il primo:
Code: Select all
/* Scrivere un programma che chiede all'utente una stringa s (max 30) e un numero positivo n. Il programma costruisce in una nuova stringa s1 il suffisso di s di lunghezza n. Esempio: Input: s=abcdef, n=3 -> Output: s1=def */
#include <stdio.h>
#define N 30
int main (int argc, char * argv [])
{
char s[N+1],s1[N+1];
int n,i,j,z;
printf ("Inserire un una parola ");
scanf("%s",s);
printf("Inserire la lunghezza del suffisso ");
scanf("%d",&n);
for (i=0;i<N && s[i]!='\0';i++);
j=i-n;
z=0;
while (j<=i) {
s1[z]=s[j];
z++;
j++;
}
printf("Il suffisso della stringa di lunghezza %d e' %s \n",n,s1);
return 0;
}
Posted: Sat Oct 29, 2011 6:11 pm
by alb3rt0
primo step del for:
i=0 e se n > 0 j diventa negativo
==> segmentation fault.
Re:
Posted: Sat Oct 29, 2011 6:32 pm
by White_Shark
alb3rt0 wrote:primo step del for:
i=0 e se n > 0 j diventa negativo
==> segmentation fault.
Non ho capito cosa intendi
Posted: Sat Oct 29, 2011 6:39 pm
by alb3rt0
esempio
i=0
n=5
j= -5
s1[0]=s[-5]
segmentation fault
gli array vanno da 0 a N-1
da come hai dichiarato s, va da 0 a N e tu hai un numero negativo
Posted: Sat Oct 29, 2011 6:45 pm
by White_Shark
Ho capito cosa intendi, solo che non posso aiutarti visto che non l'ho capito, per quello chiedo a voi se riuscite a spiegarmelo. Eseguendolo però funziona!