Tháng Mười Hai 22, 2018
Đếm số
Đề bài: Cho một dãy số nguyên, mỗi số cách nhau bởi một dấu cách. Kết thúc dãy là số 0. Tìm số lớn nhất, nhỏ nhất trong dãy và số lượng số trong dãy (không tính số 0 cuối dãy).
Đầu vào: Một dãy các số cách nhau bởi dấu cách. Số cuối cùng là số 0.
Đầu ra: Một dòng gồm 3 số cách nhau bởi dấu cách lần lượt là số lớn nhất, nhỏ nhất trong dãy và số lượng số của dãy.
Ví dụ:
input: 7 6 5 4 3 2 0 output: 7 2 6
Bạn chưa đăng nhập? Đăng nhập để Submit ngay!
29 Comments
Add a Comment
Bạn phải đăng nhập để gửi phản hồi.
xin code bài này bằng python ad ơi
ad ơi em chạy bài này bằng dev C thì ra output giống nhưng chạy trên chương trình thì k được ạ
/* code hind */
Code của em sai nhé. Ở đây ko có n nhưng em lại nhập n làm gì.
anh oi, sao code của em cứ in queue hoài thế anh? import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
//System.out.println(“input your array: “);
List intList = new ArrayList();
String[] arItems = scan.nextLine().split(” “);
for(int i=0;i <arItems.length;i++) {
int arItem = Integer.parseInt(arItems[i].trim());
intList.add(arItem);
}
int max = intList.get(0);
int min = intList.get(0);
for(int i = 0;i max && intList.get(i)!=0) {
max = intList.get(i);
}
}
System.out.print(max+” “);
for(int i = 0;i <intList.size();i++) {
if(intList.get(i) < min && intList.get(i)!=0) {
min = intList.get(i);
}
}
System.out.print(min+" ");
System.out.print(intList.size()-1);
}
Xin lỗi bạn, do một số lỗi ở ngôn ngữ java nên nó hay bị thế. Java chạy chậm hơn nên nó vậy.
anh ơi, em nghĩ là bài này thì đề phải cho thêm là các số trong dãy phải khác 0 trừ số cuối vì nếu em cho input: 0 1 0 thì theo đề bài output sẽ là 1 0 2, nhưng mà theo bài giải của anh thì nó sẽ ra là 0 0 1
nếu đầu vào là 0 1 0 thì số phần tử cũng là 0
anh ơi, ví dụ của bài này là: em cho nhập 5 số, vậy 7 4 5 2 8 , mà đề của ảnh là cho nhập luôn hay sao anh
Đấy là đầu vào, em chỉ cần làm đúng theo đề bài là được.
#include
int main()
{
int n;
scanf(“%d”,&n);
int dem=n;
int a[100];
for(int i=1;i<=n;i++)
{
scanf("%d",&a[i]);
}
int max=1;
int min=1;
for(int i=1;i max)
{
max=a[i];
}
if(a[i]<min)
{
min=a[i];
}
}
printf("%d %d %d",max,min,dem-1);
return 0;
}
ad xem code của em nè, tuy code đây sai nhưng nó ko sai nhiều khi em submit ở đây, mong ad xem code của em rồi giúp ạ
Bạn làm sai với đề bài rồi nhé. Đọc kỹ đề bài vào.
#include
#include
int main(){
char s[1001] ;
gets(s) ;
int n , i , j , count = 0 ;
n = strlen(s) ;
int max , min ;
s[max] = s[0] ;
for( i = 0 ; i < n ; i++){
if( s[i] == ' ' || s[i] =='0'){
continue ;
}
else if ( s[max] < s[i] ){
s[max] = s[i] ;
}
else continue ;
}
s[min] = s[0] ;
for( i = 0 ; i s[i] ){
s[min] = s[i] ;
}
else continue ;
}
for( i = 0 ; i < n ; i++){
if( s[i] == ' ' || s[i] =='0' ){
continue ;
}
else
count++ ;
}
printf("%c %c %d" , s[max] , s[min] , count) ;
}
anh cho em hỏi sao code em khi chạy bị báo lỗi này ạ ( run: line 1: 3 Segmentation fault (core dumped) LD_LIBRARY_PATH=/usr/local/gcc-4.8.5/lib64 ./a.out )
Truy xuất vị trí mảng của bạn có thể không hợp lệ. VD vị trí mảng quá giới hạn, số âm,…
#include
void mang(int a[], int n)
{
for(int i=1;i<=n;i++)
{
scanf("%d",&a[i]);
}
}
void giatri(int a[], int n)
{
int max,min;
for(int i=1;i0 || a[i]max)
{
max=a[i];
}
if(a[i]<min)
{
min=a[i];
}
}}
printf("%d %d %d",max,min,n-1);
}
int main()
{
int n,a[100];
int max, min;
scanf("%d",&n);
mang(a,n);
giatri(a,n);
}
em đau lòng quá ad ơi :((, thế này vẫn sai
ụa, em copy sao nó bị lem kìa ad, ad giải thích code e với, đúng mà :((
bài này không dùng mảng thì nhâp kiểu gì a. @@ , e thấy trong bài tâp vòng lăp, nên chắc không cần dùng mảng chứ, ai biết gơi ý e với @@.
Lặp đi lặp lại việc nhập cho đến khi gặp số 0 thôi bạn, đếm số cũng như mình đếm số lần lặp
không cần dùng mảng đâu bạn ơi
#include
int main()
{
int i, n, m;
int max, min;
scanf(“%d”, &n);
printf(“%d “, n);
max=n;
min=n;
for (i=1;;i++)
{
scanf(“%d”, &m);
printf(“%d “, m);
if(m==0) break;
if(max=m) min=m;
}
printf(“%d %d %d”, max, min, i);
return 0;
}
ơ copy code vào cmt toàn bị mất :)))
#include”iostream”
using namespace std;
int main(){
int a,max = 1,min; int count=0;
do{
cin>>a;
if(amax && a!=0){
max=a;
}
if(a<min && a!=0){
min=a;
}
count++;
}while(a!=0);
cout<<max<<" "<<min<<" "<<count-1;
return 0;
}
anh ơi sao em test trên máy thì pass được mà paste vào đây mà nó không ra
mong anh xem nỗi cho em ạ
bạn nhìn lỗi nó thông báo ý.
em test trên máy ra tìm được đúng min của dãy số
nhưng vào đây out put min = 0 ạ
thế là bạn sai rồi. 😛
Dạ em chị muốn được biết tại sao nó không ra thôi ạ
em test trên cpp.sh rồi vẫn được -_-
Bạn phải test đúng bộ test bạn sai ý.
Code của bạn với test số 2 thì chả có giá trị nào của a thỏa mãn để gán giá trị cho min. Tức là min ko bao giờ có giá trị.
Đề phải có thêm là “Trước số 0 cuối cùng không có số 0 nào khác” nếu không xảy ra trường hợp có 2 số 0 thì rất khó
#include
int main(){
int s[100];
int max,min;
int n=0;
for(int i=0;s[i-1]!=0;i++){
n++;
scanf(“%d”,&s[i]);
}
max=min=s[0];
for(int i=0;s[i]!=0;i++){
if(max
s[i]){min=s[i];
}
}
printf(“%d %d %d”,max,min,n-1);
}
code e chạy ở dev vẫn ra kết quả mà em sub nó ra sai