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

Problem ze zmienną i

Ostatnio zmodyfikowano 2011-01-28 21:34
Autor Wiadomość
Dark
Temat założony przez niniejszego użytkownika
Problem ze zmienną i
» 2011-01-28 19:50:43
Mam pewien problem ze zmienną ponieważ nie mogę sprawić aby mi wyświetliło liczby z tablicy tylko wyświetla je w nieskończoność i program wywala errora tutaj jest cały kod aplikacji chodzi mi głównie o funkcję wypiszLiczby

C/C++
#include "stdafx.h"

using namespace std;

void wylosujLiczby( int t[], int i, int poczatek, int koniec )
{
    int lic = 0;
    srand( time( NULL ) );
    do
    {
        t[ i ] =( rand() % koniec ) + poczatek;
        lic++;
    } while( lic < i );
   
}

void wypiszLiczby( int t[], int i )
{
    int lic = 0;
    do
    {
        cout << "Liczba [ " << i << " ] " << t[ i ] << endl;
        i++;
        lic++;
    } while( lic < 999 );
   
}

int obliczSume( int t[], int i )
{
    int suma = 0;
    int lic = 0;
    do
    {
        suma += t[ i ];
        lic++;
    } while( lic < i );
   
    return suma;
}

int main()
{
    int tablica[ 999 ];
    wylosujLiczby( tablica, 999, 4, 7 );
    wypiszLiczby( tablica, 999 );
    int iSuma = obliczSume( tablica, 999 );
    cout << "Suma liczba z tablicy wynosi: " << iSuma << endl;
   
    system( "pause" );
    return 0;
}
 
P-27326
szyx_yankez
» 2011-01-28 20:13:51
Tutaj 3 funkcje masz nie poprawnie napisane.
Co do wypiszLiczby:
C/C++
void wypiszLiczby( int * t, int size )
{
    for( int i = 0; i < size; ++i )
         cout << "Liczba [ " << i << " ] " << t[ i ] << endl;
   
   
}
Masz poprawiłem Ci niektóre błędy:
C/C++
#include <cstdlib>
#include <iostream>
#include <ctime>
using namespace std;



void wylosujLiczby( int * t, int size, int poczatek, int koniec )
{
   
    for( int i = 0; i < size; ++i )
         t[ i ] =( rand() % koniec ) + poczatek; //znajdź inną metodę losowania
   
}

void wypiszLiczby( int * t, int size )
{
    for( int i = 0; i < size; ++i )
         cout << "Liczba [ " << i << " ] " << t[ i ] << endl;
   
}

__int64 obliczSume( int * t, int size )
{
    __int64 suma( 0 );
    for( int i = 0; i < size; ++i )
         suma += t[ i ];
   
   
    return suma;
}

int main()
{
    srand( time( NULL ) );
    int tablica[ 999 ];
    wylosujLiczby( tablica, 999, 4, 7 );
    wypiszLiczby( tablica, 999 );
    __int64 iSuma = obliczSume( tablica, 999 );
    cout << "Suma liczba z tablicy wynosi: " << iSuma << endl;
   
    system( "pause" );
    return 0;
}
P-27327
Dark
Temat założony przez niniejszego użytkownika
» 2011-01-28 20:34:05
Dzięki za poprawienie widzę, że muszę się jeszcze dużo nauczyć :)
P-27329
DejaVu
» 2011-01-28 20:36:39
Nie za bardzo rozumiem czemu mu pętlę do... while zamieniłeś na for ale spoko. Powinieneś mu pokazać błędy, a nie dawać inne rozwiązanie ;p

/edit:
C/C++
void wypiszLiczby( int t[], int i ) //i <= zwiera liczbę elementów, no nie? :)
{
    int lic = 0; //licznik - ok spoko
    do
    {
        cout << "Liczba [ " << i << " ] " << t[ i ] << endl; //t[i] <= czemu wyświetlasz i'ty element, a nie lic'ty element? :)
        i++; //<= czemu zwiększasz liczbę elementów? :)
        lic++; //ok
    } while( lic < 999 ); //ok, ale mogło by być lic<i, skoro i to liczba elementów
   
}
P-27330
Dark
Temat założony przez niniejszego użytkownika
» 2011-01-28 20:46:33
Poprawiłem kod tak lecz przy wyświetlaniu liczb wyświetla losowe liczby dodatnie i ujemne

C/C++
void wypiszLiczby( int t[], int i )
{
    int lic = 0;
    do
    {
        cout << "Liczba [ " << lic << " ] " << t[ lic ] << endl;
        lic++;
    } while( lic < i );
   
}
P-27331
szyx_yankez
» 2011-01-28 20:48:30
Nie za bardzo rozumiem czemu mu pętlę do... while zamieniłeś na for ale spoko.
Lepiej się do tego nadają, i wg. mnie zwiększają czytelność kodu.
Powinieneś mu pokazać błędy, a nie dawać inne rozwiązanie ;p
Fakt, miałem napisać ale mnie wyprzedziłeś.
Poprawiłem kod tak lecz przy wyświetlaniu liczb wyświetla losowe liczby dodatnie i ujemne
Losowanie liczby z przedziału masz źle zaimplementowane.
P-27332
DejaVu
» 2011-01-28 20:54:58
Zobacz co napisałeś:
t[ i ] = /*i tu mało ważne sprawy*/;
 - jaka jest wartość zmiennej i? :)
P-27333
Dark
Temat założony przez niniejszego użytkownika
» 2011-01-28 20:55:59
Znalazłem to co miałem źle proszę o tutaj

C/C++
void wylosujLiczby( int t[], int i, int poczatek, int koniec )
{
    int lic = 0;
    srand( time( NULL ) );
    do
    {
        t[ lic ] =( rand() % koniec ) + poczatek; // <== było t[ i ] zamiast t[ lic ]
        lic++;
    } while( lic < i );
   
}

i w sumowaniu liczb też znalazłem zło :P

C/C++
int obliczSume( int t[], int i )
{
    int suma = 0;
    int lic = 0;
    do
    {
        suma += t[ lic ]; // znowu ten sam błąd :\
         lic++;
    } while( lic < i );
   
    return suma;
}
P-27334
« 1 » 2
  Strona 1 z 2 Następna strona