aiuto per esame di informatica...

Messaggioda ing_mecc » 07/03/2006, 17:14

ciao raga... questo è il mio primo post.. speriamo possiate aiutarmi.... vi pongo un quesito..

:-D :-D

Si scriva una funzione C che riceve come parametro una stringa binaria s e ritorna:

uno se il num di caratteri 1 della stringa è magg del num di caratteri 0

zero se il num di caratteri 0 della stringa è magg del num di caratteri 1

meno uno se il num di caratteri 0 della stringa è uguale al num di caratteri 1.

Si scriva un programma main per provare la funzione. io l'ho fatto ma... azz non funzia....

ps : gli altri quesiti li scrivo dove??? help thankssss
ing_mecc
New Member
New Member
 
Messaggio: 1 di 92
Iscritto il: 07/03/2006, 17:02
Località: abito nell'operoso nord-est

Messaggioda Cheguevilla » 07/03/2006, 17:21

prova a postare quello che hai scritto, vediamo se troviamo l'errore.
Immagine

Rischiavano la strada e per un uomo
ci vuole pure un senso a sopportare
di poter sanguinare
e il senso non dev'essere rischiare
ma forse non voler più sopportare.
Avatar utente
Cheguevilla
Cannot live without
Cannot live without
 
Messaggio: 124 di 3869
Iscritto il: 12/02/2003, 13:24
Località: København

Messaggioda gigilatrottola » 07/03/2006, 18:43

Una cosa così?

int prova(char *binary){

int i = 0, zero = 0, uno = 0;

for( ; i < strlen(binary); i++){
if(binary[i] == '0')
zero++;
else
uno++;
}

return (zero == uno) ? -1 : ((zero < uno) ? 1 : 0);

}
Avatar utente
gigilatrottola
Junior Member
Junior Member
 
Messaggio: 40 di 223
Iscritto il: 21/08/2005, 15:54

Messaggioda superpunk733 » 07/03/2006, 20:08

gigilatrottola un po sbagliato il tuo prog... il for è tutto sballato (inizializzazione...) anche il return forse. Ora ci lavoro poi vi faccio sapere. Comunque è una funzione che va scritta prima di main() e poi richiamata...
"640k sono sufficienti per chiunque" -- Bill Gates, 1981
Immagine
Avatar utente
superpunk733
Junior Member
Junior Member
 
Messaggio: 67 di 419
Iscritto il: 27/01/2006, 10:35

Messaggioda superpunk733 » 07/03/2006, 20:19

Codice:
int restituisci(string s)
{
  int risultato=0;
  int i=0;
  int uno=0;
  int zero=0;
 
  for (i=0; i<s.length();i++)    //non mi ricordo se si scrive length o lenght che ignorante:P
  {
     if (s.substr(i,1)=="0") zero++;
     else uno++;
   }
  if (zero>uno) risultato=0;
  if (zero<uno) risultato=1;
  if (zero==uno) risultato=-1;

  return risultato;
}


cosi dovrebbe andare, è piu comprensibile per uno che inizia ed è al primo esame di informatica..
"640k sono sufficienti per chiunque" -- Bill Gates, 1981
Immagine
Avatar utente
superpunk733
Junior Member
Junior Member
 
Messaggio: 68 di 419
Iscritto il: 27/01/2006, 10:35

Messaggioda ing_mecc » 07/03/2006, 20:46

grazie mille raga per le riposte... non sapete quanto aiuto mi state dando... purtroppo la mia condizione non mi permette di frequentare molto e il prof è un po esigente... insomma mica faccio ing informatica.... cmq questo è quello che avevo iniziato a scrivere.... :oops: :oops: :oops:

#include <stdio.h>

main ()

{

int a = 1;
int b = 0;
int c = -1;
char stringa[100], i;
int counter_1 = 0;
int counter_0 = 0;

printf ("Inserire la stringa binaria e * per terminare:\n");
scanf ("%s", stringa);

while ( stringa[]!= * )

{

if ( stringa[] == '0' )
counter_0 += 1;

if ( stringa[] == '1' )
counter_1 += 1;

}

if ( counter_1 > counter_0 )
printf ("Risultato:%d", a);

if ( counter_1 < counter_1 )
printf ("Risultato:%d", b);

if ( counter_1 == counter_0 )
printf ("Risultato:%d", c);



return 0;

}

