Valaki tud egy ilyen C vagy C++ programot írni?
Kérjen be a program annyi nevet, amennyit szeretnék. Pl ha beírom, hogy 20, akkor 20 nevet írhatok.
Random írja ki egymás alá mind az x (20 nevet a példámban), de aki az utolsó lesz abban a körben, az kiesik.
A második körben így már csak 19 marad, és ugyanúgy írja le a neveket random, és egy személy megint kiesik. (Akit utolsónak sorsol.)
Nyilván addig tartson a program, míg csak 1 személy marad, a győztes.
#include <iostream>
#include <vector>
#include<random>
using namespace std;
int main()
{
vector<string> Nev_Lista;
int Letszam;
cout << "Mennyi bev legyen benne?" << endl;
cout << endl;
cin >> Letszam;
cout << endl;
for (int i = 0; i < Letszam; i++)
{
string Nev;
cin >> Nev;
Nev_Lista.push_back(Nev);
}
cout << endl;
while (!Nev_Lista.empty())
{
for (int i = 0; i < Nev_Lista.size(); i++)
{
cout << Nev_Lista[i] << endl;
}
int i = rand() % Nev_Lista.size();
Nev_Lista.erase(Nev_Lista.begin() + i);
cout << endl;
}
}
Nagy nehezen ugyan, de sima C-ben, a "utility"-ket is beleértve, itt van!
//
//
// EZ ITT SIMA C
//
//
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char** list;
int count;
void ShuffleList(char** arr, int size)
{
if (size > 1)
for (int i = 0; i < size; i++)
{
int r = rand() % (size - 1);
if (r != i)
{
char* temp = arr[i];
arr[i] = arr[r];
arr[r] = temp;
}
}
}
char* ReadString()
{
char* result = (char*) malloc(0);
int len = 0;
char c;
do
{
c = getchar();
if (c != '\n' && c != EOF)
{
len++;
result = (char*) realloc(result, len * sizeof(char));
result[len - 1] = c;
}
}
while(c != '\n' && c != EOF);
result = (char*) realloc(result, (len + 1) * sizeof(char));
result[len] = '\0';
return result;
}
int main(void)
{
char* string;
// Adjuk meg a lista elem db-szamot
printf("Lista darabszam: ");
count = atoi(ReadString());
if (count > 0)
{
list = (char**)malloc(count * sizeof(char*));
for(int i = 0; i < count; i++)
{
// Adjuk meg a neveket
printf("Adj meg egy nevet (%d / %d): ", i + 1, count);
list[i] = ReadString();
}
do
{
ShuffleList(list, count);
if (count > 1)
{
printf("Kiesik: %s\n", list[count - 1]);
list = (char**) realloc(list, (count - 1) * sizeof(char*));
}
else
{
printf("Nyer: %s\n", list[0]);
}
free(list[count - 1]); // Takaritunk
count--;
}
while(count > 0);
// TAKARITAS
free(list);
free(string);
}
// VEGE
return 0;
}
"Miért lettem lepontozva ha működik a kód?"
Azért a szoftverfejlesztés egy kicsit túlmutat ezen a hozzáálláson.
Kifejtenéd?
Mi a baj a kódomal?
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!