Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Utils.cpp@0:ef0a1a6d4a40, 2013-09-14 (annotated)
- Committer:
- kleberkruger
- Date:
- Sat Sep 14 22:58:28 2013 +0000
- Revision:
- 0:ef0a1a6d4a40
Fault injector system.
Who changed what in which revision?
| User | Revision | Line number | New contents of line | 
|---|---|---|---|
| kleberkruger | 0:ef0a1a6d4a40 | 1 | /* | 
| kleberkruger | 0:ef0a1a6d4a40 | 2 | * File: Utils.cpp | 
| kleberkruger | 0:ef0a1a6d4a40 | 3 | * Author: Kleber Kruger | 
| kleberkruger | 0:ef0a1a6d4a40 | 4 | * | 
| kleberkruger | 0:ef0a1a6d4a40 | 5 | * Created on 11 de Junho de 2013, 11:39 | 
| kleberkruger | 0:ef0a1a6d4a40 | 6 | */ | 
| kleberkruger | 0:ef0a1a6d4a40 | 7 | |
| kleberkruger | 0:ef0a1a6d4a40 | 8 | #include "Utils.h" | 
| kleberkruger | 0:ef0a1a6d4a40 | 9 | |
| kleberkruger | 0:ef0a1a6d4a40 | 10 | /** | 
| kleberkruger | 0:ef0a1a6d4a40 | 11 | * Gera um número aleatório entre o intervalo mínimo e máximo. | 
| kleberkruger | 0:ef0a1a6d4a40 | 12 | * | 
| kleberkruger | 0:ef0a1a6d4a40 | 13 | * @param min - número mínimo | 
| kleberkruger | 0:ef0a1a6d4a40 | 14 | * @param max - número máximo | 
| kleberkruger | 0:ef0a1a6d4a40 | 15 | */ | 
| kleberkruger | 0:ef0a1a6d4a40 | 16 | unsigned int getRandomIntPositive(unsigned int min, unsigned int max) { | 
| kleberkruger | 0:ef0a1a6d4a40 | 17 | int k; | 
| kleberkruger | 0:ef0a1a6d4a40 | 18 | double d; | 
| kleberkruger | 0:ef0a1a6d4a40 | 19 | d = (double) rand() / ((double) RAND_MAX + 1); | 
| kleberkruger | 0:ef0a1a6d4a40 | 20 | k = d * (max - min + 1); | 
| kleberkruger | 0:ef0a1a6d4a40 | 21 | return min + k; | 
| kleberkruger | 0:ef0a1a6d4a40 | 22 | } | 
| kleberkruger | 0:ef0a1a6d4a40 | 23 | |
| kleberkruger | 0:ef0a1a6d4a40 | 24 | /** | 
| kleberkruger | 0:ef0a1a6d4a40 | 25 | * Gera um número aleatório entre o intervalo mínimo e máximo. | 
| kleberkruger | 0:ef0a1a6d4a40 | 26 | * | 
| kleberkruger | 0:ef0a1a6d4a40 | 27 | * @param min - número mínimo | 
| kleberkruger | 0:ef0a1a6d4a40 | 28 | * @param max - número máximo | 
| kleberkruger | 0:ef0a1a6d4a40 | 29 | */ | 
| kleberkruger | 0:ef0a1a6d4a40 | 30 | double getRandomDouble(double min, double max) { | 
| kleberkruger | 0:ef0a1a6d4a40 | 31 | double d, k; | 
| kleberkruger | 0:ef0a1a6d4a40 | 32 | d = (double) rand() / ((double) RAND_MAX + 1); | 
| kleberkruger | 0:ef0a1a6d4a40 | 33 | k = d * (max - min + 1); | 
| kleberkruger | 0:ef0a1a6d4a40 | 34 | return min + k; | 
| kleberkruger | 0:ef0a1a6d4a40 | 35 | } | 
| kleberkruger | 0:ef0a1a6d4a40 | 36 | |
| kleberkruger | 0:ef0a1a6d4a40 | 37 | /** | 
| kleberkruger | 0:ef0a1a6d4a40 | 38 | * Gera um número aleatório entre o intervalo mínimo e máximo. | 
| kleberkruger | 0:ef0a1a6d4a40 | 39 | * | 
| kleberkruger | 0:ef0a1a6d4a40 | 40 | * @param min - número mínimo | 
| kleberkruger | 0:ef0a1a6d4a40 | 41 | * @param max - número máximo | 
| kleberkruger | 0:ef0a1a6d4a40 | 42 | */ | 
| kleberkruger | 0:ef0a1a6d4a40 | 43 | float getRandomFloat(float min, float max) { | 
| kleberkruger | 0:ef0a1a6d4a40 | 44 | int rd = (int) getRandomDouble((int) (min * 10), (int) (max * 10) + 1); | 
| kleberkruger | 0:ef0a1a6d4a40 | 45 | return (float) rd / 10; | 
| kleberkruger | 0:ef0a1a6d4a40 | 46 | } | 
| kleberkruger | 0:ef0a1a6d4a40 | 47 | |
| kleberkruger | 0:ef0a1a6d4a40 | 48 | /** | 
| kleberkruger | 0:ef0a1a6d4a40 | 49 | * C++ version 0.4 char* style "itoa": | 
| kleberkruger | 0:ef0a1a6d4a40 | 50 | * Written by Lukás Chmela | 
| kleberkruger | 0:ef0a1a6d4a40 | 51 | * Released under GPLv3. | 
| kleberkruger | 0:ef0a1a6d4a40 | 52 | */ | 
| kleberkruger | 0:ef0a1a6d4a40 | 53 | char *itoa(int value, char *result, int base) { | 
| kleberkruger | 0:ef0a1a6d4a40 | 54 | // check that the base if valid | 
| kleberkruger | 0:ef0a1a6d4a40 | 55 | if (base < 2 || base > 36) { | 
| kleberkruger | 0:ef0a1a6d4a40 | 56 | *result = '\0'; | 
| kleberkruger | 0:ef0a1a6d4a40 | 57 | return result; | 
| kleberkruger | 0:ef0a1a6d4a40 | 58 | } | 
| kleberkruger | 0:ef0a1a6d4a40 | 59 | |
| kleberkruger | 0:ef0a1a6d4a40 | 60 | char* ptr = result, *ptr1 = result, tmp_char; | 
| kleberkruger | 0:ef0a1a6d4a40 | 61 | int tmp_value; | 
| kleberkruger | 0:ef0a1a6d4a40 | 62 | |
| kleberkruger | 0:ef0a1a6d4a40 | 63 | do { | 
| kleberkruger | 0:ef0a1a6d4a40 | 64 | tmp_value = value; | 
| kleberkruger | 0:ef0a1a6d4a40 | 65 | value /= base; | 
| kleberkruger | 0:ef0a1a6d4a40 | 66 | *ptr++ = "zyxwvutsrqponmlkjihgfedcba9876543210123456789abcdefghijklmnopqrstuvwxyz" [35 + (tmp_value - value * base)]; | 
| kleberkruger | 0:ef0a1a6d4a40 | 67 | } while (value); | 
| kleberkruger | 0:ef0a1a6d4a40 | 68 | |
| kleberkruger | 0:ef0a1a6d4a40 | 69 | // Apply negative sign | 
| kleberkruger | 0:ef0a1a6d4a40 | 70 | if (tmp_value < 0) *ptr++ = '-'; | 
| kleberkruger | 0:ef0a1a6d4a40 | 71 | *ptr-- = '\0'; | 
| kleberkruger | 0:ef0a1a6d4a40 | 72 | while (ptr1 < ptr) { | 
| kleberkruger | 0:ef0a1a6d4a40 | 73 | tmp_char = *ptr; | 
| kleberkruger | 0:ef0a1a6d4a40 | 74 | *ptr-- = *ptr1; | 
| kleberkruger | 0:ef0a1a6d4a40 | 75 | *ptr1++ = tmp_char; | 
| kleberkruger | 0:ef0a1a6d4a40 | 76 | } | 
| kleberkruger | 0:ef0a1a6d4a40 | 77 | return result; | 
| kleberkruger | 0:ef0a1a6d4a40 | 78 | } |