Leggi il Topic


Indice del forumMotobarForum Internet & Hi-Tech

   

Pagina 1 di 1
 
Risolvere un problemino C++
12653808
12653808 Inviato: 8 Nov 2011 19:36
Oggetto: Risolvere un problemino C++
 

ciao, a tutti

sono alle prese con un problemino del cacchio



""
#include<iostream>
#include<stdio.h>
/*5) Scrivere una funzione che accetti due numeri num1,num2 e un simbolo.
Se simbolo 'M' restituisce il maggiore tra i due numeri
Se simbolo 'm' restituisce il minore tra i due numeri
*/

int num1, num2;
char car;

char magmin (int n1, int n2,char c)
{
int min;
if(c=='m'&& n1<n2)
min=min+n1;
if(c=='M'&& n1>n2)
min=min+n1;
return min;
}
int main (void)
{
int ris;
ris=magmin(3, 4,'m');
printf("Il risultato vale/n%d",ris);
system("pause");
}

""

mi da errore sulla prima graffa aperta dopo che dichiaro le variabili della funzione, qualche suggerimento?

son convinto sia una cagatina, ma al momento mi sfugge!

*EDIT: ora il programma si avvia ma spara dei numeri a caso 0509_si_picchiano.gif
 
12654017
12654017 Inviato: 8 Nov 2011 20:11
 

a me compila senza problemi, ma perchè la funzione l' hai dichiarata come char?
se ritorni un intero la funzione dichiarala come intera 0509_up.gif
ah un consiglio, per migliorare la leggibilità metti sempre le funzioni in coda al main, lasciando solo i prototipi all' inizio.
poi i numeri sono casuali perchè non li ricevi 0509_si_picchiano.gif o li chiedi in input o li imposti via codice, così lui alloca uno spazio per le 2 variabili, ma quello spazio non è vuoto, c'è qualcosa che non conosciamo e quindi spara roba a caso icon_asd.gif
 
12654033
12654033 Inviato: 8 Nov 2011 20:14
 

Quindi? 0509_si_picchiano.gif

l'ho sistema come dovuto,

la compila però spara numeri a caso lo stesso .-.

#include<iostream>
#include<stdio.h>
/*5) Scrivere una funzione che accetti due numeri num1,num2 e un simbolo.
Se simbolo 'M' restituisce il maggiore tra i due numeri
Se simbolo 'm' restituisce il minore tra i due numeri
*/

int num1=7, num2=15;
char car='m';

int magmin (int n1, int n2,char c)
{
int min;
if(c=='m' && n1<n2)
min=min+n1;
if(c=='M' && n1>n2)
min=min+n1;
return min;
}
int main (void)
{
int ris;
ris=magmin(num1, num2,car);
printf("Il risultato vale:%d",ris);
system("pause");
}
 
12654110
12654110 Inviato: 8 Nov 2011 20:28
 

ti scrivo una mia soluzione al problema

Codice:
#include<iostream>
#include<stdio.h>
/*5) Scrivere una funzione che accetti due numeri num1,num2 e un simbolo.
Se simbolo 'M' restituisce il maggiore tra i due numeri   
Se simbolo 'm' restituisce il minore tra i due numeri
*/

int magmin (int , int ,char );

int main (void)
{
  int ris, num1=5, num2=15;
  char car='m'; 
  ris=magmin(num1, num2,car);
  printf("Il risultato vale:%d",ris);
  system("pause");
}

int magmin (int n1, int n2,char c)
{
int min;
if(c=='m' && n1<n2 || c=='M' && n1>n2)
    min=n1;
else 
    if(c=='m' && n1>n2 || c=='M' && n2>n1)
       min=n2;

return min;
}

così non valuta se sono uguali
tu sommavi il n1 o n2 a min, del quale non conosciamo il valore (AZZERALE SEMPRE LE VARIABILI SE NON ASSEGNI UN VALORE MA LO USI COME OPERANDO ) e non avevi valutato tutti i casi 0509_up.gif
edit: mi sa che il secondo if è inutile icon_asd.gif

Ultima modifica di cuzzo94 il 8 Nov 2011 20:30, modificato 1 volta in totale
 
12654124
12654124 Inviato: 8 Nov 2011 20:30
 

ma sei sicuro che è c++
a me sembra C icon_asd.gif icon_asd.gif icon_asd.gif

Inviato: 8 Nov 11 20:14


Quindi?

l'ho sistema come dovuto,

