online compiler and debugger for c/c++

code. compile. run. debug. share.
Source Code    Language
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <time.h> typedef struct { int *vec; size_t size; size_t count; } vector; // Inicializa un objeto de tipo vector vector NewVector() { vector vect; memset(&vect, 0, sizeof(vector)); return vect; } // Libera la memoria asociada a un vector void FreeVector(vector * vect) { // Liberamos la memoria reservada free(vect->vec); // Reseteamos las variables de estado, para ser coherentes memset(vect, 0, sizeof(vector)); } // Actualiza el vector para que sea capaz de almacenar un número de elementos dado int SetCapacity(vector* vect, size_t capacity) { if( capacity > vect->size ) { int* ptr = (int*)realloc(vect->vec, vect->size + 10); if( ptr == NULL ) { return 0; // Error, no hay memoria suficiente } vect->vec = ptr; vect->size = capacity; } return 1; } // Añade un nuevo elemento al final del vector (redimensiona el array si es necesario) int Add(vector* vect, int value) { if( vect->size == vect->count ) { // Incrementamos la capacidad en 10 (es muy costoso hacer incrementos individuales) if( !SetCapacity(vect, vect->size + 10) ) { return 0; // Error, no hay memoria } } vect->vec[vect->count++] = value; return 1; } void llenar(vector *vect) { for(size_t i = 0; i < vect->size; i++) { Add(vect, rand()%10); } } void mostrar(vector const* vect) { for(size_t i = 0; i < vect->count; i++) { printf("%i ",vect->vec[i]); } putchar('\n'); } void sacar_repetidos(vector const* original, vector * sin_repetidos) { for (size_t i = 0; i < original->count; i++) { int repetido = 0; for( size_t j=0; j<sin_repetidos->count && !repetido; j++) { repetido = original->vec[i] == sin_repetidos->vec[j]; } if( !repetido ) { Add(sin_repetidos, original->vec[i]); } } } int main(void) { vector original = NewVector(); vector nuevo = NewVector(); SetCapacity(&original, 4); srand(time(NULL)); llenar(&original); printf("Vector original:"); mostrar(&original); sacar_repetidos(&original, &nuevo); printf("Vector sin repetidos:"); mostrar(&nuevo); printf("Tamaño del nuevo vector: %lu\n", nuevo.count); FreeVector(&original); FreeVector(&nuevo); return 0; }

Compiling Program...

Command line arguments:
Standard Input: Interactive Console Text
×

                

                

Program is not being debugged. Click "Debug" button to start program in debug mode.

#FunctionFile:Line
VariableValue
RegisterValue
ExpressionValue