Cześć , mam do napisania na zaliczenie program w c++ który skraca url , coś podobnego jak np tiny.pl
funkcjonalność :
generowanie skrótu , weryfikacja czy dla danego linku jest już skrót , zwracanie linku dla wskazanego skrótu , wyświetlanie pełnej bazy skrótów.
Program ma skracać do 5 znaków ( 0,9 a-z A-Z ) np po wpisaniu adresu www.testetstetste.pl/gole/pl ma zamienic na 0awA5
Czy ktoś z Was wie w jaki sposób to napisać? Bardzo proszę o pomoc
- Rejestracja:ponad 5 lat
- Ostatnio:ponad 3 lata
- Postów:22
0

Delor
c++ ? Trochę dziwny wybór na tego typu program.

- Rejestracja:ponad 13 lat
- Ostatnio:prawie 3 lata
- Rejestracja:ponad 5 lat
- Ostatnio:ponad 3 lata
- Postów:22
0
niestety ponizszy kod z gita nie dziala , nie komplikuje sie :( proszę o pomoc !
#include <iostream>
#include <algorithm>
#include <string>
#include <cstdlib>
using namespace std;
string id_to_short_url(unsigned int n) {
char map[] = "abcdefghijklmnopqrstuvwxyzABCDEF"
"GHIJKLMNOPQRSTUVWXYZ0123456789";
string short_url;
while (n) {
short_url.push_back(map[n % 62]);
n /= 62;
}
reverse(short_url.begin(), short_url.end());
return short_url;
}
unsigned int short_url_to_id(string short_url) {
unsigned int id = 0;
for (int i = 0; i < short_url.length(); ++i) {
if ('a' <= short_url[i] && short_url[i] <= 'z') {
id = id * 62 + short_url[i] - 'a';
}
if ('A' <= short_url[i] && short_url[i] <= 'Z') {
id = id * 62 + short_url[i] - 'A' + 26;
}
if ('0' <= short_url[i] && short_url[i] <= '9') {
id = id * 62 + short_url[i] - '0' + 52;
}
}
return id;
}
int main(int argc, char** argv) {
if (argc == 1) {
cerr << "error: missing required parameter: id" << endl;
return 1;
}
unsigned int n = atoi(argv[1]);
if (n <= 0) {
cerr << "error: invalid input value, an integer greater than 0 is required" << endl;
return 1;
}
cout << "Input ID: " << n << endl << "---" << endl;
string encoded_short_url = id_to_short_url(n);
unsigned int decoded_id = short_url_to_id(encoded_short_url);
cout << "Generated short URL: " << encoded_short_url << endl;
cout << "ID decoded from URL: " << decoded_id << endl;
return 0;
edytowany 1x, ostatnio: cerrato
Zobacz pozostałe 3 komentarze
Po nacisnieciu F11 , komplikuje sie ale sie nie uruchamia program ( zadnych bledow nie wywala ) , co to moze byc ? moze cos w kodzie brakuje ?
chcialem go uruchomic recznie z pliku exe - także nie otwiera się

u mnie wszystko działa, podajesz mu argument?
nie wiem co moze byc , nie uruchamia sie w ogóle consola apk , komplikuje sie i dalej staje , bledow nie ma :
Compilation results...
--------
- Errors: 0
- Warnings: 0
- Output Filename: C:\Users\K.kkkki\Desktop\szkola\dev_16\Projekt6.exe
- Output Size: 1,83890342712402 MiB
- Compilation Time: 1,49s
Uruchomilem przes strone internetowa(nie wiem dlaczego kod nie dziala u mnie w dev ) , ale niestety bezsensu jest to co wyszlo. Program ma miec menu czyli 2 opcje do wyboru - "wpisz adres url i zamień" ( i wtedy zamienia na krotki url i sprawdza tez czy juz takiego linku nie ma ) oraz "pokaz baze danych URL" , nie mam pomyslu jak ten kod przerobic bo dopiero zaczynam studia , jesli jest na forum osoba ktora by chciala mi pomoc bardzo prosze o kontakt na prv

- Rejestracja:ponad 11 lat
- Ostatnio:około godziny
- Postów:1027
0
jesli jest na forum osoba ktora by chciala mi pomoc bardzo prosze o kontakt na prv
A ile płacisz?
nic.Szukam pomocy a nie napisania programu za kase.

A jak rozumiesz "pomóc"? Napisanie programu za darmo?
dolaczam sie watku.: ile oczekujecie za napisanie takiego programu do skracania URL-i?
Kluczowe funkcjonalności:
1. skracanie URL
2. zapewnienie unikalnosci URL, oraz skróconego URL (shortURL)
2. URL i shortURL ma byc z zakresu znaków {"0-9", "a-z", "A-Z"} (sam link skrótu powinien mieć 5 losowych znaków, np. goo.gl/R6axW);
3. przechowanie w pliku historii URL i shortURL
4. srodowisko Dev-C++
5. pokazanie historii URL-i i shortURL-i
Jesli jestescie zainteresowani odplatnym wykonaniem prosze o kontakt.
kod przechodzi na mnie.

- Rejestracja:prawie 10 lat
- Ostatnio:dzień
- Postów:530
0
Zobacz https://wandbox.org/permlink/Ooq2Ncnsolu8BXm4
#include <iostream>
#include <algorithm>
#include <string>
#include <vector>
#include <unordered_map>
#include <iomanip>
#include <ios>
using namespace std;
string idToShortURL( long int n )
{
// Map to store 62 possible characters
char map[] = "abcdefghijklmnopqrstuvwxyzABCDEF"
"GHIJKLMNOPQRSTUVWXYZ0123456789";
string shorturl;
// Convert given integer id to a base 62 number
while (n)
{
// use above map to store actual character
// in short url
shorturl.push_back(map[n%62]);
n = n/62;
}
// Reverse shortURL to complete base conversion
reverse(shorturl.begin(), shorturl.end());
return shorturl;
}
int main()
{
unordered_map<string,string> databaseURL;
unordered_map<string,string> databaseID; // use in finding the proper url for a given id
int counter {1};
vector<string> inputURL {
"www.test.pl/abc/aaa/dcf/ghhhc45/lii" ,
"www.test.pl/abc/aaa/dcf/ghhhc45/lii" ,
"www.test.pl/ab2/a45/dc1/344c45/lii" ,
"www.test.pl/abc/aaa/dcf/ghh/lii" ,
"www.test.pl/abc/a/dcf/ghhhc45/lii" ,
"www.test.pl/abc/a/dcf/ghhhc45/lii" ,
"www.test.pl/a/aaa/dcf/ghhhc45/lii" ,
"www.test.pl/abc/aaa/dcf/ghhhc/aa" ,
"www.test.pl/abc/aaa/dlaskdlsakdii" ,
"www.test.pl/aTbc/aaa/dc9478hjdhsdhc45/lii"
};
for( auto& url : inputURL )
{
if( databaseURL.find(url) == databaseURL.end() )
{
databaseURL[url] = idToShortURL(counter++);
databaseID[databaseURL[url]] = url;
}
}
cout << left << setw(50)<< "url" << "id" << "\n";
for( const auto& [url,id] : databaseURL )
{
cout << left << setw(50) << url << id << "\n";
}
// use databaseID to find url by a given id
cout << "\nurl for id \"i\" is " << databaseID.find("i")->second << "\n";
return 0;
}