Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[c++]dodawanie dwóch liczb w ciągu

Ostatnio zmodyfikowano 2014-06-08 12:23
Autor Wiadomość
sal
Temat założony przez niniejszego użytkownika
[c++]dodawanie dwóch liczb w ciągu
» 2014-06-05 22:49:11
Witam wszystkich forumowiczów,
napisałem program, który losuje ciąg liczb, wczytuje pewną liczbę i sprawdza, czy w tym ciągu są dwie liczby, których suma równa jest danej liczbie. Coś jednak nie działa. Może ktoś zerknąć i sprawdzić?
C/C++
#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;

int main()
{
    srand( time( NULL ) );
    cout << "Program sprawdza czy suma dwoch liczb z danego przedzialu jest rowna " << endl;
    cout << "podanej liczbie " << endl;
    cout << "Podaj poczatek przedzialu " << endl;
    int start;
    cin >> start;
    cout << "Podaj ile liczb ma wylosowac komputer " << endl;
    int ilosc;
    cin >> ilosc;
    cout << "Podaj liczbe odniesienia " << endl;
    int odn;
    cin >> odn;
    int przedzial;
    int ile = 0;
    int wylosowaneLiczby[ ile ];
   
    cout << "" << endl;
    do
    {
        przedzial =( rand() % ilosc ) + start;
        wylosowaneLiczby[ ile ] = przedzial;
        cout << wylosowaneLiczby[ ile ] << ", ";
        ile++;
       
    } while( ile < ilosc );
   
    cout << "" << endl;
   
    cout << "" << endl;
    int k = 0;
    int suma[ k ];
    int i = 1;
   
    do
    {
        suma[ k ] = wylosowaneLiczby[ k ] + wylosowaneLiczby[ i ];
        k++;
        i++;
        cout << suma << ", ";
        k++;
    } while( i <=( ilosc - 1 ) && k <=( ilosc - 2 ) );
   
   
    if( suma[ k ] == odn )
         cout << "Sa takie dwie liczby " << endl;
    else
         cout << "Nie ma takich dwoch liczb " << endl;
   
   
    return 0;
}
P-111537
pekfos
» 2014-06-05 22:51:08
C/C++
int ile = 0;
int wylosowaneLiczby[ ile ];
C/C++
int k = 0;
int suma[ k ];
To błędny zapis.
P-111539
sal
Temat założony przez niniejszego użytkownika
» 2014-06-05 23:08:35
Na czym polega błąd?
P-111544
Monika90
» 2014-06-05 23:12:46
W standardowym C++ rozmiar tablicy nie może być określony za pomocą zmiennej, musi być to stała o wartości znanej już w czasie kompilacji. Ale nawet jeżeli pominiemy ten szczegół, to i tak nie jest dobrze, bo obie tablice mają rozmiar zero.
P-111545
sal
Temat założony przez niniejszego użytkownika
» 2014-06-06 00:02:05
Zmieniłem nieco kod jednak w drugiej pętli coś nie gra.
C/C++
#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;

int main()
{
    srand( time( NULL ) );
    cout << "Program losuje 10 liczb i sprawdza czy suma dwoch z nich jest rowna " << endl;
    cout << "podanej liczbie " << endl;
    cout << "Podaj poczatek przedzialu " << endl;
    int start;
    cin >> start;
    //cout << "Podaj ile liczb ma wylosowac komputer " << endl;
    //int ilosc;
    //cin >> ilosc;
    cout << "Podaj liczbe odniesienia " << endl;
    int odn;
    cin >> odn;
    int przedzial;
    int ile = 0;
    int wylosowaneLiczby[ 10 ];
   
    cout << "" << endl;
    do
    {
        przedzial =( rand() % 10 ) + start;
        wylosowaneLiczby[ ile ] = przedzial;
        cout << wylosowaneLiczby[ ile ] << ", ";
        ile++;
       
    } while( ile < 10 );
   
    cout << "" << endl;
   
    cout << "" << endl;
    int k = 0;
    int suma[ 45 ];
    int i = 1;
    int j = 0;
   
    do
    {
        suma[ k ] = wylosowaneLiczby[ j ] + wylosowaneLiczby[ i ];
        k++;
        i++;
        j++;
        cout << suma[ k ] << ", ";
        k++;
    } while( i < 9 && k < 45 && j < 8 );
   
   
    if( suma[ k ] == odn )
         cout << "Sa takie dwie liczby " << endl;
    else
         cout << "Nie ma takich dwoch liczb " << endl;
   
   
    return 0;
}
P-111547
pekfos
» 2014-06-06 12:46:37
drugiej pętli coś nie gra.
Cała jest zła. Podobnie jak pomysł na tę pętlę.
P-111552
sal
Temat założony przez niniejszego użytkownika
» 2014-06-07 14:05:21
Nieco zmodyfikowałem program. Działa lepiej, jednak coś jest jeszcze nie tak.



C/C++
#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;




int main()
{
    srand( time( NULL ) );
    cout << "Program losuje ciag liczb i sprawdza czy suma dwoch z nich jest rowna " << endl;
    cout << "podanej liczbie " << endl;
    cout << "Podaj poczatek przedzialu " << endl;
    int start;
    cin >> start;
    cout << "Podaj ile liczb ma wylosowac komputer " << endl;
    int ilosc;
    cin >> ilosc;
    cout << "Podaj liczbe odniesienia " << endl;
    int odn;
    cin >> odn;
    int przedzial;
    int ile = 0;
    int wylosowaneLiczby[ ilosc ];
    cout << "" << endl;
    do
    {
        przedzial =( rand() % ilosc ) + start;
        wylosowaneLiczby[ ile ] = przedzial;
        cout << wylosowaneLiczby[ ile ] << ", ";
        ile++;
       
    } while( ile < ilosc );
   
    cout << "" << endl;
   
   
    int k = 1;
    int iloscSum = 0;
   
    do
    {
        iloscSum = iloscSum + k;
        k++;
    } while( k < ilosc );
   
    cout << iloscSum << " mozliwych sum " << endl;
   
    int suma[ iloscSum ];
    int i = 1;
    int j;
    for( j = 0; j <( ilosc - 1 ); j++ )
    do
    {
        suma[ iloscSum ] = wylosowaneLiczby[ j ] + wylosowaneLiczby[ i ];
        //j++;
        i++;
        cout << suma[ iloscSum ] << " ";
        if( suma[ iloscSum ] == odn )
             cout << "Ta suma jest rowna liczbie odniesienia!!! " << endl;
        else
             cout << "Ta suma nie jest rowna liczbie odniesienia " << endl;
       
    } while( i < ilosc ); //&& j<(ilosc-1));
   
   
    return 0;
}
P-111630
pekfos
» 2014-06-07 20:06:03
Nie ma zerowania i.
P-111667
« 1 » 2
  Strona 1 z 2 Następna strona