Píšu seminární práci v jazyce C++ a zasekl jsem se na jednom bodě. Pomocí for cyklu uživatel zadá 10 čísel od 1 do 100 a po zadání se vygeneruje 10 náhodných čísel, také v rozpětí od 1 do 100. Problém u toho, že potřebuju porovnat těchto 10 čísel, každé s každým a shodná čísla vypsat na obrazovku. Přikládám prozatimní zdrojový kód s prosbou o rychlou radu, nebo pukud znáte jiný způsob, tak prosím o pomoc.
Zdrojový kód:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{
int x=10;
int vstup [10];
int i, losovana;
srand((unsigned int) time(NULL));
printf("Vitejte v nasem hernim systemu, Prosim zadejte 10 cisel v rozsahu od 1 do 100\n");
for (i=1;i<11;i++) //for cyklus pro zadani cisel zvolenych uzivatelem
{
printf("Zadej %d. cislo: ",i);
scanf("%d,",&vstup[i]);
}
printf("\n\n\n");
printf ("Tebou zvolena cisla jsou: \n\n");
for(i=1;i<=10;i++) //for cyklus pro nacteni 10 cisel zadanych uzivatelem
{ if(i!=1)
printf(" |");
printf(" %d",vstup[i]);
}
printf("\n\n\n");
printf("Losovana cisla jsou: \n\n");
for(i=1;i<=10;i++) //for cyklus pro vypocet 10 nahodnych cisel
{ if(i!=1)
printf(" |");
printf(" %d",losovana);
losovana = (rand() % 100) + 1; //vypocet nahodneho cisla ze systemoveho casu
}
printf("\n\n\n");
system("pause");
}
Předem děkuji za odpověď. :)
Fórum › C / C++
Prosím o pomoc, spěchá - jazyk C++
a v cem je problem?
nacteny je mas v poli... co ti brani v tom cyklu kde generujes ty nahodny rovnou srovnat s tema nactenejma...
btw - trochu neprehledny odsazovani..
To SYS.ErrorCZ : Vezmeš první číslo ze vstupních a porovnáš ho s každým pvkem v poli generovaných čísel. To samé s druhým, třetím, až desátým vstupním prkvem. Pokud se některá čísla budou shodovat, vypíšeš. Pokud ne, porovnáš další.
to jsem si myslel, bohužel, nevím, jak to přesně udělat, pokud by jste byl někdo tak laskav a poskytl mi nějakou ukázku, byl bych věděčný
To SYS.ErrorCZ : Budou to dva vnořené cykly for, v jednom budeš inkrementovat vstupní čísla a v tom vnořeném čísla náhodná.
Jde o to, že máš i vstupních čísel i <0, 9>, a počet náhodných čísel n <0, 9> a musíš porovnat každé číslo i s každým číslem n. Takže musíš testovat, zda i[0] == n[0] ... i[0] == n[9] ... i[9] == n[9].
for(int vstup = 0; vstup < 10; vstup++)
for(...)
kontrola, případně výpis
To SYS.ErrorCZ : Dovolím si ťa trochu poopravovať a možno aj naviesť na správny smer.
Základný algoritmus bude vyzerať takto:
1. Načítaš čísla od užívateľa do pola vstup[10]
2. Vygeneruješ čísla zas do pola losovanie[10]
3. Porovnáš každý prvok s každým podla indexov presne tak ako ti radil Bald3rr, čiže v cykle porovnáš prvé z prvého pola zo všetkými z druhého pola, druhé z prvého pola z ostatnými z druhého pola ... atd.
No vypisovanie som tam nepísal (dúfam že ho zvládneš a budeš vedieť kam ho dať).
A teraz prejdem k pár začiatočníckym chybám ktoré som postrehol v tom tvojom kuse kódu. Na začiatku som si všimol, že más deklarované pole vstup[10], ale cyklus pri jeho vypisovaní máš for(i=0; i<=10; i++) čo je samozrejme ZLE. Tvoje pole prvkov je totižto deklarované od vstup[0]...vstup[9] čo znamená že cyklus si musíš napísať ako for(i=0; i<10; i++). Takže si prosím zmeň všetky takéto cykli.
Ďalej v cykle pre generovanie náhodných čísel si ich načítaj radšej do pola, ale hlavne ich najprv vygeneruj a následne až vypisuj, pretože v tom tvojom kóde to robíš presne naopak.
Na záver dúfam že som trochu pomohol pri tvojich myšlienkových pochodoch, tú ťažšiu časť už musíš zvládnuť ty.
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Pomoc.... nějaká chybka prosím pomoc - více v podrobném popisu — založil tkstudent
Jazyk C -Vysvetlenie, pomoc — založil prometheus7
Prosim pomoc v c++ — založil miska
Prosím o pomoc — založil Jamarson23
C - prosim o pomoc — založil krajco
Moderátoři diskuze