la compila però spara numeri a caso lo stesso .-.

#include<iostream> //lettura da strean
#include<stdio.h> //standard input outoput
/*5) Scrivere una funzione che accetti due numeri num1,num2 e un simbolo.
Se simbolo 'M' restituisce il maggiore tra i due numeri
Se simbolo 'm' restituisce il minore tra i due numeri
*/


int main (void)
{
//le variabili come dichiarate prima da te sono statiche
int num1=7, num2=15;
char car='m';
int ris;
ris=magmin(num1, num2,car);
printf("Il risultato vale:%d",ris);
system("pause");
}



//funzione
int magmin (int n1, int n2,char c)
{
int min; //è 0 all'inizio e questo viene assegnato dallo standard
if(c=='m' && n1<n2)
else if (c=='m' && n2<n1) min=n2;
else if ( if(c=='M' && n1>n2) ) min=n1;
else min = n2;
return min;
}

//l'ultimo non serve tanto hai fatto tutti i controlli



icon_xd_2.gif icon_xd_2.gif icon_xd_2.gif icon_xd_2.gif icon_xd_2.gif icon_xd_2.gif icon_xd_2.gif icon_xd_2.gif tie.gif tie.gif tie.gif tie.gif tie.gif tie.gif cuzzo 0509_mitra.gif eusa_whistle.gif

Ultima modifica di topo il 8 Nov 2011 20:37, modificato 2 volte in totale
 
12654131
12654131 Inviato: 8 Nov 2011 20:31
 

battuto sul tempo icon_asd.gif
 
12654135
12654135 Inviato: 8 Nov 2011 20:32
 

cuzzo94 ha scritto:
ti scrivo una mia soluzione al problema

Codice:
#include<iostream>
#include<stdio.h>
/*5) Scrivere una funzione che accetti due numeri num1,num2 e un simbolo.
Se simbolo 'M' restituisce il maggiore tra i due numeri   
Se simbolo 'm' restituisce il minore tra i due numeri
*/

int magmin (int , int ,char );

int main (void)
{
  int ris, num1=5, num2=15;
  char car='m'; 
  ris=magmin(num1, num2,car);
  printf("Il risultato vale:%d",ris);
  system("pause");
}

int magmin (int n1, int n2,char c)
{
int min;
if(c=='m' && n1<n2 || c=='M' && n1>n2)
    min=n1;
else 
    if(c=='m' && n1>n2 || c=='M' && n2>n1)
       min=n2;

return min;
}

così non valuta se sono uguali
tu sommavi il n1 o n2 a min, del quale non conosciamo il valore (AZZERALE SEMPRE LE VARIABILI SE NON ASSEGNI UN VALORE MA LO USI COME OPERANDO ) e non avevi valutato tutti i casi 0509_up.gif
edit: mi sa che il secondo if è inutile icon_asd.gif


eusa_clap.gif eusa_naughty.gif eusa_naughty.gif eusa_naughty.gif eusa_naughty.gif eusa_naughty.gif eusa_naughty.gif

se dichiari int min int avrà come valore di partenza 0 senza nessun problema se non ricordo male 0509_si_picchiano.gif 0509_si_picchiano.gif 0509_si_picchiano.gif 0509_si_picchiano.gif 0509_si_picchiano.gif 0509_si_picchiano.gif

e sei fai min =0 + 15 == 15

se era una moltiplicazione allora min =1



0510_amici.gif 0510_amici.gif 0510_amici.gif 0510_amici.gif 0509_campione.gif 0509_campione.gif 0509_campione.gif
 
12654140
12654140 Inviato: 8 Nov 2011 20:32
 

cuzzo94 ha scritto:
battuto sul tempo icon_asd.gif


la tua soluzione è incasinata la mia è diretta icon_wink.gif icon_wink.gif icon_wink.gif icon_wink.gif
e con il codice leggibile
 
12654148
12654148 Inviato: 8 Nov 2011 20:34
 

è? icon_eek.gif poi tu non hai controllato se è 'm' e n1>n2 oppure se M e n1<n2
poi qua mica siamo nelle macro di excel. se dichiari una int non sai cosa hai dentro. dichiara un vettore char e fai una cout e vedi che bello 0509_up.gif
o meglio, non sempre è 0
 
12654168
12654168 Inviato: 8 Nov 2011 20:38
 

int main (void)
{
//le variabili come dichiarate prima da te sono statiche
int num1=7, num2=15;
char car='m';
int ris;
ris=magmin(num1, num2,car);
printf("Il risultato vale:%d",ris);
system("pause");
}



