Visualizzazione dei risultati da 1 a 10 su 12

Hybrid View

  1. #1
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    torn24, non credo che quell'algoritmo sia corretto.
    Supponi di avere come input semplicemente "X". Abbiamo NumRomano composto in questo modo: ['X', '\0']
    La tua prima if è verificata (10 > 0), quindi entro... poi mi ritrovo a confrontare NumRomano[i+2] (che non si sa cosa sia, può valere qualunque cosa) con '\0'... direi di no.

    Questo è più semplice (da destra verso sinistra):

    codice:
    int len = strlen(NumRomano);
    Decimale = ConvertiCifra(NumRomano[len-1]);
    for(int i=len-2; i>=0; i--) {
       if (ConvertiCifra(NumRomano[i]) >= ConvertiCifra(NumRomano[i+1])) {
          Decimale += ConvertiCifra(NumRomano[i]);
       } else {
          Decimale -= ConvertiCifra(NumRomano[i]);
       }
    }
    E questo è "equivalente", ma gira al contrario:

    codice:
    int len = strlen(NumRomano);
    Decimale = ConvertiCifra(NumRomano[0]);
    for(int i=1; i<len; i++) {
       if (ConvertiCifra(NumRomano[i]) <= ConvertiCifra(NumRomano[i-1])) {
          Decimale += ConvertiCifra(NumRomano[i]);
       } else {
          Decimale -= ConvertiCifra(NumRomano[i-1]);
          Decimale += (ConvertiCifra(NumRomano[i]) - ConvertiCifra(NumRomano[i-1]));
       }
    }

    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2017
    Messaggi
    27
    Quote Originariamente inviata da LeleFT Visualizza il messaggio
    torn24, non credo che quell'algoritmo sia corretto.
    Supponi di avere come input semplicemente "X". Abbiamo NumRomano composto in questo modo: ['X', '\0']
    La tua prima if è verificata (10 > 0), quindi entro... poi mi ritrovo a confrontare NumRomano[i+2] (che non si sa cosa sia, può valere qualunque cosa) con '\0'... direi di no.

    Questo è più semplice (da destra verso sinistra):

    codice:
    int len = strlen(NumRomano);
    Decimale = ConvertiCifra(NumRomano[len-1]);
    for(int i=len-2; i>=0; i--) {
       if (ConvertiCifra(NumRomano[i]) >= ConvertiCifra(NumRomano[i+1])) {
          Decimale += ConvertiCifra(NumRomano[i]);
       } else {
          Decimale -= ConvertiCifra(NumRomano[i]);
       }
    }
    E questo è "equivalente", ma gira al contrario:

    codice:
    int len = strlen(NumRomano);
    Decimale = ConvertiCifra(NumRomano[0]);
    for(int i=1; i<len; i++) {
       if (ConvertiCifra(NumRomano[i]) <= ConvertiCifra(NumRomano[i-1])) {
          Decimale += ConvertiCifra(NumRomano[i]);
       } else {
          Decimale -= ConvertiCifra(NumRomano[i-1]);
          Decimale += (ConvertiCifra(NumRomano[i]) - ConvertiCifra(NumRomano[i-1]));
       }
    }

    Ciao.
    Allora grazie Proverò ad utilizzare questo

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.