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

Pętla - trzy warunki na zakończenie

Ostatnio zmodyfikowano 2012-10-27 20:08
Autor Wiadomość
aimq
Temat założony przez niniejszego użytkownika
Pętla - trzy warunki na zakończenie
» 2012-10-27 17:11:03
kolejne zadanie z którym mam problem:

Napisz pętlę wczytującą kolejne liczby z klawiatury i kończącą się gdy:
- suma tych liczb przekroczy 100,
- ilość podanych liczb ujemnych przekroczy 10,
- dwie kolejne podane liczby będą miały identyczną wartość

wymyśliłem coś takiego, po wstępnych testach wydaje się działać prawidłowo,
nie wiem jednak jak dodać trzeci warunek kończący pętlę.

C/C++
#include <iostream>
#include <conio.h>
using namespace std;

int main()
{
    int a, b = 0, c = 0;
   
    for( int i = 0; i == 0; )
    {
        cin >> a;
        b = b + a; // suma wprowadzonych liczb
        if( b > 100 )
             i = 1; // i=1 -> warunek na koniec petli
       
        if( a < 0 )
             c = c + 1; //zliczanie ilości liczb ujemnych
       
        if( c > 10 )
             i = 1;
       
    }
    getch();
}

P-67682
SeaMonster131
» 2012-10-27 18:25:03
Albo wczytujesz liczby do tablicy, i porównujesz daną komórkę w tablicy z poprzednią albo tworzysz nową zmienną, a następnie coś w tym stylu:
C/C++
int a, b;

cin >> a;

if( b == a )
     i = 1; // konczysz petle
else
     b = a;

A to aktualna wartość, b to "wcześniejsza" wpisana wartość.

Dodatkowo, zamiast takiego warunku jaki masz, mógłbyś stworzyć pętlę nieskończoną, a przerywać ją za pomocą słowa kluczowego break; » Kurs C++ » Poziom 3Słowa kluczowe continue, break lekcja
P-67693
jsc
» 2012-10-27 19:04:52
Nie lepiej zrobić pętli do while?
C/C++
cin >> a;

if( a < 0 )
{
    ++ujemne;
}

int suma = a;

do
{
    cin >> b;
   
    if( a != b )
    {
        a = b;
    }
    else
    {
        break;
    }
   
    if( b < 0 )
    {
        ++ujemne;
    }
   
    suma += a;
} while(( suma <= 100 ) &&( ujemne <= 10 ) );

P-67706
aimq
Temat założony przez niniejszego użytkownika
» 2012-10-27 20:08:27
z dodaniem nowej zmiennej też kombinowałem ale nie wychodziło.
Z twoim sposobem też jest coś źle, albo ja popełniam jakiś błąd.
Wywala: The variable 'd' is being used without being initialized.

C/C++
#include <iostream>
#include <conio.h>
using namespace std;

int main()
{
    int b = 0, c = 0;
   
    for( int i = 0; i == 0; )
    {
        int a, d;
        cin >> a;
       
        if( d == a )
             i = 1; // konczysz petle
        else
             d = a;
       
        b = b + a; // suma wprowadzonych liczb
       
       
        if( b > 100 )
             i = 1; // i=1 - warunek na koniec petli
       
        if( a < 0 )
             c = c + 1; //zliczanie ilości liczb ujemnych
       
        if( c > 10 )
             i = 1;
       
    }
   
}

metody z tablicami nie zastosuję bo jeszcze nie uczyłem się o tablicach.

to co wkleił jsc śmiga jak powinno, dzięki :)


edit: już odkryłem jak poprawić mój kod, wystarczy najpierw wprowadzić d a dopiero później pojechać z pętlą;
C/C++
int a, b = 0, c = 0, d;

cin >> d;
if( d < 0 )
     c = 1;

for( int i = 0; i == 0; )
{
    cin >> a;
    b = b + a; // suma wprowadzonych liczb
    if( d == a )
         i = 1;
    else
         d = a;
   

problem rozwiązany.
P-67714
« 1 »
  Strona 1 z 1