//funzione
int magmin (int n1, int n2,char c)
{
int min; //è 0 all'inizio e questo viene assegnato dallo standard
if(c=='m' && n1<n2)
else if (c=='m' && n2<n1) min=n2;
else if ( if(c=='M' && n1>n2) ) min=n1;
else min = n2;
return min;
}

//l'ultimo non serve tanto hai fatto tutti i cont


senza compilatore e in 2 minuto ... 0509_si_picchiano.gif 0509_si_picchiano.gif 0509_si_picchiano.gif
 
12654178
12654178 Inviato: 8 Nov 2011 20:39
 

cuzzo94 ha scritto:
è? icon_eek.gif poi tu non hai controllato se è 'm' e n1>n2 oppure se M e n1<n2
poi qua mica siamo nelle macro di excel. se dichiari una int non sai cosa hai dentro. dichiara un vettore char e fai una cout e vedi che bello 0509_up.gif
o meglio, non sempre è 0


vettore a char ti mettono valori casuali
ma sugli int se non ricordo male ti mette a 0


ma io faccio java quindi mi posso sbagliare (forse ) 0509_up.gif eusa_shhh.gif 0510_confused.gif eusa_pray.gif 0510_regolamento.gif 0510_regolamento.gif 0510_regolamento.gif 0510_regolamento.gif 0510_regolamento.gif 1110_pat-pat.gif 1110_pat-pat.gif 1110_pat-pat.gif 1110_pat-pat.gif 1110_pat-pat.gif 1110_pat-pat.gif
 
12654181
12654181 Inviato: 8 Nov 2011 20:39
 

si va be ma scusa così è uguale solo che io ho usato la or invece del secondo if icon_asd.gif comunque ho fatto le prove e i valori nelle int sono casuali 0509_up.gif
 
12654192
12654192 Inviato: 8 Nov 2011 20:41
 

cuzzo94 ha scritto:
si va be ma scusa così è uguale solo che io ho usato la or invece del secondo if icon_asd.gif comunque ho fatto le prove e i valori nelle int sono casuali 0509_up.gif


ok icon_asd.gif icon_asd.gif icon_asd.gif icon_asd.gif

le OR sono baracche icon_asd.gif icon_asd.gif icon_asd.gif icon_asd.gif
 
12654196
12654196 Inviato: 8 Nov 2011 20:42
 

icon_asd.gif io--> 0510_abbraccio.gif -->or icon_asd.gif
 
12654227
12654227 Inviato: 8 Nov 2011 20:49
 

piano piano ragazzi icon_xd_2.gif

icon_eek.gif

ma cuzzo non ho capito, cambia qualcosa se metti prima il main poi la funzione?

noi l'avevamo sempre fatto negli ex funz poi main e non cambiava niente..
 
12654273
12654273 Inviato: 8 Nov 2011 20:55
 

ale_rx ha scritto:
piano piano ragazzi icon_xd_2.gif

icon_eek.gif

ma cuzzo non ho capito, cambia qualcosa se metti prima il main poi la funzione?

noi l'avevamo sempre fatto negli ex funz poi main e non cambiava niente..


non cambia niente
hai il codice un pelo più pulito
ma dovresti fare che è meglio più file per ogni funzione ... tanto se i file sono nella stessa cartella (ovviamente i file compilati) e li esegui non ci sono problemi XD
 
12666121
12666121 Inviato: 11 Nov 2011 14:28
 

Il modo più leggero, veloce e semplice che mi viene e così

Codice:
int magmin (int n1, int n2,char c)
{
  if ( (c != 'm') && (c != 'M') ) return 0; //esce se c non è un simbolo previsto
  //voglio che i numeri siano ordinati in modo crescente perciò:
  if ( n1>n2 ) {
    n1 += n2;
    n2 = n1 - n2;
    n1 -= n2;
  }
  //ora sono ordinati!
  return (c=='m' ? n1 : n2); //se mi è stato chiesto il minore ritorno il primo, altrimenti il secondo
}



Buono studio 0510_saluto.gif
 
Mostra prima i messaggi di:





Pagina 1 di 1

Non puoi inserire nuovi Topic
Non puoi rispondere ai Topic
Non puoi modificare i tuoi messaggi
Non puoi cancellare i tuoi messaggi
Non puoi votare nei sondaggi
 
Indice del forumMotobarForum Internet & Hi-Tech

Forums ©