lolek1553 utworzono 1 maja 2007 utworzono 1 maja 2007 Witam. Prosze o pomoc w napisaniu programu ktory bedzie polegal na wprowadzeniu 10 liczb w przedziale od 1 do 50 i wyswietleniu najwiekszej, . Mozecie napisac jak by wygladal caly taki program?? Z gory dziekuje za pomoc
Przemek komentarz 1 maja 2007 komentarz 1 maja 2007 #include<conio.h>#include<stdio.h>int main (){float tab[10];int i;float srednia;float max;for(i=0; i<10; i++){printf("podaj liczbe ");scanf ("%f",&tab[i]);}for (i=0; i<10; i++){if (max<tab[i]){max=tab[i];}}printf("nMAX %.2f",max);getch ();return 0;} Tylko nie wiem jeszcze jak ograniczy wybor liczby do 50 :/
lolek1553 komentarz 2 maja 2007 Autor komentarz 2 maja 2007 no właśnie tez mam z tym problem... [ Dodano: 2007-05-03, 13:56 ] nikt nie ma pomyslu jak to zrobic?? z gory dziekuje
święty komentarz 4 maja 2007 komentarz 4 maja 2007 Skoro to ma być w C++ to może by tak? #include <iostream>using namespace std;main(){ float liczba; float suma = 0, max = 0; do { cout << "nWczytaj liczbe z przedzialu (1..50)n"; cin >> liczba; /* W instrukcji poniżej gdy liczba wykracza poza podany przedział to funkcja przeskakuje do warunku sprawdzajacego petli czyli czy (suma < 10) */ if (liczba < 1 || liczba > 50) { cout << "nMiales wczytac liczbe z przedzialu 1..50 ! :/n"; continue; } else suma++; if (liczba > max) max = liczba; } while (suma < 10); cout << "nNajwieksza liczba to " << max << "nWcisnij ENTER aby kontynuowacn"; cin.ignore(); cin.ignore();} Oczywiscie mozna to do tablicy zapisac ale mam wrażenie że nie ma takiej potrzeby
Popek komentarz 5 maja 2007 komentarz 5 maja 2007 Mam głupie wrażenie że lolek1553 prosi was o pomoc. Ja też ledwo sobie z tym radzę, ale bez przesady ... Nie prosze, żeby ktoś napisał za mnie program
Fafu komentarz 5 maja 2007 komentarz 5 maja 2007 jak by wygladal caly taki program?? No właśnie :/ prosić o cały program, trzeba było wstawić to co masz i wtedy coś tam pokombinować. Pewnie program na zaliczenie a ci sie nie chce robić, ale może być tez inaczej...
święty komentarz 5 maja 2007 komentarz 5 maja 2007 Nie no...taki programik to na szczęście nie problem więc jak mogę pomóc to czemu nie...ale w sumie bez odzewu więc nie wiem nawet czy pomogłem
lolek1553 komentarz 5 maja 2007 Autor komentarz 5 maja 2007 Zaczynam dopiero przygode z programowaniem. Ostatecznie napisalem ten program tak: #include<iostream>using namespace std;int main(){ int a; int max; for(int i=0;i<10;i++) { cout<< "Podaj liczbe nr " << i+1 << " : "; cin >>a; if((a<1) || (a>50)) { cout << "Podales nieprawidlowa liczben"; i--; } { if(a>max) max=a; } } cout << "nnnNajwieksza podana liczba to ---->> " << max << " <<----"; cin.clear(); cin.ignore(); getchar();} dziekuje za pomoc edit: I mam jeszcze jeden problem, co nalezy zmienic w moim kodzie. Bo gdy wczytuje liczby i wczytywana liczba jest wieksza od 50 to wyswietla sie komunikat "Podales nieprawidlowa liczbe" i trzeba wpisac jeszcze raz ta liczbe. Ale pod koniec podczas wyswietlania najwiekszej mino to ze wczesniej pokazalo przykladowo ze liczba 55 nie miesci sie w przedziale, to i tak wyswietla najwieksza liczbe ponad przedzial (1-50). O co nalezy uzupelnic moj kod aby wyswietlalo tylko liczbe do 50.??
święty komentarz 6 maja 2007 komentarz 6 maja 2007 A więc ja bym proponował wprowadzić pomocniczy licznik "ok" który by był warunkiem ewentualnego przypisania liczby do maxa w przypadku gdy podaaliśmy prawidłową liczbę #include<iostream>using namespace std;int main(){ int a; int max = 0; int ok = 1; for(int i=0; i<10; i++) { cout << "Podaj liczbe nr " << i+1 << " : "; cin >> a; if((a<1) || (a>50)) { cout << "Podales nieprawidlowa liczben"; i--; ok = 0; } else ok = 1; if(a>max && ok == 1) max=a; } cout << "nnnNajwieksza podana liczba to ---->> " << max << " <<----"; cin.clear(); cin.ignore(); getchar();} P.s. I proponowałbym przyzwyczaić się pisać z różnymi wcięciami i przyjąc jeden styl pisania nawiasów klamrowych żeby było czytelniej, bo jak będziesz pisać programy na kilka tysięcy linijek to ciężko będzie Ci się połapać która klamra do której pętli itp. Enjoy
lolek1553 komentarz 6 maja 2007 Autor komentarz 6 maja 2007 i dzieki temu "ok" wyswietla na koncu liczby tylko od 1 do 50 ?? Jak by wytlumaczyc jego uzycie takim prostym jezykiem??
święty komentarz 6 maja 2007 komentarz 6 maja 2007 A no jakby to ująć: warunkiem przypisania za max wczytanej liczby jest if(a>max && ok == 1) czyli żeby była ona większa od dotychczasowego max i aby ok było równe 1. Natomiast ok == 1 wtedy i tylko wtedy gdy wczytamy liczbę z dobrego przedziału. Nie jest więc możliwe aby za max była przyjęta liczba z poza przedziału. Starałem się jak mogłem wytłumaczyć Jak coś jeszcze niejasne to wal śmiało z pytaniami...jak będę wiedział to pomogę
lolek1553 komentarz 7 maja 2007 Autor komentarz 7 maja 2007 czyli uzycie "ok" jest jedynym sposobem na to aby program wyswietlal liczby z tego przedzialu, czy mozna jeszcze zastosowac inne metody ??
święty komentarz 7 maja 2007 komentarz 7 maja 2007 No zawsze możesz go sobie inaczej nazwać np: "moj_fajny_pomocniczy_licznik" :lol: ale: "ok" jest krótsze a co do innego sposobu to na pewno sa jeszcze...żeby nie powiedzieć dziesiątki czy setki to powiem "dużo"...innych możliwości. Jedna podałem kiedyś i jest na górze tej strony a jeśli chcesz w pętli for to to wygląda mniej więcej tak: #include<iostream>using namespace std;int main(){ int a; int max = 0; for(int i=0; i<10; i++) { cout << "Podaj liczbe nr " << i+1 << " : "; cin >> a; if((a<1) || (a>50)) { cout << "Podales nieprawidlowa liczben"; i--; continue; // przechodzi do warunku iteracji w //petli czyli i++ //i jedzie od poczatku z petla } if(a>max) max=a; } cout << "nnnNajwieksza podana liczba to ---->> " << max << " <<----"; cin.clear(); cin.ignore(); getchar();} A co do jeszcze innych metod to jeśli Ci ta nieodpowiada to daj znać może się jeszcze coś wymyśli w wolnej chwili Ale myśle że te są jednymi z najprostszych
święty komentarz 8 maja 2007 komentarz 8 maja 2007 A no jak mogę to pomagam Powodzenia i życzę miłego programowania w C/C++
Wciąż szukasz rozwiązania problemu? Napisz teraz na forum!
Możesz zadać pytanie bez konieczności rejestracji - wystarczy, że wypełnisz formularz.