Wronski Temat założony przez niniejszego użytkownika |
Problem z instrukcja warunkowa if » 2015-03-25 15:05:40 witajcie, mam problem z ustaleniem warunku petli if :| getline( cin, tekst );
for( int i = 0; i <= tekst.length() - 1; i++ ) { if(( tekst[ i ] != '0' ) &&( tekst[ i ] != '1' ) &&( tekst[ i ] != '2' ) &&( tekst[ i ] != '3' ) &&( tekst[ i ] != '4' ) ||( tekst[ i ] != '9' ) &&( tekst[ i ] != '8' ) &&( tekst[] != '7' ) &&( tekst[ i ] != '6' ) &&( tekst[ i ] != '5' ) ) }
Tak wyglada ten if, wydaje mi sie, ze gdy wpisze np:432432 if powinien sie nie wykonac, a dla np: 32dsa32 powinien sie wykonac. On jednak wykonuje sie cokolwiek bym nie wpisal, nie wiem co zle napisalem, pozdrawiam; |
|
Deyvin |
Literówka » 2015-03-25 15:39:26 Z literówek wychwyciłem, że przy warunku z 7 nie masz podanego elementu tablicy tekst[] != '7' . A co do warunku może jeśli podasz jakie zadanie ma spełniać ten if to łatwiej będzie Ci pomóc. |
|
aksen |
» 2015-03-25 15:40:43 Wklej cały kod programu (pewnie jest niewielki) |
|
Wronski Temat założony przez niniejszego użytkownika |
» 2015-03-25 16:06:09 dokladnie ma sprawdzac czt wpisalem liczbe czy tekst, zalezy mi na tym by bylo to zrobione sposobem sprawdzania kazdego znaku po kolei #include <iostream>
using namespace std; int main() { string tekst; bool wyraz = false; while( getline( cin, tekst ) ) { int dl = tekst.length(); while( dl-- ) { if(( tekst[ dl ] != '0' ) &&( tekst[ dl ] != '1' ) &&( tekst[ dl ] != '2' ) &&( tekst[ dl ] != '3' ) &&( tekst[ dl ] != '4' ) ||( tekst[ dl ] != '9' ) &&( tekst[ dl ] != '8' ) &&( tekst[ dl ] != '7' ) &&( tekst[ dl ] != '6' ) &&( tekst[ dl ] != '5' ) ) wyraz = true; } if( wyraz == true ) cout << "wyraz" << endl; else cout << "cyfra" << endl; if( cin.eof() ) break; wyraz = false; } return 0; }
Jezeli wpisze cokowiek if zawsze zwraca wyraz=true moglem odrazu wrzucic caly kod :p Edit: Dobra, rozwiazalem, poprostu jestem glupi i slepy :) zamiast sprawdzic kod szukalem pomocy :P sory za zmarnowanie czasu ;p zamiast jednego && mialem || |
|
aksen |
» 2015-03-25 16:24:22 |
|
Monika90 |
» 2015-03-25 17:41:41 |
|
Deyvin |
» 2015-03-25 19:55:13 Program działa ale nie do końca poprawnie - sprawdź co się dzieje jak nic nie wpiszesz i dasz enter lub jak wpiszesz spację albo cyfrę i spacje. Dodatkowo warunek pętli i warunek if'a w pętli, nigdy nie będą odpowiednio fałszywy w pętli i prawdziwy w if'ie żeby zakończyć działanie pętli... Tutaj akurat to nie jest takie groźne bo program czeka na podanie znaku ale możesz kiedyś tak narobić sobie kłopotów.
|
|
Wronski Temat założony przez niniejszego użytkownika |
» 2015-03-25 23:13:17 @Deyvin Dziekuje za wskazowki, wiem ze to co to dalem nie bylo do konca poprawne, gdyz wycialem zaledwie funkcje z kodu by latwiej wam bylo znalezc blad z ktorym nie moglem sobie poradzic dalsza czesc kodu nie miala z tym nic wspolnego :) Ale dzieki Twoim wskazowka kilka "przypadkow szczegolnych" tak wiec dzieki wielkie. @aksent Wiem, jednak staralem sie sam sobie poradzic i sie udalo :) ale dzieki, z funkcji napewno skorzystam :) Wrzuce kod, jezeli ktosby mial jakies uwagi prosze pisac(kod dziala jedynie dla cyfr dodatnich :)), ale nie w styly, totalnie zle :D, wiem, ze da sie takie rzeczy zapisac duzo latwiej, zdaje sbie sprawe tez z tego ze wiele rzeczy moglem z robic na okolo. Mam nadzieje ze pare miesiecy piszac podobne zadanie, bede umial sobie z nim poradzic lepiej, szybciej i bardziej przejrzyscie :) Dziekuje wszystkim za pomoc ! Oczywiscie kod sprawdza ile w podanym ciagu znakow mamy cyfr a ile "ciagow nie bedacych cyframi" #include <iostream> #include <string>
using namespace std;
int int_or_str( string tekst );
int main() { string tekst; int ilecyfr = 0, ilewyrazow = 0; while( getline( cin, tekst ) ) { int dl = tekst.length(); if( dl == 1 && tekst[ 0 ] != 32 ) { if( int_or_str( tekst ) == 0 ) ilewyrazow++; else if( int_or_str( tekst ) == 1 ) ilecyfr++; } else if( tekst[ 1 ] == 32 ) { string pom = ""; pom = tekst[ 0 ]; if( int_or_str( pom ) == 0 ) ilewyrazow++; else if( int_or_str( pom ) == 1 ) ilecyfr++; } string pom = ""; while( dl-- ) { if( tekst[ dl ] == 32 || dl == 0 ) { if( int_or_str( pom ) == 0 ) ilewyrazow++; else if( int_or_str( pom ) == 1 ) ilecyfr++; pom = ""; } else { pom += tekst[ dl ]; } } if( cin.eof() ) break; cout << ilecyfr << " " << ilewyrazow << endl; ilecyfr = 0; ilewyrazow = 0; } return 0; }
int int_or_str( string tekst ) { if( tekst == "" ) return 2; bool wyraz = false; int dl = tekst.length(); while( dl-- ) { if(( tekst[ dl ] != '0' ) &&( tekst[ dl ] != '1' ) &&( tekst[ dl ] != '2' ) &&( tekst[ dl ] != '3' ) &&( tekst[ dl ] != '4' ) &&( tekst[ dl ] != '9' ) &&( tekst[ dl ] != '8' ) &&( tekst[ dl ] != '7' ) &&( tekst[ dl ] != '6' ) &&( tekst[ dl ] != '5' ) ) wyraz = true; } if( wyraz == true ) return 0; else return 1; }
|
|
« 1 » |