Devo aver fatto un bel casino..... poi ho un altro quesito....

Quanto valgono le variabili x, y dopo l'esecuzione della seguente sequenza di istruzioni:

float x=2.0
float y=3.0
float *p1=&x
float *p2=&y

*p1 = *p1 - --y
*p2 = y - *p2 + *p1

Mi sa che sto appello lo uso per accapararmi i vari testi ... mah... :shock:
"..Io sono l'ispettore capo Derrick, lui è Klein.."
ing_mecc
New Member
New Member
 
Messaggio: 2 di 92
Iscritto il: 07/03/2006, 17:02
Località: abito nell'operoso nord-est

Messaggioda superpunk733 » 07/03/2006, 20:50

quando si fa una funzione di solito si scrive *prima* del main... poi nel main si richiama..

inoltre devi includere

#include <iostream>
#include <string>

stringa[] ti fa casino perche devi mettere stringa.substr(n,e) dove n e' l'indice, e e' la lunghezza della sottostringa
"640k sono sufficienti per chiunque" -- Bill Gates, 1981
Immagine
Avatar utente
superpunk733
Junior Member
Junior Member
 
Messaggio: 69 di 419
Iscritto il: 27/01/2006, 10:35

Messaggioda superpunk733 » 07/03/2006, 21:11

acc!! te lho scritto in c++ il prog, non in c... porca...! quindi ho sbagliato... o_O sorry
niente pure l'include, non so ke librerie ci sono in c... perdonami :D

probabilmente gigilatrottola ha ragione... ecco perche non mi risultava il suo prog per via del char! (in c nn ci sono le stringhe vero? solo array di caratteri)! comunque il for e' sbagliato credo, questo posso dirlo... ? :D quel return mi sa sempre un po strano...
"640k sono sufficienti per chiunque" -- Bill Gates, 1981
Immagine
Avatar utente
superpunk733
Junior Member
Junior Member
 
Messaggio: 70 di 419
Iscritto il: 27/01/2006, 10:35

Messaggioda gigilatrottola » 07/03/2006, 21:19

Guarda che le funzioni puoi scriverle dove vuoi.
L'importante è dichiararne il prototipo prima di usarle.

Quindi scrivi int prova(char *); prima del main...
e poi la implementi dove preferisci.


Il ciclo for: nessuna delle tre parti che lo compongono è obbligatoria. Per capirci for(; ;) è corretto (nel caso esci da lciclocon un break).

Il return:
return (zero == uno) ? -1 : ((zero < uno) ? 1 : 0);

equivale a

if(zero == uno)
return -1;
else if(zero < uno)
return 1;
else
return 0;

Nn ti ho incluso ne le librerie ne il main perche li ti si chiede di scrivere la funzione... cmq eccolo
void main(){
char *gigi = "001100101011";
printf("%d", prova(gigi));
}
Ultima modifica di gigilatrottola il 07/03/2006, 22:28, modificato 1 volta in totale.
Avatar utente
gigilatrottola
Junior Member
Junior Member
 
Messaggio: 41 di 223
Iscritto il: 21/08/2005, 15:54

Messaggioda gigilatrottola » 07/03/2006, 22:02

float x=2.0
float y=3.0
float *p1=&x
float *p2=&y

*p1 = *p1 - --y
*p2 = y - *p2 + *p1

Valgono entrambi 0.
*p1 = *p1 - --y equivale a x = x - (y - 1) (ed y viene effettivamente decrementato)
(edit: y viene decrementato prima della sottrazione)
quindi x = 2 - 2 = 0.
quindi dopo questa riga x = 0, y = 2

*p2 = y - *p2 + *p1
equivale a y = y - y + x
2 = 2 - 2 + 0 = 0
Avatar utente
gigilatrottola
Junior Member
Junior Member
 
Messaggio: 42 di 223
Iscritto il: 21/08/2005, 15:54

Prossimo

Torna a Informatica

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite